Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Запуск ПО от Microsoft в Linux
WineX, как игровая среда для Unix систем.
McMCC, http://mcmcc.narod.ru, 18.03.2002.

1. Введение
1.1 Особенности.
1.2 Лицензия.
2. WineX - сделай сам!
2.1 Загрузка исходников WineX из CVS репозитория
2.2 Подготовительный процесс перед сборкой WineX
2.3 Сборка и установка WineX
2.4 Запуск WineX и реестр
3. Игры.
4. Заключение.

1. Введение

Проект WineX был основан фирмой TransGaming Technologies на проекте WINE, в отличие от 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, и без которых не смогут работать программы написанные под Windows, т.е., это в полне самостоятельные программы и предназначены для работы исполняемых файлов EXE&DLL непосредственно в среде Unix систем. Для ОС Linux эти проекты имеют дополнительные возможности - поддержка аппаратной 3D графики основаной на OpenGL для большенства видеокарт входящих в поддержку DRI - Direct Rendering Infrastructure для XFree86 на платформе x86. В данное время идет портирование DRI для системы FreeBSD, но это еще только на начальном этапе и пока не совсем стабильно. К сожалению, фирма Nvidia идет своим путем написания драйверов поддерживающих OpenGL на аппаратном уровне, и не дает нормальный SDK для корректного написания приложений, т.е. хедеры, которые идут с драйверами, почти не совместимы c API MesaGL. Чем это плохо? Плохо это тем, что открытые драйвера с поддержкой аппаратного 3D в XFree86 ориентированы на API MesaGL, MESA в свою очередь является открытым проектом и поддерживается фирмой SGI, хотя Nvidia тоже использует API OpenGL от SGI, но в их реализации много своего, вот поэтому есть некоторые не совместимости при сборке WineX и WINE, как это обойти, я расскажу ниже... Хочу добавить еще пару слов по Nvidia, для пользователей OC FreeBSD Nvidia не делает драйверов, как в прочем нет варианта коммерческого WineX, который существует только под ОС Linux, но, есть врапер под FreeBSD 4.x написанный David Rufino's, который позволяет запускать Линуксовые нвидевские драйвера под Xfree86 4.xx. Хотя я немного отошел от темы, но эти особенности очень важны при сборке и работе 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, взять после сборки все 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.netfirms.com/files/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...

3. Игры.

Список работающих игр в 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. 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, что не может не радовать:-).

4. Заключение.

Хотелось бы послушать товарищей, которые используют FreeBSD, у них просто появился шанс, после начала порта DRI под FreeBSD, что у них тоже все в ажуре и работает 3D как надо...

Также в заключении, хотелось бы вынести благодарности людям из #rusunix, таким как BaT и другим, которые вынудили написать весь этот выше изложенный бред с кучей грамматических ошибок, но как говорится "Чукча не читатель, чукча писатель", особую благодарность хочу выразить Tima, за предоставленный в свое время бинарик WineX, с которого я взял за основу структуру и регфайлы при создании своего WineX_BuildTools.