S.T.A.L.K.E.R.: Shadow of Chernobyl - Другое - Запуск Сталкера в Linux

Wine - программа для запуска программ для Windows в операционной системе Linux (и в MAC OS X, куда же без него?!). Wine недописан, и многие программы в нём не работают. Оконные приложения работают почти все (плохо работают в основном программы от самой Microsoft, которые используют огромное множество слабодокументированных возможностей системы, и игры, которые портированы с XBoX). А если хочется запустить игру, то половина работает сразу, а вторая половина работает или с небольшим шаманством (самые простые и очевидные действия: взять библиотеку из Windows, изменить regedit Wine'а, установить noCD, отредактировать файл конфигурации игры), или не работает. Перед запуском какой-либо игры необходимо зайти на сайт appdb.winehq.org/ и посмотреть последовательность действий для её запуска. Рекомендую с Wine вообще не связываться, потому что он привносит в повседневную работу много багов - 99% багов в Linux это баги Wine. Но помимо недовольства, программа Wine привносит и много радости: стакан наполовину полон, а не наполовину пуст. Если посмотреть на картину крупным планом, Wine прекрасно запускает десятки тысяч программ! Почему запускает, а не эмулирует: Wine не эмулятор, а хитроумная прослойка между ядром и библиотеками Windows и Linux, которая не использует файлы из Windows, но если свои эквиваленты ещё недописаны, то спокойно работает и с родными файлами Windows'а. Поэтому, в отличие от эмулятора, потеря в скорости работы составляет всего лишь 15-20% (а с оконным приложением может вообще не быть - в единичных случаях замечена бОльшая скорость, чем в Windows).
Что касается того, что не работает - вы не встретите в Wine ошибку в вычислениях, или чтобы программа выдавала неверный результат. Программа или не будет работать совсем, или будет работать правильно. Могут только не включиться более-менее новые графические навороты, и всё. Прежде чем пользоваться этим руководством, я предполагаю, что вы уже умеете работать с Wine и знаете, как запускать с помощью него программы.
Игра Сталкер запускается в Wine начиная с версии 0.9.35. Когда вышла игра, актуальной версией программы была 0.9.34, и игра полностью запускалась при условии, что перед компиляцией программы будет применён быстро написанный поклонником игры патч. Патч решал какую-то мелкую неисправность, и получился настолько удачным, что был включён в саму программу Wine начиная с версии 0.9.35, так как не мешал другим программам и даже исправлял похожие баги при их запуске. Далее Wine выходил с периодичностью в 2 недели по пятницам вплоть до версии 0.9.61, затем было 5 релиз-кандидатов, первая версия, 1.1.0, и снова выходили новые версии со сменой третьей цифры в номере версии. Актуальной версией программы Wine на сегодня является 1.2. Игра работает в каждой из них, однако рекомендуется использовать первую версию, потому что в первых трёх релиз-кандидатах было исправлено несколько случайно допущенных ошибок в работе игры при разработке программы Wine (неправильно выглядящая вода в локации Припять; снижение скорости игры до 1-2 кадров в секунду, если герой оказывается рядом с аномалией; неправильно наложенные тени). Эти ошибки просуществовали недолго, и уже никто о них не вспомнит через три года после их исправления.


Первая часть игры

Для того, чтобы запустить первую версию игры, необходимо установить noCD: программа Wine не умеет запускать драйвер защиты от копирования дисков StarForce. Затем игру можно запустить либо с ключом -dsound (например, отредактировав ярлык запуска игры), либо заменив файлы openal32.dll и wrap_oal.dll в каталоге с игрой на версии вайлов с сайта компании Creative. Дело в том, что они испорченные, и не работают даже в Windows - вместо них встаёт библиотека, установленная в системные каталоги. Можно играть!
Начиная с версии Wine 1.1.30 ключа -dsound или замены файлов больше не надо: Wine научился использовать библиотеку OpenAL из системы. Но если в системе этой библиотеки нет, или Wine не скомпилирован с ней, то замену библиотек или ключ для запуска игры всё ещё необходимы.
Игра работает не полностью: сетевая игра не запускается, динамическое освещение объектов не показывает небо (скриншоты можно посмотреть на странице бага). В общем, только статическое освещение, увы.
Нужно установить патч для игры, или 1.004, или 1.005. Без него будет исчезать часть травы при движении. Дело в том, что программа Wine, входящая в систему, компилируется со свободной реализацией OpenGL, Mesa3D. А там не то чтобы ошибка - там кое-что недописано. Поэтому нужно или скомпилировать Wine с драйвером nVidia/ATi, где свой, полноценный OpenGL, или пропатчить игру... Это редкая ошибка и проявляется только в Сталкере, и в игре Morrowind, где вместо пиксельно-шейдерной воды какое-то безобразие. Дело в том, что в некоторых конфигурациях Windows это встречается тоже, и патч 1.004 исправляет ошибку.

Вторая часть игры

Начиная со второй части разработчики убрали поддержку вывода звука с помощью средств DirectSound, поэтому если версия Wine меньше чем 1.1.30, необходимо заменить библиотеки OpenAL. До выхода второй версии игры никто и не догадывался о том, что библиотеки OpenAL испорчены - люди могли запускать игру только с ключом -dsound.
По-прежнему нужен noCD.
Начиная со второй версии появляются новые проблемы, препятствующие игре. Первая: необходимо установить DirectX. Оказалось, первая версия игры работает сразу только потому, что библиотеки d3dx9_номер.dll лежат в каталоге с игрой! У программы Wine есть эквиваленты этих библиотек, которые в данный момент в разработке, и не могут запустить игру. Поэтому необходимо либо установить DirectX, либо скопировать файлы d3dx9_31.dll, d3dx9_36.dll, d3dx9_37.dll в каталог с игрой (bin).
Вторая проблема - начиная со второй версии игры, запускаемой в Wine, не работает мышь: немного сдвинувшись, она оказывается в центре экрана. Для того, чтобы исправить проблему, есть патч, который нужно наложить на исходный код программы Wine (bugs.winehq.org/attachment.cgi?id=15638), или взять уже пропатченный файл dinput.dll (rapidshare.com/files/206718949/Patched_Wine_1.1... Если уже пропатченный файл работает неправильно (отзываются о том, что игра встаёт на паузу, стоит пошевелить мышь), значит, нужно пропатчить установленную версию Wine (этот сделан в 1.1.16). Есть ещё ключ запуска -i, с ним работает без патча, но развернуться можно только на 180°. Кстати, возможно, это касается только последний версий Wine: этому сбою подвержены много игр, например Far Cry, который ещё в 1.1.2 спокойно работал без патча. Патч нельзя включить в основной состав программы Wine, потому что из-за него могут начать работать неправильно другие программы (это скорее хак, чем патч). Именно этот патч возвращает указатель мыши с края экрана в центр - есть нормальный патч, но на страничке бага их так много, что не разберёшься, какой лучше. Я выбрал этот, не найдя правильного, и замучившись патчить исходный код.
С улучшенным графическим освещением исчезает сбой, из-за которого не работало небо в первой части игры - но лучше его всё же не включать из-за того, что в логе запуска программы пишется много ошибок (как в первой части) и игра притормаживает как с мощным, так и со слабым компьютером.
Если запускать игру не ярлыком, а из консоли, то начиная со второй части её нельзя запустить прямо из каталога bin. Есть два способа. Зайти в каталог ниже:

$ cd ..
$ wine bin/xrEngine.exe

Или выполнить из bin вот такой командой:

$ wine xrEngine.exe -fsltx ../fsgame.ltx

Ну и ещё один совет. Если не устанавливать игру с диска, а запускать уже установленную игру (например, из раздела диска с Windows), то не будет работать клавиатура. Этот сбой касается и Windows, для его решения надо зайти в настройки игры мышью, зайти во вкладку назначения клавиш управления игрой, и нажать на кнопку "По-умолчанию".

Третья часть игры

Запуск ничем не отличается от запуска второй части игры: необходим патч для мыши, файлы из DirectX от Windows, файлы opanel32.dll и wrap_oal.dll (если версия Wine меньше 1.1.30), и noCD. Динамическое освещение не работает, сетевая игра - тоже, улучшенное графическое освещение легонько притормаживает.
В остальном игра работает отлично, неисправности те же, что и в Windows.



Приложение:


Как устанавливать DirectX?

Это научились делать начиная с версии Wine 0.9.4x. Тогда было длинное руководство, теперь это делается быстро. Можно просто запустить программу установки и подождать (раньше без дополнительных манипуляций это заканчивалось ошибкой). Подождать потому, что установка будет длиться 10 минут. Чтобы не ждать, нужно положить файлы mscoree.dll и streamci.dll из Windows в каталог системных файлов Wine (~/.wine/drive_c/system32) для Wine начиная от 0.9.4x и заканчивая 1.1.1. С более новыми версиями чтобы не ждать нужно установить .NET. Версия 2.0 подходит идеально. Установка .NET также позволит запуститься бОльшему количеству программ.


Как установить .NET?

Запускаем утилиту winecfg и устанавливаем имитируемую версию Windows как 2000. Берём файл l_intl.nls из Windows и копируем его в каталог системных файлов Wine (~/.wine/drive_c/system32). Запускаем файл установки .NET 2.0. Возвращаем значение имитируемой операционной системы Windows обратно.
После этого появляется сбой: минутное ожидание перед запуском любой программы. Начиная с версии Wine 1.1.1. Оказывается, .NET ищет перед запуском файлы Visual Basic C++. Перед или после установки .NET необходимо установить Visual Basic C++ 2005, 2005 SP1, 2008 или 2010 - любую. Чем новее, тем лучше! Просто берёте и запускаете - ничего сложного в этом нет. Лично я использую 2005.
Есть и автоматизированный способ установки .NET: это скрипт winetricks. Просто набираешь ./winetricks vc2005sp1 - и он устанавливается. С ним также можно установить .NET 3.0, и ещё несколько десятков программ. Но у него есть огромный минус: он не позволяет использовать файлы установки, которые уже есть у пользователя. Он их скачивает с сайта Майкрософта. Я считаю это возмутительным! Я не в состоянии постоянно скачивать 30-50 мегабайтов.


Полезные команды:

winecfg - программа для настройки Wine. В ней можно, например, выбрать оконный режим работы программ для Windows. Создаётся небольшой виртуальный рабочий стол (размеры указываются в winecfg), к вотором работают программы. Очень многим моим знакомым нравится эта возможность! Вот только в Сталкера 2 и 3 с ней не поиграешь - из-за корявого патча для мыши в оконном режиме работы игры разворачиваться можно только на 180°. Ещё полезна вкладка Аудио. До версии Wine 1.1.6 для того, чтобы в любой игре работал звук, там надо выбрать в выпадающем списке слово Эмуляция. Начиная с версии 1.1.6 этого делать не надо - но очень многие люди этого не знают и продолжают это делать по привычке!

wineserver -killall - мгновенное выключение программ в Wine. Очень полезна, если что-нибудь зависло и выключаться не хочет. Команду можно набрать, например, в окне "Открыть с помощью...", вызываемой сочетанием клавиш Alt+F2. Есть ещё крайний случай - голая консоль, вызываемая сочетанием клавиш Ctrl-Alt-F1. Вводим имя и пароль пользователя (звёздочки набираться не будут, не удивляйтесь). Возвращаться оттуда - Ctrl-Alt-F7. Жаль только, что выборочно программы не закрываются этой командой, и если был запущен uTorrent или QIP, то он закроется тоже.

wine eject - вы видели в Windows окно с ошибкой из-за того, что вытащен компакт-диск, с которого запущена программа? Я - да. Linux не позволяет вытащить диск в этом случае - пока программа не выключится. Что делать, если программа установки игры просит "Вставить следующий диск"? Раньше помогала только эта команда, теперь ошибка исправлена (это можно проверить, например, в DooM III). Но есть такие недобросовестные пиратские программы установки, с которыми полно проблем даже в Windows. Вытаскиваешь диск - и видишь ошибку. Чтобы в Linux можно было установить и пиратскую игру, выпущенную недобросовестными пиратами, помогает только эта команда.

Комментарии: 5
Ваш комментарий

Demetrum24579 В статью следуюет добавить информацию, что она актуальна по состоянию на 2009-2011 годы. Для Wine 1.3 и более новых уже не нужно патчить dinput, потому что Wine 1.3 умеет Raw Input. Ну и да, про OpenXRay тоже следовало бы добавить.

1

С ЧН все отлично помогло!

0

Подскажите в какую папку скопировать патч для мыши?

0

Все три игры работают, спасибо! Патч переименовать в dinput.dll и установить с заменой в папку C:Windows/System32

0

Пишу спустя овермного лет с момента создания этой статьи: Сталкер под Linux работает на OpenXRay! :)

0