-= WineX, как игровая среда для Unix систем =-
1. Введение
1.1 Особенности.
1.2 Лицензия.
2. WineX - сделай сам!
2.1 Загрузка исходников WineX из CVS репозитория
2.2 Подготовительный процесс перед сборкой WineX
2.3 Сборка и установка WineX
2.4 Запуск WineX и реестр
3. Игры
1. Введение
Проект WineX был основан фирмой TransGaming Technologies (http://www.transgaming.com)
на проекте WINE (http://www.winehq.com), в отличие от WINE этот проект
полностью
ориентирован на возмозность работы самых популярных игр написанных
для Microsoft
Windows и соответственно больше уделяет внимание совместимости с последними
версиями DirectX. Существуют 2-е версии этого проекта, одна, коммерческая
без
исходного кода и распространяется только в бинарном виде по подписке,
первоначальная
стоимость подписки равняется 5$, более подробно об этом можно узнать
на
http://www.transgaming.com/create_accnt.php, вторая, в исходных кодах
из CVS,
разница между этими версиями заключается в том, что коммерческая версия
позволяет устанавливать игры с защищенных CD и с них же играть, а так
же
есть поддержка работы InstallShield v.6, чего, собственно, нет в свободной
версии из CVS, во всем остальном эти версии практически ничем не отличаются.
Для нас с вами, живущим в странах СНГ, большенство игр, которые продаются
на
рынках, уже отломаны от различных CD защит, поэтому коммерческая версия
будет интересна обладателям лицензионых дисков или тем, кто хочет материально
поддержать этот проект и получить различную поддержку от TransGaming.
Другое большенство, которое предпочетает все делать самому и возится
в исходниках,
тоже могут поддержать этот проект своим участием при его тестировании,
выявлении
и устранении различных багов, высылкой патчей авторам проекта, или
добавлении
новых фич...
1.1 Особенности
WINE и WineX многие считают эмулятором Microsoft Windows, но это не
совсем так,
так как эти проекты не нуждаются в установке каких либо Microsoft Windows
и
имеют нативно встроенные основные компоненты Windows, основаных на
доступных
общественности исходниках от самой фирмы Microsoft(http://www.microsoft.com),
и без которых не смогут работать программы написанные под Windows,
т.е., это в
полне самостоятельные программы и предназначены для работы исполняемых
файлов
EXE&DLL непосредственно в среде Unix систем. Для ОС Linux эти проекты
имеют
дополнительные возможности - поддержка аппаратной 3D графики основаной
на OpenGL
для большенства видеокарт входящих в поддержку DRI - Direct Rendering
Infrastructure
(http://dri.sourceforge.net) для XFree86 на платформе x86. В данное
время идет
портирование DRI для системы FreeBSD (http://gladstone.uoregon.edu/~eanholt/dri/),
но это еще только на начальном этапе и пока не совсем стабильно. К
сожалению,
фирма Nvidia(http://www.nvidia.com) идет своим путем написания драйверов
поддерживающих OpenGL на аппаратном уровне, и не дает нормальный SDK
для корректного
написания приложений, т.е. хедеры, которые идут с драйверами, почти
не совместимы c
API MesaGL(http://mesa3d.sourceforge.net/). Чем это плохо? Плохо
это тем,
что открытые драйвера с поддержкой аппаратного 3D в XFree86 ориентированы
на API MesaGL, MESA в свою очередь является открытым проектом и поддерживается
фирмой SGI(http://www.sgi.com), хотя Nvidia тоже использует API OpenGL
от SGI,
но в их реализации много своего, вот поэтому есть некоторые не совместимости
при сборке WineX и WINE, как это обойти, я расскажу ниже... Хочу добавить
еще пару слов по Nvidia, для пользователей OC FreeBSD Nvidia не делает
драйверов, как в прочем нет варианта коммерческого WineX, который существует
только под ОС Linux, но, есть врапер под FreeBSD 4.x написанный David
Rufino's,
который позволяет запускать Линуксовые нвидевские драйвера под Xfree86
4.xx
(http://nvidia.netexplorer.org). Хотя я немного отошел от темы, но
эти
особенности очень важны при сборке и работе WineX или WINE.
1.2 Лицензия
С недавних пор, проект WINE перешел под новую лицензию GNU LGPL, WineX
же придерживается лицензии Aladdin Free Public License, вернее та часть
проекта WineX, которая является поддержкой DirectX для WINE. В дальнейшем
это не должно противоречить GNU LGPL и поэтому AFPL легко уживется
с
этой лицензией.
2. WineX - сделай сам!
И так, пришло время перейти к действиям, для этого необходимо набраться
немного терпения и следовать схеме, которую я попытался описать ниже.
2.1 Загрузка исходников WineX из CVS репозитория
Начнем с того, что нужно загрузить исходники из CVS репозитория, для
этого мы
создаем каталог на локальном диске, куда будут закачены исходники,
к примеру
/usr/local/src/WineX, заходим в этот каталог и даем команду:
cvs -d:pserver:anonymous@cvs.winex.sourceforge.net:/cvsroot/winex login
на запрос ввода пароля, жмем ENTER и далее набираем другую команду:
cvs -z3 -d:ext:developername@cvs.winex.sourceforge.net:/cvsroot/winex co wine
(в конце пишем именно _wine_, а НЕ _winex_)
Все эти действия описаны на http://sourceforge.net/projects/winex .
После того, как произойдет полная закачка исходников из CVS на ваш
локальный
диск, следует сделать архив этих исходников:
tar cvpjf winex-[дата]-cvs.tar.bz2 wine
это понадобиться вам для того, чтобы в следущий раз cvs -z3 ... не скачивал
все снова, а сделал синхронизацию, что вполне займет меньше времени.
2.2 Подготовительный процесс перед сборкой WineX
Это довольно ответсвенный момент, как говорится "Как яхту назовете,
так она
и поплывет", тут важно учесть версии MESA и XFree86 которые установленны
в
вашей системе, если вы хотите иметь поддержку запуска игр в режиме
аппаратного
3D.
Нужно убедится, что у вас установлена версия MESA не ниже 3.5 и что
ваша
видеокарта поддерживается в XFree86 не ниже версии 4.0.2, как аппаратный
3D ускоритель. Я бы посоветовал сделать проще и более правильнее -
это
перейти на XFree86 версии 4.2.0, там и MESA какая нужная и исправлений
ошибок имеются, ну и как не как поновее будет...
В случае, если вы являетесь обладателем карт от NVidia, то нужно сделать
следущее:
а) Сделать установку драйверов по описанию, как это предлагает NVidia.
b) Проверить, не осталось ли хвостов в директориях /usr/lib и /usr/X11R6/lib
в виде лишних libGL.so.*
c) Проверить, что libGLU.so.* лежат в /usr/lib или /usr/X11R6/lib,
если у вас их вообще небыло, то советую собрать Mesa v.4.0.1
(http://prdownloads.sourceforge.net/mesa3d/MesaLib-4.0.1.tar.bz2),
взять после сборки все libGLU.*.* и положить в /usr/lib или /usr/X11R6/lib,
так же положить в /usr/include/GL хедеры из этой MESA, должны быть
следущие файлы:
amesa.h gl.h glu_mangle.h mesa_wgl.h uglglutshapes.h xmesa.h
dosmesa.h gl_mangle.h glx.h mglmesa.h uglmesa.h xmesa_x.h
fxmesa.h glext.h glx_mangle.h osmesa.h vms_x_fix.h xmesa_xf86.h
ggimesa.h glu.h glxext.h svgamesa.h wmesa.h
d) Если у вас стоит XFree86 версии 4.2.0, то лучше, на всякий случай,
сделать линк с /usr/X11R6/include/GL на /usr/include/GL, это касается
не только обладатей карт от NVidia, а вообще всех тех, у кого стоит
XFree86 версии 4.2.0...
Я не могу сказать за все существующие дистрибутивы Linux, но все что
я
описываю, делалось на RedHat 7.x и Mandrake 8.x.
2.3 Сборка WineX
Прежде всего рекомендую взять мой WineX_BuildTools, этот архив распространяется
свободно и лежит на http://mcmcc.narod.ru/WineX_BuildTools-18032002.tar.bz2
Содержимое архива нужно распаковать в директорию, куда вы загрузили
исходники
WineX, к примеру /usr/local/src/WineX/wine, и запустить ./build. Этот
пакет
содержит все необходимое для сборки WineX в tgz или rpm, а так же регфайлы.
Собраный пакет WineX будет соответствовать такой же структуре, как
и коммерческий
WineX, но только с небольшими изменениями подогнаные под пакет WINE
который
идет в дистрибутиве RedHat 7.x, т.е. WineX не пересекается с WINE,
имеет
свой скрипт запуска /usr/bin/winex и утилиту для записи в регфайлы
/usr/bin/regwx,
а так же совмесно с WINE использует /usr/share/wine-c как диск "C:\".
После удачной сборки, в директории, где вы запустили ./build, вы должны
будите
увидеть собранный пакет WineX-[дата]-1.tgz или WineX-[дата]-1.i386.rpm,
который будет полностью готов, что бы его установили...
2.4 Запуск WineX и реестр
Запуск WineX осуществляется командой:
winex <имя программы>
вообщем, так же, как это делается в wine.
В данный пакет WineX, я решил, что целесобразно ввести утилиту для записи
в реестр WineX, так как многие программы могут быть предварительно
установленны только в Microsoft Windows, по причине не возможности
установить
их в WineX, к примеру инсталятором InstallShield v.6, то такая утилита
будет
очень полезна, что бы загрузить выгруженный регфайл из Microsoft Windows
в реестр
WineX командой:
regwx <регфайл>
Однако нужно учесть, что регфайл из Microsoft Windows немного не соответствует
нужному формату подгружаемому регфайлу для WineX, но это легко можно
подправить.
Пример регфайла из Microsoft Windows:
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Westwood]
[HKEY_LOCAL_MACHINE\Software\Westwood\Tiberian Sun]
"InstallFromPath"=".\\"
"InstallPath"=".\\SUN.EXE"
"Name"="Command and Conquer Tiberian Sun"
"SKU"=dword:00001203
"Version"=dword:00020000
"Expansions"=dword:00000001
[HKEY_LOCAL_MACHINE\Software\Westwood\WOLAPI]
"InstallFromPath"=".\\Internet\\"
"InstallPath"=".\\Internet\\WOLAPI.DLL"
"Name"="Westwood Internet Play"
"SKU"=dword:00007f00
"Version"=dword:00010006
А теперь, как он должен выглядить для подгрузки через regwx
[HKEY_LOCAL_MACHINE\Software\Westwood]
[HKEY_LOCAL_MACHINE\Software\Westwood\Tiberian Sun]
"InstallFromPath"=".\"
"InstallPath"=".\SUN.EXE"
"Name"="Command and Conquer Tiberian Sun"
"SKU"=dword:00001203
"Version"=dword:00020000
"Expansions"=dword:00000001
[HKEY_LOCAL_MACHINE\Software\Westwood\WOLAPI]
"InstallFromPath"=".\Internet\"
"InstallPath"=".\Internet\WOLAPI.DLL"
"Name"="Westwood Internet Play"
"SKU"=dword:00007f00
"Version"=dword:00010006
Как видно, разница не большая, отсутствует заголовок REGEDIT4 и заменены
двойные "\\" на одинарный "\", почему так надо делать, это нужно смотреть
описание программы regapi, которая входит в состав WINE и WineX...
4. Игры
Список работающих игр в WineX можно посмотреть на:
http://www.transgaming.com/dogamesearch.php?order=working&showall=1
Правда это не полный список, все игры учесть не возможно, я могу лишь
только рассказать, как мне удалось поставить WarCraft-III Beta.
Для это понадобиться ISO или CD диск, найти можно практически на
любом варезном сайте. На диске есть DirectX8.1 и сама игра,
в начале я установил DirectX8.1 и потер 4-е файла в директории
windows\system - d3d8d.dll d3d8.dll dinput8d.dll dinput8.dll,
остальное не трогал, затем запустил winex install.exe и установил
игру, далее сходил на сайт http://www.starcraft.ru и нашел описания
где взять новые патчи и как подружить WarCraft-III Beta с bnetd
(http://sourceforge.net/projects/bnetd). WarCraft-III Beta использует
2-а движка - OpenGL и D3D, в случае установки на Линукс, он все же
использует
OpenGL, для обладателей карт от NVidia могут быть проблемы с D3D, так
как
используемый libGLU от MESA немного не стыкуется с NVidiaвскими драйверами,
зато на таких картак как Matrox G-400 и Voodoo3/4/5 таких проблем не
будет,
так как они полностью используют API MesaGL. Однако в случае с
WarCraft-III Beta и Nvideaвскими картами, игра использует
OpenGL, причем, скорость игры получается такая же, как и в
Microsoft Windows, что не может не радовать:-).
5. Заключение
Хотелось бы послушать товарищей, которые используют FreeBSD, у них
просто появился шанс, после начала порта DRI под FreeBSD, что у
них тоже все в ажуре и работает 3D как надо...
Также в заключении, хотелось бы вынести благодарности людям из
#rusunix, таким как BaT и другим, которые вынудили написать
весь этот выше изложенный бред с кучей грамматических ошибок, но
как говорится "Чукча не читатель, чукча писатель", особую благодарность
хочу выразить Tima, за предоставленный в свое время бинарик WineX,
с которого я взял за основу структуру и регфайлы при создании своего
WineX_BuildTools.
====================================================
McMCC <mcmcc@mail.ru>
18.03.2002
Исправлена по многочисленным желаниям 28.04.2003
Текстовая версия
====================================================