-= 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
Текстовая версия
====================================================
 
 

Hosted by uCoz