

		-= 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://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.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...
 
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
================================================ 

    
           
   
 
 
 
  
 
 
  