bugs.winehq.org или решаем проблемы с TheBat! под wine

Собственно, опять мне стало немного стыдно. Стыдно перед теми, кто пришел на блог в поисках ценной инфы, а нашел только мое нытье (или радость - неважно). Придется чуток поработать и накидать этой самой полезной инфы. Про заработки я знаю мало, зато, как я уже писал, активно использую Linux. Однако, по-прежнему моим любимым почтовиком остается TheBaT! (на который я честно купил лицензию), он прекрасно работает под wine, нативной альтернативы под Линуксом я пока не нашел.

К сожалению, начиная с версии wine-0.9.56, любимая программа начала глючить. Вместо красивеньких цветных иконок остались только белые квадраты. Работать стало крайне неудобно. Я, конечно, решил подождать, возможно в следующей версии все исправят. Не исправили в 0.9.57, 58 и так далее. Как раз сейчас вышла новая версия 1.0_RC4, а глюк до сих пор остался и мне (да и не только мне) до сих пор приходилось бы сидеть на 0.9.55, у которого наблюдаются проблемы с полноэкранным выводом.

Пустые иконки в TheBat!

Но на самом деле, для себя я эту проблему решил. Для тех, кто не знает, на основном ресурсе вайна (http://winehq.org) есть раздел, посвященный найденным багам и их решениям. Любой пользователь может открыть обсуждение обнаруженного бага, а также принять участие в решении уже существующих проблем. Собственно здесь я и разместил информацию о найденном баге еще в момент выхода версии 0.9.57 (http://bugs.winehq.org/show_bug.cgi?id=11950), в надежде, что авторы программы исправят недоразумение. Как бы не так :) Решать все равно пришлось пользователям.

Баг, которого не было в предыдущих версиях называют регрессией. Для того, чтобы определить, что же вызвало такой баг делают тест регрессии. Это достаточно продолжительная по времение процедура. Фактически, загружается весь список сделанных изменений (патчей) в исходном коде программы от того момента, когда проявился баг, до момента когда бага заведомо не было, затем последовательно убирают изменения до того момента, когда баг исчезнет. Более подробно про это можно почитать здесь http://wiki.winehq.org/RegressionTesting. К сожалению (или к счастью), на моей системе делать подобные вещи неудобно - Gentoo вообще не предназначена для установки левых пакетов, предпочтительно ставить только программы из ебилдов. Поэтому сделать регрессию я предоставил другим пользователям. Что и было сделано.

Собственно, причину бага - неправильную (или слишком правильную) оптимизацию библиотеки winex11.drv обнаружили достаточно быстро. Однако, исправлять ее в основных версиях не спешат. По приведенному выше адресу можно найти небольшой патч, который можно наложить на любую версию вайна после 0.9.56, и который устраняет проблему белых иконок. http://bugs.winehq.org/attachment.cgi?id=13278

Применяется этот патч командой patch (входящей в одноименный пакет). Однако, осталась одна проблема, как правильно воспользоваться этим файлом на моей системе, где основная команда не "make install", а "emerge"? В случае простой установки вайна через make install все ясно - заходим в директорию вайна, выполняем:

nicolay@localhost ~ $ patch -i test.diff
can't find file to patch at input line 5
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/dlls/winex11.drv/dib.c b/dlls/winex11.drv/dib.c
|index 4b287ea..1e48092 100644
|--- a/dlls/winex11.drv/dib.c
|+++ b/dlls/winex11.drv/dib.c
--------------------------
File to patch: ^C

Если получаем ошибку с ненайденными файлами, заходим глубже, в директорию ./dlls/winex11.drv/. Но, в случае Gentoo у нас директории с исходными текстами явно нет. Отказываться от portage мы не будем, а воспользуемся командой ebuild:

nicolay@localhost ~ $ ebuild /usr/portage/app-emulation/wine/wine-1.0_rc4.ebuild unpack
 * wine-1.0-rc4.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                                [ ok ]
 * wine_gecko-0.1.0.cab RMD160 SHA1 SHA256 size ;-) ...                                                                [ ok ]
 * checking ebuild checksums ;-) ...                                                                                   [ ok ]
 * checking auxfile checksums ;-) ...                                                                                  [ ok ]
 * checking miscfile checksums ;-) ...                                                                                 [ ok ]
 * checking wine-1.0-rc4.tar.bz2 ;-) ...                                                                               [ ok ]
 * checking wine_gecko-0.1.0.cab ;-) ...                                                                               [ ok ]
>>> Unpacking source...
>>> Unpacking wine-1.0-rc4.tar.bz2 to /var/tmp/portage/app-emulation/wine-1.0_rc4/work
 * Applying wine-gentoo-no-ssp.patch ...                                                                               [ ok ]
>>> Source unpacked.

Итак, исходники распакованы, причем видно, в какой директории они находятся. Распаковывал я это под рутом, поэтому Переходим в эту директорию. Я сразу перейду туда, где будет запущен патч:

nicolay@localhost ~ $ cd /var/tmp/portage/app-emulation/wine-1.0_rc4/work/wine-1.0-rc4/dlls/winex11.drv/
nicolay@localhost /var/tmp/portage/app-emulation/wine-1.0_rc4/work/wine-1.0-rc4/dlls/winex11.drv $ patch -i ~/test.diff
patching file dib.c
nicolay@localhost /var/tmp/portage/app-emulation/wine-1.0_rc4/work/wine-1.0-rc4/dlls/winex11.drv $

Собственно все. Исходный текст исправлен, собираем. Но опять не стандартным emerge:

nicolay@localhost ~ $ sudo ebuild /usr/portage/app-emulation/wine/wine-1.0_rc4.ebuild merge

По этой команде portge возьмет уже распакованные ранее исходники и соберет их так, как указано в ебилде. Само собой, выполнять эту команду надо с правами суперпользователя - иначе пакет будет откомпилирован, но разместить файлы в нужных директориях portage не сможет. Откомпилировали (кстати, очень рекомендую установить и настроить ccache - процесс рекомпиляции ускоряется в разы) и получили результат:

Исправленные иконки TheBat!

Не правда ли, так гораздо красивше? Главный недостаток - при смене версии или при переустановке текущей, патч придется накладывать заново. Но это уже издержки. Кроме того, остался возникший после наложения патча глючок при использовании менеджера fluxbox. При любом выделении строки цветом (удаление письма, перемешение по списку писем, получение почты итд), окно вайна сдвигается на 1 пиксел вверх и 1 влево. Просмотрели 10 писем - окно сдвинулось на 10 пикселов. 100 - уползло за край экрана. Правда постить этот глюк в базу данных не стал - под другими менеджерами такого не наблюдается. Просто переключил десктоп в xfce4 - не такой тормозной как KDE, а симпатичный, зараза.

Обратите внимание, что основная цель данного опуса - не рассказ о геморрое с батом. Главное - методы, использованные при решении данной проблемы, можно применять и в других случаях. Если какая-то жизненно необходимая лично Вам прога не работает под вайном или работает нестабильно - добро пожаловать в базу знаний, оставляйте информацию, надеюсь, Вам тоже помогут.

Приятной работы, господа. В следующий раз я (возможно) расскажу, как просмотреть интернет-траффик утилитой tcpdump и прогой wireshark. А может быть и не расскажу - кому надо уже сам полез читать мануалы, к тому моменту научится и сам :)

DirectX и как я его съел


  1. Wintch 14 Mar 2008 3:36 pm

    Спасибо большое за статью, ждем продолжения под названием “DirectX и как я его съел” :)

Ну что вам сказать, уважаемые посетители... Говорят, этот блог сделан для людей. Предупреждаю сразу, практической ценности в данном действии для запуска игр я не вижу! Если на версиях вайн до 0.9.50 такой финт давал возможность просто запустить (не поиграть) игры, которые без него не запускались, то с поздними версиями большинство игр работает и так.

На самом деле, я не сам придумал эту фишку. Оригинальная статья на английском языке доступна здесь, если кому интересно, можно почитать.

DirectX - это набор API (application programming interface - интерфейс программирования приложений), который является стандартом де-факто для создания мультимедийных приложений и игр в среде Microsoft Windows. На сегодняшний день подавляющее большинство игр использует именно этот API, поэтому его реализация под wine является одной из важнейших задач. На момент написания статей S.T.A.L.K.E.R. и Halflife 2 Episode two (OrangeBox) под вайном была официально заявлена поддержка DirectX 8.1. Большинство же современных игр разработаны под более современные версии - DirectX 9.0c и DirectX10. Не знаю, как с 10 директом - я так ни разу и не поработал в висте достаточно, чтобы насладиться его прелестями, а без 9-го запускать игрушки тяжело. В частности, в вышеописанных статьях описано как запускать игры именно в режиме DirectX8 - только в таком режиме они работают нормально.

Однако, приблизительно в одно время с запуском Сталкера, я наткнулся на статью по установке свежей версии Директ-икс в Линуксе, как ни странно, все заработало. Попробую сделать это еще раз вместе с Вами.

Итак, первый шаг, который я всегда предпринимаю, прежде чем начинать учить кого-либо - создание чистого пространства wine. Поясню зачем - при написании статьи я могу забыть про сделанные мной ранее настройки, в результате чего у вас не получится то, что получается у меня.

nicolay@localhost ~ $ ls -d ./.wine*
./.wine ./.wine-1000 ./.wine_new
nicolay@localhost ~ $ mv ./.wine ./.wine_old
nicolay@localhost ~ $ ls -d ./.wine*
./.wine-1000 ./.wine_new ./.wine_old
nicolay@localhost ~ $ wineprefixcreate
/home/nicolay/.wine updated successfully.
nicolay@localhost ~ $ ls -d ./.wine*
./.wine ./.wine-1000 ./.wine_new ./.wine_old
nicolay@localhost ~ $

Таким образом, мы получили новую чистую директорию для работы. Само-собой, старую директорию я сохранил - мне совершенно не улыбается потом восстанавливать все заново.

В новую директорию установим шрифты с помощью winetricks. Я давно положил этот скрипт /usr/local/bin, поэтому запускается он у меня независимо от самого вайна и его конфигурации:

nicolay@localhost ~ $ winetricks corefonts
Executing sha1sum --status -c /home/nicolay/winetrickscache/arial32.exe.sha1sum
Executing sha1sum --status -c /home/nicolay/winetrickscache/times32.exe.sha1sum
Executing wine /home/nicolay/winetrickscache/arial32.exe
Executing wine /home/nicolay/winetrickscache/times32.exe
Install of corefonts done
winetricks done.
nicolay@localhost ~ $ winetricks tahoma
Executing sha1sum --status -c /home/nicolay/winetrickscache/wd97vwr32.exe.sha1sum
Executing cabextract --directory=/home/nicolay/.wine/drive_c/winetrickstmp /home/nicolay/winetrickscache/wd97vwr32.exe
Extracting cabinet: /home/nicolay/winetrickscache/wd97vwr32.exe
extracting /home/nicolay/.wine/drive_c/winetrickstmp/wviewer.INF
extracting /home/nicolay/.wine/drive_c/winetrickstmp/License.txt
extracting /home/nicolay/.wine/drive_c/winetrickstmp/setup.exe
extracting /home/nicolay/.wine/drive_c/winetrickstmp/Setup.ini
extracting /home/nicolay/.wine/drive_c/winetrickstmp/setup.lst
extracting /home/nicolay/.wine/drive_c/winetrickstmp/Viewer1.cab
extracting /home/nicolay/.wine/drive_c/winetrickstmp/Setup.tdf

 

All done, no errors.
Executing cabextract --directory=/home/nicolay/.wine/drive_c/winetrickstmp /home/nicolay/.wine/drive_c/winetrickstmp/Viewer1.cab
Extracting cabinet: /home/nicolay/.wine/drive_c/winetrickstmp/Viewer1.cab
extracting /home/nicolay/.wine/drive_c/winetrickstmp/ACMSETUP.EXE
extracting /home/nicolay/.wine/drive_c/winetrickstmp/ACMSETUP.HLP
extracting /home/nicolay/.wine/drive_c/winetrickstmp/MSSETUP.DLL
extracting /home/nicolay/.wine/drive_c/winetrickstmp/viewer.DLL
extracting /home/nicolay/.wine/drive_c/winetrickstmp/acmereg.DLL
extracting /home/nicolay/.wine/drive_c/winetrickstmp/wviewer.stf
extracting /home/nicolay/.wine/drive_c/winetrickstmp/hlink.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/hlinkprx.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/docobj.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/msv7enu.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/mso97v.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/msorfs.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/readme.doc
extracting /home/nicolay/.wine/drive_c/winetrickstmp/t2embed.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/urlmon.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/riched20.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/wininet.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/wordview.exe
extracting /home/nicolay/.wine/drive_c/winetrickstmp/wwint32v.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/tahoma.ttf
extracting /home/nicolay/.wine/drive_c/winetrickstmp/install.txt
extracting /home/nicolay/.wine/drive_c/winetrickstmp/npdoc.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/oleplug.dll
extracting /home/nicolay/.wine/drive_c/winetrickstmp/oleplug.ini
extracting /home/nicolay/.wine/drive_c/winetrickstmp/errormsg.dll

 

All done, no errors.
Executing cp -f /home/nicolay/.wine/drive_c/winetrickstmp/tahoma.ttf /home/nicolay/.wine/drive_c/windows/fonts/tahoma.ttf
Install of tahoma done
winetricks done.
nicolay@localhost ~ $

Далее запускаем winecfg и настраиваем звук. Как обычно я выбираю oss, хотя, говорят, в новых версиях вайна поддержка альсы становится все лучше.

Кстати, версию вайна на текущий момент я использую 0.9.55, хотя уже вышла 0.9.57.Объясняется это тем, что в версиях 0.9.56 и 0.9.57 есть баг (http://bugs.winehq.org/show_bug.cgi?id=11950) с отображение иконок в TheBat. А я им пользуюсь для работы с почтой, поэтому перейти но новую версию не спешу. Кстати, режим GLSL в новых версиях вайна включается по-умолчанию. Так что, в реестр мы пока не полезм, хотя, если кому-то интересно - читайте статью про Сталкера. Итак, попробуем наш халфлайф2 под вайном без дополнительных настроек:

 

 

nicolay@localhost ~ $ mkdir ./.wine/drive_c/games
nicolay@localhost ~ $ cp -r ./.wine_old/drive_c/games/orangebox ./.wine/drive_c/games/
nicolay@localhost ~ $ cd .wine/drive_c/games/orangebox/
nicolay@localhost ~/.wine/drive_c/games/orangebox $ wine hl2.exe -game ep2 -console

Стартовый экран Halflife2Тетка из халвы в начале игрыВода

Для сравнения парочку скриншотов в режиме DX80:

nicolay@localhost ~/.wine/drive_c/games/orangebox $ wine hl2.exe -game ep2 -console -dxlevel 80

Вода в 80Тетка в режиме 80

Первый же взгляд на воду показывает, что алгоритмы ее отображения разные. Но извините, 10 кадров в секунду не стоят этого улучшения. Так что, поддерживаемый вайном режим 9.0 пока оставляет желать много лучшего. Попробуем воспользоваться родными библиотеками DirectX от Майкрософт.

nicolay@localhost ~/.wine/drive_c/games/orangebox $ cd ~/DirectX9/
nicolay@localhost ~/DirectX9 $ wine DXSETUP.exe
fixme:mscoree:GetCORVersion (0x7cfe22e4, 600, 0x7cfe22d0): semi-stub!
fixme:mscoree:LoadLibraryShim (0xad2cf8 L"fusion.dll", (nil), (nil), 0x7cfe19dc): semi-stub

Попытка 1

Попытка №раз успехом, как всегда не увенчалась. Читаем исходную статью: "next up is to install a native mscoree.dll and streamci.dll into /system32 from a windows install and set them to native Windows". Ага, как раз в mscoree мы и наблюдали ошибку. Единственно,устанавливатьих нативными необходимости нет - они и так не включены в вайн, поэтому в любом случае будут использоваться виндовые версии. Архив с библиотеками я давно скачал где-то в сети, адрес, к сожалению не помню. Можно, конечно, было бы пришить файлы к статье. Однако, сидеть мне неохота, да и комсомольцы не ищут легких путей.

http://www.yandex.ru/yandsearch?text=mscoree.dll+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C

Первая же ссылка в результатах поиска: http://www.dll-files.ru/

Отлично, с этого сайта получили mscoree.zip, streamci.zip. Распаковываем:

nicolay@localhost ~/DirectX9 $ unzip ~/download/mscoree.zip -d ~/.wine/drive_c/windows/system32
...
inflating: /home/nicolay/.wine/drive_c/windows/system32/mscoree.dll
inflating: /home/nicolay/.wine/drive_c/windows/system32/readme.txt
nicolay@localhost ~/DirectX9 $ unzip ~/download/streamci.zip -d ~/.wine/drive_c/windows/system32
...
inflating: /home/nicolay/.wine/drive_c/windows/system32/streamci.dll
replace /home/nicolay/.wine/drive_c/windows/system32/readme.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
inflating: /home/nicolay/.wine/drive_c/windows/system32/readme.txt
nicolay@localhost ~/DirectX9 $ ls ~/.wine/drive_c/windows/system32
... mscoree.dll ... streamci.dll ...

Итак, требуемые библиотеки есть. Попытка номер два:

nicolay@localhost ~/DirectX9 $ wine DXSETUP.exe
ДиректХ успешно установлен.

ДиректХ успешно установлен и просит перезагрузить компьютер. Теперь необходимо прописать использование нативных библиотек DirectX, как и сказано в статье. Запускаем winecfg, добавляем одну библиотеку (например, d3d8), затем "vim ~/.wine/user.reg", находим это замещение и добавляем все остальные библиотеки. В результате должно получиться:

...
"HardwareAcceleration"="Emulation"

[Software\\Wine\\DllOverrides] 1205672385
"d3d8"="builtin"
"d3d9"="builtin"
"d3dim"="native"
"d3drm"="native"
"d3dx8"="native"
"d3dxof"="native"
"dciman32"="native"
"ddrawex"="native"
"devenum"="native"
"dinput"="builtin"
"dinput8"="builtin"
"dmband"="native"
"dmcompos"="native"
"dmime"="native"
"dmloader"="native"
"dmscript"="native"
"dmstyle"="native"
"dmsynth"="native"
"dmusic"="native"
"dmusic32"="native"
"dnsapi"="native"
"dplay"="native"
"dplayx"="native"
"dpnaddr"="native"
"dpnet"="native"
"dpnhpast"="native"
"dpnlobby"="native"
"dsound"="builtin"
"dswave"="native"
"dxdiagn"="native"
"mscoree"="native"
"msdmo"="native"
"qcap"="native"
"quartz"="native"
"streamci"="native"

[Software\\Wine\\Drivers] 1205667777
...

Итак, что кажет нам dxdiag?

nicolay@localhost ~/.wine/drive_c/games/orangebox $ wine dxdiag

Запуск dxdiag

 

 

Версия 9.0c, работает dsound, directdraw, direct3d. Не работает directmusic - ну нет у нас midi-интерфейса.Ищем ссылочку в комментариях к оригинальной статье - http://www.kirupa.templarian.com/gm.dls:

nicolay@localhost ~/.wine/drive_c/games/orangebox $ wget -P ~/.wine/drive_c/windows/system32 http://www.kirupa.templarian.com/gm.dls
--16:15:06-- http://www.kirupa.templarian.com/gm.dls
=> `/home/nicolay/.wine/drive_c/windows/system32/gm.dls'
Распознаётся www.kirupa.templarian.com... 74.208.41.115
Устанавливается соединение с www.kirupa.templarian.com|74.208.41.115|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 3 440 660 (3.3M) [text/plain]

 

100%[==============================================================================================================>] 3 440 660 7.74K/s ETA 00:0039

 

16:18:55 (14.71 KB/s) - `/home/nicolay/.wine/drive_c/windows/system32/gm.dls' сохранён [3440660/3440660]
nicolay@localhost ~/.wine/drive_c/games/orangebox $ mv ~/.wine/drive_c/windows/system32/gm.dls ~/.wine/drive_c/windows/system32/drivers/

Опс, не в ту директорию. Ну ничего, поправили. Собственно, директмьюзик тоже работает. А теперь попробуем запустить халву:

DirectX 9.0 1DirectX 9.0 2

Все те же 10-15 фпс. Неиграбельно. А теперь посмотрим - библиотека d3d9 по-прежнему используется встроенная в вайн. Переключение на нативную библиотеку приводит к невозможности запуска приложения. Так что, ничего нового ожидать не стоит.

Собственно, вывод можно сделать один. Да, установить DirectX можно. Да, работать худо-бедно оно будет. Но гораздо правильнее дождаться собственной реализации функций АПИ директ-икс в вайне - работать это будет даже быстрее, чем в винде.

Общая настройка Wine.

Тут на одном форуме прочитал:

“Насчёт запуска виндовых прог в Linux: если юзаете Линукс — запускайте на нём проги написанные для него. Юзаете винду — тоже самое. Ведь винда такая несовершенная, зачем вам запускать кривые проги написанные для этой системы? Пусть opensource сообщество пишет необходимый софт для открытых ОС, если оно такое крутое. А то очень хитрые, хорошо устроились, я смотрю — не брезгуют юзать софт написанный для чуждой ОСи.”

Как говорится, я фигею с этих русских. Похоже, человек вообще не понимает, что компьютер - это инструмент, и использовать этот инструмент следует максимально эффективно. А эффективно в нашем случае - значит удобно. Если некоторые задачи мне удобно выполнять под Линуксом, но используя при этом софт под платформу win32, значит я буду это делать. И никто мне это не запретит (пока :)). Ну ладно, мы отвлеклись от темы. Поехали.

Итак, wine. Обращаю внимание новичков - wine is not emulator. Вайн - не эмулятор винды. Вайн - это свободная реализация WINAPI (интерфейс программирования приложений), который содержит в себе набор общих для всех виндовых программ функций, которых нет в Линуксе и других *nix-подобных системых.

Процесс установки wine сильно зависит от конкретного дистрибутива Линукс и используемой версии. Можно использовать уже скомпилированный пакет для пакетного менеджера Вашего дистрибутива, а можно (и лучше сделать именно так) скачать последнюю версию исходных кодов и скомпилировать их на вашей системе. Обычно для этого надо распаковать исходные тексты в директорию /usr/src/wine и выполнить команды “make configure && make install”. Тем не менее, для выполнения подобных дейтсвий надо досконально знать устройство Вашего дистрибутива - иначе могут возникнуть проблемы с зависимостями от других пакетов и тому подобные нехорошие вещи. Я воспользовался промежуточным варинтом, установленный у меня дистрибутив Gentoo организован так, что автоматически при выполнении команды “emerge wine” скачивает исходники и собирает готовый пакет. Причем, эта же команда используется для обновления.

После завершения процесса компиляции, необходимо сконфигурировать wine для запуска. Обращаю внимание, НИКОГДА не запускайте wine от имени пользователя root - подобные действия легко могут нарушить работоспособность Вашей системы.

nicolay@localhost ~ $ winepath wine: creating configuration directory '/home/nicolay/.wine'...ALSA lib conf.c:3949:(snd_config_expand) Unknown parameters 0ALSA lib pcm.c:2144:(snd_pcm_open_noupdate) Unknown PCM default:0
err:alsa:ALSA_CheckSetVolume Could not find 'PCM Playback Volume' element
ALSA lib conf.c:3949:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2144:(snd_pcm_open_noupdate) Unknown PCM default:0
err:alsa:ALSA_CheckSetVolume Could not find 'PCM Playback Volume' element
fixme:mixer:ALSA_MixerInit No master control found on CA0106, disabling mixer
fixme:system:SetProcessDPIAware stub!
fixme:iphlpapi:NotifyAddrChange (Handle 0x7c4ed9e8, overlapped 0x7c4ed9cc): stub
fixme:shell:DllCanUnloadNow stub
wine: '/home/nicolay/.wine' created successfully.
nicolay@localhost ~ $

Как обычно возникли проблемы с альсой - но мне это и неинтересно, я по-прежнему предпочитаю использовать в wine звук через OSS. В результате выполнения последней команды создалась рабочая директория для вайна внутри Вашей домашней, внутри нее содержится то, что будет считаться дисками под запущенными приложениями win32 (как Вы уже должны знаеть, под *nix нет понятия диска - вся файловая система общая). Внутри директории ~/.wine/ по-умолчанию содержится ссылки на дисковые устройства и файлы реестра:

nicolay@localhost ~ $ ls .wine
dosdevices  drive_c  system.reg  userdef.reg  user.reg
 nicolay@localhost ~ $ ls .wine/dosdevices/

Внутри dosdevices символические ссылки на то, что будет считаться у нас файловыми системами. В моем случае c: - ссылка на ~/.wine/drive_c/, d: - на /mnt/cdrom, z: - /. Т.е., диск Z: будет содержать всю нашу файловую систему *.nix системы. В директории же drive_c содержатся стандартные для любой виндовс системы папки Program Files и windows. Собственно, их назначение аналогично таким же на установленной Win98, 2000 или XP.

После создания структуры директорий для вайна, его надо бы отконфигурировать. Можно вручную отредактировать файлы реестра *.reg с помощью любого текстового редактора. Но удобнее воспользоваться включенной в последние версии утилитой winecfg:

Winecfg, первый запуск.

Ага. Как и ожидалось, отстутствуют нужные для функционирования русской винды шрифты. Можно запустить английскую версию ($ LANG=”C” winecfg):

Winecfg на английском

Теперь текст отлично читаем, но! Нам наверняка потребуются различные русские и русифицированные приложения, да и вообще - оставлять недонастроенное ПО - не наш метод. Для того, чтобы шрифты отображались нормально, их, как это ни странно, надо просто получить. Или установить. Дело в том, что по-умолчанию папка c:\windows\fonts (~/.wine/drive_c/windows/fonts) пустая. В нее надо скопировать русифицированные шрифты с любой версии Виндовс. Можно просто скопировать файлы .ttf, можно воспользоваться утилитой winetricks, которая позволит скачать и установить шрифты автоматически. Сначала основные шрифты:

Установка основных шрифтов

Потом отдельно шрифт tahoma:

nicolay@localhost ~ $ winetricks tahoma
Executing sha1sum –status -c /home/nicolay/winetrickscache/wd97vwr32.exe.sha1sum
Executing cabextract –directory=/home/nicolay/.wine/drive_c/winetrickstmp /home/nicolay/winetrickscache/wd97vwr32.exe
Extracting cabinet: /home/nicolay/winetrickscache/wd97vwr32.exe
  extracting /home/nicolay/.wine/drive_c/winetrickstmp/wviewer.INF
  extracting /home/nicolay/.wine/drive_c/winetrickstmp/License.txt
  extracting /home/nicolay/.wine/drive_c/winetrickstmp/setup.exe
  extracting /home/nicolay/.wine/drive_c/winetrickstmp/Setup.ini
  extracting /home/nicolay/.wine/drive_c/winetrickstmp/setup.lst
  extracting /home/nicolay/.wine/drive_c/winetrickstmp/Viewer1.cab
  extracting /home/nicolay/.wine/drive_c/winetrickstmp/Setup.tdf
All done, no errors. Executing cabextract –directory=/home/nicolay/.wine/drive_c/winetrickstmp /home/nicolay/.wine/drive_c/winetrickstmp/Viewer1.cab
 Extracting cabinet: /home/nicolay/.wine/drive_c/winetrickstmp/Viewer1.cab
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/ACMSETUP.EXE
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/ACMSETUP.HLP
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/MSSETUP.DLL
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/viewer.DLL
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/acmereg.DLL
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/wviewer.stf
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/hlink.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/hlinkprx.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/docobj.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/msv7enu.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/mso97v.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/msorfs.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/readme.doc
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/t2embed.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/urlmon.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/riched20.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/wininet.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/wordview.exe
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/wwint32v.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/tahoma.ttf
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/install.txt
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/npdoc.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/oleplug.dll
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/oleplug.ini
   extracting /home/nicolay/.wine/drive_c/winetrickstmp/errormsg.dll
All done, no errors.
 Executing cp -f /home/nicolay/.wine/drive_c/winetrickstmp/tahoma.ttf /home/nicolay/.wine/drive_c/windows/fonts/tahoma.ttf
 Install of tahoma done
 winetricks done. nicolay@localhost ~ $

Собственно теперь, если мы запустим winecfg, то получим рабочую русскую версию. С помощью этой утилиты удобно настроить основные параметры wine перед тем, как запускать что либо:

winecfg_first

По-умолчанию команда winver выдает версию Windows2000. Можно изменить на другую версию. Причем можно настроить, чтобы каждое приложение запускалось со своим параметром - бат под икс-пи, контра - под вин98 итд. Удобно. Далее:

winecfg_second.jpeg

Библиотеки. По-умолчанию все библиотеки в вайне используются свои. Поэтому у Вас эта вкладку будет пустой. Но тогда будет ненаглядно, поэтому я использовал свою рабочую версию установки. У меня уже содержится установленный DirectX, некоторые библиотеки используются сторонни. Обратите внимание - внесены существующие библиотеки и опции - использовать ли встроенныую в вайн (*.so), строннюю (взятую из поставки Виндовс или какого-либо win32-пакета, *.dll). Кроме того, можно выставить опции “встроенная, затем сторонняя” или “стронняя, затем встроенная”. Это понятно, в случае отстутствия встроенной будет использоваться сторонняя и наоборот.

Эти функции очень важны для тех приложений, которые критичны к версии виндовс. Понятно, что полной совместимости добиться тяжело (читай - невозможно), потому неизбежны проблемы. В некоторых случаях лучше взять нативную длл, чтобы запустить приложения, выявляются такие случаи опытным путем, можно также почитать на сайте winehq.org.

winecfg_third.jpeg

Настройки графики. Я настроил так. Для некоторых приложений может потребоваться включить или выключить вершинные и пиксельные шейдеры, может потребоваться съэмулировать виртуальный рабочий стол. Экспериментируйте, сломать здесь ничего нельзя.

winecfg_fourth.jpeg

Вид и интеграция. Самая ненужная, на мой взгляд вкладка. Я всегда использую на предыдущей вкладке опцию “разрешить менджеру окон управлять окнами Wine”, поэтому оформление виндовс-окон у меня такое же, как и у любых других приложений. А уж играться размерами системных шрифтов и цветом десктопа - ну не настолько я облондинился.

winecfg_fifth.jpeg

Настройка файловых систем. Все очевидно. Можно добавлять диски, используя для них любую директорию внутри файловой системы - смонтированную флешку, дисковод или образ диска.

winecfg_six.jpeg

Звук. У меня два варианта выбора - alsa и oss. Если поднять звуковой сервер Esound, то появится третья опция. Для решения проблем с совместимотью я всегда выбираю режим OSS, эмуляцию, 48 кГц. Само собой, звуковой драйвер в системе alsa, который собран с поддержкой oss.

Скриншот последней, седьмой вкладки я сделать забыл. И не буду :) Это вкладка about, на которой написано, что это утилита от пакета wine-0.9.53 (последний на текущим момент), адрес сайта и лицензия, под которой она выпущена. Информация очень ценная, но в настройки роли не играет.

Собственно, на этом мы закончили установку и предварительную настройку вайна. Можно попробовать запустить любую виндовую прогу. Например так:

 

thebat_wine.jpegfar_1.jpeg

far_2.jpegcs.jpeg

Да, а собственно к чему это я? Да к тому, что работать надо в том и тем, что тебе наиболее удобно. Мне удобно флюкс, жене удобнее xfce4, кому-то лучше в винде. Ну и флаг в руки, барабан на шею. И мне удобно писать скрипты фаром, получать почту батом. Живите, господа, и не мешайте жить другим. Удачи :)

Linux, wine & Halflife 2 Episode two (OrangeBox)

Статья про Запуск S.T.A.L.K.E.R. под Linux вызвала на удивление сильный интерес среди посетителей. Даже переходы с сайты Тёмы Лебедева не дают столько посетителей, как эта статья. Достаточно сказать, что около 80% переходов по поисковым запросам с Яндекса и Гугля происходят именно по контексту из этой статьи. Поэтому придётся выполнить свое обещание и рассказать, как же все-таки запустить вторую Халву под Линуксом. В принципе, ничего сложного здесь нет, однако пара очень важным моментов (решить которые помог все тот же winehq.org) будет рассмотрена ниже.

Итак, как и в прошлый раз, используется метадистрибутив Gentoo, установленный на AMD Athlon 64 X2 Dual Core 4400, 2GB DDR2, Nvidia Ge-force 7900 GT. Архитектура 86. Единственное отличие по сравнению со Сталкером, используем более свежую версию вайна - wine-0.9.50. Хотя и на версии 47 халфлайф у меня прекрасно запускался. К настоящему моменту у меня в Вайне установлены драйвера DirectX9.0c, но Вам я расскажу, как запустить без этих драйверов. А перевод статьи об установке дайрект-икс сделаю позднее.

Настройки после запуска Сталкера осталисть теми же самыми. Если не знаете, как сделать - смотрите в ту статью. Драйвер для вывода звука - oss, устройство рендеринга - fbo, включен режим GLSL в реестре. HalfLife отлично работает именно с данными настройками.

Аудио драйвер в winecfgGLSL & fbo

К сожалению, стим версию я запустить так и не смог. Вернее - не стал. По той простой причине, что выкачивать сотни мегабайт обновлений на канале 128кб/сек (безлимитный Домолинк) - слишком долго. А на лимитном - слишком дорого. CS1.6 STEAM после некоторых танцев с бубном запускается и работает, а вот HalfLife 2 и CS Source я обновлять не готов. Поэтому берем честно скачанный с торрентов архив (6.02 Гб), в котором содержится полный оранжбокс - Half-Life 2: Episode Two, Portal, Team Fortress 2, все три игры уже вылечены от заразы Стима и готовы к запуску. Файлы русской озвучки я даже не стал распаковывать - в английские и русские игры предпочитаю играть на языке оригинала - переводы часто бывают бездарными.

nicolay@localhost ~ $

cd ~/.wine/drive_c/games/

nicolay@localhost ~/.wine/drive_c/games $

unrar x /home/media/Soft/orangebox/orangebox.rar

nicolay@localhost ~/.wine/drive_c/games $

cd orangebox

nicolay@localhost ~/.wine/drive_c/games/orangebox $

wine ./hl2.exe -game ep2 -console

Запускаем игру, набираем в консоли "net_graph 1", чтобы видеть статистику.

HalfLife 2 Episode twoHalfLife 2 Episode twoHalfLife 2 Episode two

Красивые картинки, явно используются пиксельные шейдеры минимум версии 2.0 - все стандарты DirectX 9.0. Собственно, у меня он уже установлен в системе (как это сделать, я расскажу в следующих выпусках). Но 10 кадров в секунду - играть абсолютно невозможно. Делаем чистую машину wine -

nicolay@localhost ~/.wine/drive_c/games/orangebox $

cd ~ && mv ./.wine ./.wine_old

nicolay@localhost ~ $

winecfg

New winecfg

Очевидно, что шрифты не скопированы в новый вайн, да и настройки надо сделать заново. Я рекомендую воспользоваться утилитой winetricks - многие настройки wine с ее помощью делать гораздо удобнее, чем вручную.

nicolay@localhost ~ $ winetricks corefonts && winetricks tahoma

winetricks

Данные команды самостоятельно скачали и установили системные tff-шрифты Windows, а также шрифт tahoma. При этом не нужна инсталляция винды - архивы со шрифтами скачиваются из интернета. Устанавливаем звук через OSS и режим видео GLSL, fbo (аналогично Сталкеру).

Перемещаем директорию с игрой из старой машины в новую и запускаем игру:

nicolay@localhost ~ $

mkdir ~/.wine/drive_c/games/

nicolay@localhost ~ $

mv ./.wine_old/drive_c/games/orangebox

./.wine/drive_c/games/orangebox

nicolay@localhost ~ $

cd ~/.wine/drive_c/games/orangebox

nicolay@localhost ~/.wine/drive_c/games/orangebox $

wine ./hl2.exe -game ep2 -console

Собственно, особенно ничего не изменилось. Насколько я помню, на версии wine-0.9.47 были жуткие артефакты, через 2 минуты игра висла. Здесь артефактов нет, но и 10 fps - абсолютно неиграбельно. Небольшая модификация запуска:

nicolay@localhost ~/.wine/drive_c/games/orangebox $

wine ./hl2.exe -game ep2 -console -dxlevel 80

HL2 Episode 2 - нормальный запуск

 

Вуаля. 30 на открытом пространстве, вполне играбельно. В закрытых областях - до 70 fps. Попробуем немного поиграть настройками видео Халфлайфа. Поставим галочку High dynamic range в положение none. На одном и том же виде +10fps (33% ). На этом можно успокоиться с настройками и насладиться игрой:

HL2 Episode 2 - настройки по-умолчаниюHL2 Episode 2 - High dynamic range - none

 

Кроме всего прочего, можно попробовать поиграть настройками OffscreenRenderingMode в реестре (например, поставить значения в "backbuffer" или "pbuffer"). В зависимости от версии драйверов и вайна, это может дать выигрыш или проигрыш в быстродействии. Кроме того, в настройках самого halflife можно выбрать различные режимы фильтрации (билинейная, трилинейная или анизотропная), а также уровни детализации текстур, режимы отражения и так далее. В любом случае, ничто не мешает Вам попробовать ту или иную настройку, выбрать наиболее быструю и приступить к игре.

Собственно, на этом бы можно было завершить текущую статью. Однако, я обещал рассказать еще о некоторых тонкостях. Дело в том, что первый раз я запускал игру еще на версии wine-0.9.47. И все происходило именно так, как описано в базе данных wine - WineHQ. Игра запускается, но в режиме DirectX9.0 тормоза и пренеприятнейшие артефакты изображения, в режиме 8.0 игра через короткое время зависает. Тормоза в режиме 9.0 остались, артефакты же в новой версии вайна починили. Чтобы игра не зависала в режиме DirectX8.0 помогает простое решение. Надо просто переключить версию виндовс, эмулируемую wine'ом на win98. Делается это либо через winecfg, либо с помощью упомянутой выше утилиты winetricks:

nicolay@localhost ~/.wine/drive_c/games/orangebox $

winetricks winver=win98
Setting Windows version to win98
Executing wine regedit /home/nicolay/.wine/drive_c/winetrickstmp/set-winver.reg
Install of winver=win98 done
winetricks done.

Возможно, подобный финт потребуется кому-нибудь при запуске этой или другой игры. Вообще, всем любителям поиграть под Линуксом советую посещать сайт wineHQ.org - масса полезной информации ждёт Вас на этом сайте.

Всем спасибо за внимание, приятной игры...

PS. Прошу прощения за лишние переносы при наборе команд shell - дело в том, что из-за слишком длинных строк, сползает разметка страницы в данной теме. Пришлось добавить их, думаю разберетесь, где надо убрать переносы, если копируете команды через буффер обмена.

Запуск игры S.T.A.L.K.E.R. Shadow of Cherobyl под Linux с использованием пакета wine-0.9.49

Я прошу прощения у уважаемых манимейкеров, а также тех, кто зашел почитать мой блог для души. Сейчас будет много умных слов, поэтому если Вам лично ничего не говорят слова Linux, Wine, Cedega, неинтересно слушать умные поучения - просто перейдите на другую статью.

А тем, кому интересно - читаем дальше. А интересно это тем, кто ежедневно заходит на блог по поисковым запросам: "stalker в линуксе", "stalker под wine", "wine stalker". И попадает на статью OpenSource: опыт перехода на бесплатный софт. Действительно, Сталкер - тень Чернобыля - одна из самых современных и зрелищных игр, очень хочется поиграть в нее даже чтобы просто посмотреть на достижения компьютерной графики. Отдельной версии под Линукс нет, но покупать ОС Windows из-за одной игрушки нецелесообразно. На мой взгляд. К сожалению, это не поможет тем, кто ищет "webmoney keeper под linux" - я сам так и научился запускать его. Но интересно им может быть будет.

Итак, для запуска мы берем систему Gentoo, установленную на AMD Athlon 64 X2 Dual Core 4400, 2GB DDR2, Nvidia Ge-force 7900 GT. Несмотря на то, что системы двухядерная и 64 разрядная, я не стал заморачиваться с архитектурой amd64 и оставил x86. Прирост производительности при использовании amd64 незначителен, но проблемы с совместимостью меня пугают.

Кстати, для владельцев менее производительных машин. Когда я первый раз пробовал запускать Сталкера, у меня был Athlon XP 1700+, 1Гб ДДР2 и видеокарта GF FX5200. Так вот под Линуксом он бегал шустрее, чем под виндой. Хотя, конечно в низком разрешении и с тормозами. Что делать, за хорошую графику приходится платить.

Текущая верси wine 0.9.49. Для запуска мы будем использовать именно ее. Хотя S.T.A.L.K.E.R. прекрасно запускался и работал на моей машине начиная с версии 0.9.46. На wine hq описана установка на wine 0.9.40, так что проблем возникнуть не должно.

Для установки я взял самого первого Сталкера, образ формата .mdf. Вы, наверное, уже знаете, что образы формата алкоголя в большинстве случаев можно смонтировать как обычный iso (если при копировании образа не обходилась специфическая защита). Так мы и поступим в нашем случае:

nicolay@localhost ~ $

sudo mount -o loop /mnt/nt_D/CD_IMG/

/games/stalker/STALKER.mdf /mnt/loop

nicolay@localhost ~ $ mount

/dev/sda7 on / type ext3 (rw,noatime)

...

/mnt/nt_D/CD_IMG/games/stalker/STALKER.mdf

on /mnt/loop type iso9660 (rw,loop=/dev/loop0)

nicolay@localhost ~ $

Образ смонтирован, запускаем установку.

nicolay@localhost ~ $ cd /mnt/loop

nicolay@localhost /mnt/loop $ wine setup.exe

Установка сталкераПрограмма установки проверила конфигурацию моего компьютера. Наверное, она сильно удивилась, тем не менее, посчитала, что работать на моей тачке будет. Да и действительно, почему бы и нет.

Установка STALKER в wineОбращаю внимание, что при первом запуске Сталкера у меня возникла проблема, которую мне благополучно помогли (косвенно) решить на winehq.org. При установке игры на ntfs раздел она прекрасно ставится, запускается и работает. Но! Не работают патчи до новых версий. Я долго ломал голову, запостил баг на багзиллу, и только после ответа менеджера проекта, догадался установить Сталкера на ext3 раздел.

Установка STALKER в wineНу что же. Пусть оно ставится, а я пока (может быть), успею забодяжить себе чашечку кофе.

 

Установка STALKER в wine

Вот скажите, что мешает мне варить натуральный? Ничего! Тем не менее, я упорно покупаю этот дерьмовый Нескафе и бодяжу его в красной кружке. Как же мешает обычному человеку лень :)

Установка STALKER в wineИ после нажатия очередного "далее" мы попали на ввод серийного номера и пароля. Ну я введу свои, Вы вводите свои :) Потом, понятное дело, снимаем галку "регистрировать игру" (я никогда не регистрирую даже лицензионные игры, потому что лень - двигатель прогресса :)).

Итак, установка завершена. Чисто ради интереса попробуем оставить включенной галку "запустить игру"...

Установка STALKER в wine

Установка STALKER в wine И благополучно обламаемся. Копирайтеры не дремлют. Сраный СтарФорс не даст запустить игру с абсолютно легального, лицензионного диска. Тем более, с алкоголевского образа. Придется ломать абсолютно законно купленную софтину. Да, блин, мы живем именно в этой дерьмовой стране - копии игр на английском языке обычно делают без СтарФорса - видимо неоднократно получали за такую защиту "по чайнику". Еще раз обращаю внимание - сначала надо установить патч до последней версии (который есть у Вас, и в которую Вы будете дальше играть), а потом снять защиту, причем nocd должен быть именно для этой версии. Кстати, файл XR3DA лучше сохранять перед снятием защиты, иначе при выходе следующего патча придется переустанавливать игру.

nicolay@localhost /mnt/loop $

wine /home/media/Soft/stk-sfk-r-patch-any-1.0003.exe

Установка STALKER в wineУстановка STALKER в wineЗапускать игру второй раз, чтобы посмотреть на картинку Старфорса мы не будем. И так понятно, что защита не даст запустить игру в режиме эмуляции, сразу скопирум nocd-патч в директорию с установленным Сталкером:

cp /mnt/nt_D/CD_IMG/games/stalker/

/STALKER_1.0003_No-DVD_RUS/XR_3DA.exe

~/.wine/drive_c/

/Program\ Files/S.T.A.L.K.E.R/bin/

Вообще, меня поражает наглость производителей игр, которые позволяют себе использовать защиту StarForce. Дело в том, что эта защита использует ВСЕ недокументированные аппаратные возможности приводов CD-ROM (DVD-ROM), которые только можно. Даже на компьютере, с установленной ОС Windows и драйвером СтарФорса, с некоторыми моделями CD-ROM игры просто не запускаются. Не говоря уже про Вайн и Линукс. Почему я, обладая ЛИЦЕНЗИОННОЙ копией игры, должен копировать ее в образ *.mdf, затем искать к ней патч, чтобы запускать ее на своем компьютере? Я что за это платил деньги? Нет! Если у вас, уважаемые производители, проблемы с нарушением авторских прав, будьте любезны, решайте свои проблемы НЕ за счет тех, кто эти права не нарушает.

Итак, запускаем игру:

nicolay@localhost /mnt/loop $

cd ~/.wine/drive_c/Program\ Files/S.T.A.L.K.E.R/bin/

nicolay@localhost ~/.wine/drive_c/

/Program Files/S.T.A.L.K.E.R/bin $

wine ./XR_3DA.exe

Урра... Игра запущена? Черный экран и бегущая по консоли строка:

err:ntdll:RtlpWaitForCriticalSection section 0xb84390 "?" wait timed out in thread 0009, blocked by 001b, retrying (60 sec)

Ахах, какая досада. Но у нас же установлен Линукс, может ну его нахрен? Пошли в винду? Нет, комсомольцы не ищут легких путей. Тем более, винда у меня давно не запускается, как я и писал раньше - не нравится она мне. Поэтому, мы лезем сюда:

http://appdb.winehq.org/appview.php?iVersionId=7377

И первое, что видим, сталкер работает только через директ саунд. Надеюсь, вайн уже настроен, чтобы выводить звук через OSS? Если нет, сделаем это сейчас:

nicolay@localhost ~/.wine/drive_c/

/Program Files/S.T.A.L.K.E.R/bin $ winecfg

Запуск STALKER в wineВы заметили? В настройках драйвера ОБЯЗАТЕЛЬНО стоит эмуляция. Иначе игра не заработает.

Эти настройки же настройки звука оптимальны для всех остальных игр. К сожалению (или к счастью), поддержка альсы в wine включена только недавно, поэтому с oss он работает гораздо корректнее. Поэтому в системе должны быть установлены драйвера ALSA с обязательной поддержкой OSS, wine скомпилирован с флагом OSS и в настройках выбран именно OSS.

Ну что же, запустим, наконец, игру:

nicolay@localhost ~/.wine/drive_c/

/Program Files/S.T.A.L.K.E.R/bin $ wine XR_3DA.exe

Вуаля! Все работает, тем не менее:

Запуск STALKER в wine

Запуск STALKER в wineЗапуск STALKER в wine

 

 

 

 

Обратите внимание на светящиеся шкафы. Это артефакты, возникающие вследствие того, что wine некорректно (пока некорректно) работает с библиотеками DirectX9. Кроме того, возникают эффекты типа перевернутых автоматов в руках персонажей, не отображается оружие в режиме прицеливания итд. Снова идем на winehq.org и внимательно читаем камменты. Не буду Вас заставлять это делать - подскажу пошагово. Включаем режим GLSL и режим рендеринга fbo:

nicolay@localhost ~/.wine/drive_c/

/Program Files/S.T.A.L.K.E.R/bin $ wine regedit

У меня все уже сделано - делаем так же. Выставляем ключи "UseGLSL" и "OffscreenRenderingMode" как на скрине:

Запуск STALKER в wine

Если кому-то интересно, что какие ключи означают, идем сюда: http://wiki.winehq.org/UsefulRegistryKeys и курим до просветления.

Запускаем Сталкера в режиме dx80 без вступления итд:

nicolay@localhost ~/.wine/drive_c/

/Program Files/S.T.A.L.K.E.R/bin $ wine XR_3DA.exe

-dsound -nointro -nodistort -dx80

Получаем:

Полностью рабочий STALKER, запущенный под Gentoo LinuxПолностью рабочий STALKER, запущенный под Gentoo LinuxПолностью рабочий STALKER, запущенный под Gentoo LinuxПолностью рабочий STALKER, запущенный под Gentoo LinuxПолностью рабочий STALKER, запущенный под Gentoo LinuxПолностью рабочий STALKER, запущенный под Gentoo Linux

Игра получается вполне играбельной, я так прошел ее до самого реактора. К сожелению, в режиме ДиректХ8 не работает динамическое освещение и смена дня и ночи, так и не посмотрел. Потом стало лениво и я ушел обратно в свой любимый Counter Strike.

Напоминаю еще раз, что, хотя у меня и описаны шаги по обходу защиты StarForce - копия игры лицензионная. Но запустить с работающей защитой на своей машине я игру не могу. Обращаю внимание производителей игр, особенно Буки и 1С. Не надо нам СтарФорса! Не работает нормально эта защита, она часто очень мешает законным обладателям игр. Пора бы начать прислушиваться к мнениям клиентов?

Итак, игра запущена, работает. Если будут возникать проблемы, не стесняйтесь, пишите. Чем смогу - помогу. До новых встреч, любители честного софта и правильных операционных систем :)

PS. На всех скринах у меня изображение рабочего пространства ДиректХ в углу экрана. С одной стороны, так мне удобнее делать скриншоты. С другой стороны, каюсь, после того, как я случайно удалил директорию /var/ мой gentoo так и не научился переключать режимы экрана. Надо пресобрать, а что - не знаю :) Поэтому пока играю так, в окошке. Но в Сталкера играл в нормальном полноэкранном режиме.

Позже →

Карта
rss
Карта