LINUX.ORG.RU
решено ФорумGames

howto Запуск сталкера в Linux с помощью Wine


1

3

Решил запостить, если кому интересно. Поиском не нашёл этого на LOR. Это репост моего же мануала отсюда.

Введение

В Wine не работает динамическое освещение объектов - оно стало запускаться, но независимо от мощности компьютера игра притормаживает, и кое-что выглядит неправильно - например небо. Также не работает сетевая игра.

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

Для того, чтобы запустить первую версию игры, необходимо установить noCD: программа Wine не умеет запускать драйвер защиты от копирования дисков StarForce. Затем игру можно запустить ЛИБО с ключом -dsound (например, отредактировав ярлык запуска игры), ЛИБО заменив файлы openal32.dll и wrap_oal.dll в каталоге с игрой на версии файлов с сайта компании Creative. Дело в том, что они там испорченные и не работают даже в Windows - вместо них работает библиотека, установленная в системные каталоги. Можно играть!

Дополнение: начиная с версии Wine 1.1.30 ключа -dsound или замены файлов больше не надо: Wine научился использовать библиотеку OpenAL из системы. Чтобы узнать подробнее о поддержке OpenAL в Wine см. приложение.

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

Во второй части убрана поддержка вывода звука через DirectSound, если версия Wine меньше чем 1.1.30 необходимо заменить библиотеки OpenAL. По-прежнему нужен 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 (http://appdb.winehq.org/objectManager.php?sClass=version&iId=14790). Если уже пропатченный файл после обновления Wine работает неправильно (отзываются о том, что игра встаёт на паузу, стоит пошевелить мышь), значит файл слишком старый и нужно пропатчить текущую версию Wine тем же самым патчем. Кстати, в версии Wine 1.0 сбоя вообще не было.

Во второй части игры есть новое освещение - «улучшенное». С улучшенным графическим освещением исчезает сбой, из-за которого не работало небо с динамическим - но лучше его всё же не включать из-за того, что в логе запуска программы пишется много ошибок (как в первой части) и игра притормаживает как с мощным, так и со слабым компьютером.

Если запускать игру не ярлыком, а из консоли, то начиная со второй части её нельзя запустить прямо из каталога bin. Есть два способа. Зайти в каталог ниже:

$ cd ..
$ wine bin/xrEngine.exe

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

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

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

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

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

В остальном игра работает отлично, неисправности те же, что и в Windows.

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

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 можно было установить и пиратскую игру, выпущенную недобросовестными пиратами, помогает только эта команда.

Приложение

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

Это научились делать начиная с версии Wine 0.9.4x. Тогда было длинное руководство с прприсыванием кучи библиотек в winecfg. Теперь можно сразу запустить программу установки и подождать (раньше без дополнительных манипуляций это заканчивалось ошибкой). Подождать потому, что установка будет длиться 10 минут. Чтобы не ждать, нужно:

Для Wine начиная от 0.9.4x и заканчивая 1.1.1

Положить файлы mscoree.dll и streamci.dll из Windows в каталог системных файлов Wine (~/.wine/drive_c/system32).

1.1.1 - последний Wine

streamci.dll больше не нужен, но mscoree.dll перестаёт работать если не установить .NET 2.0. Оказалось он в него входит и раньше не требовал .NET чудом. Так что или устанавливать, или ждать 10 минут. Установка .NET также позволит запуститься бОльшему количеству программ.

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

Запускаем утилиту winecfg и устанавливаем имитируемую версию Windows как 2000. Берём файл l_intl.nls из Windows и копируем его в каталог системных файлов Wine (~/.wine/drive_c/system32). Запускаем файл установки .NET 2.0. Возвращаем значение имитируемой операционной системы Windows обратно.

После этого появляется сбой: минутное ожидание перед запуском любой программы. Оказывается, .NET ищет перед запуском файлы Visual Basic C++. Перед или после установки .NET необходимо установить Visual Basic C++ 2005, 2005 SP1, 2008 или 2010 - любую. Чем новее, тем лучше! Лично я использую 2005_SP1.

Есть и автоматизированный способ установки .NET: это скрипт winetricks. Просто набираешь ./winetricks vc2005sp1 dotnet20 - и он устанавливается. С ним также можно установить .NET 3.0, и ещё несколько десятков программ.

Но у него есть огромный минус: он не позволяет использовать файлы установки, которые уже есть у пользователя. Он их скачивает с сайта Майкрософта. Я считаю это возмутительным! Я не в состоянии постоянно скачивать 30-50 мегабайтов после очередного эксперимента с Wine, но у меня есть диск «все программы на 1 диске».

Что случилось с OpenAL?

Существует несколько реализаций библиотеки OpenAL. Урезанная находится на сайте http://kcat.strangesoft.net/openal.html и с ней много проблем. Полноценная находится на сайте http://connect.creativelabs.com/openal/default.aspx и всегда работает отлично.

С урезанной версией библиотеки наблюдаются сбои в нативных играх, например в Unreal Tournament 2004. Через несколько минут после начала игр сначала появляется треск и шипение, потом звук отключается. Сбоит Wine - начиная с версии 1.1.30 Wine можно скомпилировать с использованием системного OpenAL. Но с OpenAL от strangesoft он не работает. В некоторых играх просто нет звука. Некоторые зависают при запуске (сталкер).

Как их отличить? Взвесить файл /usr/lib/libopenal.so . Если примерно 250 килобайтов - это урезанная библиотека. Если как у меня 600-800 килобайтов - это полноценная библиотека.

Приготовить полноценную можно самому. Обычно зависимостей доустанавливать не надо и понадобится только cmake, но если вы работаете в урезанной Убунте есть команда sudo apt-get build-dep libopenal1 . Скачиваем исходник (90 килобайтов), заходим в каталог build, пишем cmake ../ . Но если вы Убунтоид/Федорщик, перед этим сделайте mv /usr/include/pulse /usr/include/pulse2 - иначе будет поддержка PulseAudio, а она глючная. Затем make - и запихать полученную библиотеку и две её символические ссылки в /usr/lib. Затем вернуться в каталог выше и из каталога include взять AL и посемтить его в /usr/include/AL .

Вот и всё. Если у вас 64-битная система то чтобы скомпилировать 32-битный OpenAL нужно после cmake ../ открыть файл build/CMakeFilesCMakeCCompiler.cmake и между кавычками в строчке SET(CMAKE_C_COMPILER_ARG1 "") вписать -m32. Полученный libopenal запихать в /usr/lib32.

Zenithar
() автор топика

Для версий из Steam не нужен noCD, ибо они сами по себе никакого CD не требуют.

INFOMAN ★★★★★
()
Ответ на: комментарий от f1xmAn

>все работает из коробки

Ага, в том числе и трояны, которые туда напихали сборщики.

Elver1on
()
Ответ на: комментарий от f1xmAn

Такие вещи, а также deb-пакеты игр с обычным установщиком в формате run, создаются там просто чтобы повысить себе раздачу.

Zenithar
() автор топика

чего только не сделают, чтобы оригинальную систему не запускать
wine малопригоден для запуска современных игр, которые, в большинстве своем, используют physx и d3d10

note173 ★★★★★
()
Ответ на: комментарий от Gary

> для устаревшей версии wine

Я рассмотрел версии 1.0 и 1.2

Zenithar
() автор топика
Ответ на: комментарий от note173

>да все его используют

Почти все игры с поддержкой dx10 спокойно откатываются на dx9 при отсутствии первого

а physx без ускорения совсем не нужен

Какие игры, по-твоему, настолько нагружены физикой?

Gary ★★★★★
()
Ответ на: комментарий от Gary

Навскидку - метро, medal of honor, mirror's edge. Последняя работает и без ускорения физики, но без красивых эффектов.

На d3d9 откатываются, но тоже обычно с урезанием эффектов.

note173 ★★★★★
()
4 февраля 2011 г.

Help

Подскажите плиз как накладывать патч на файл dinput желатнльно в подробностях, а то ни где найти не могуописание этого процесса.

anonymous
()
Ответ на: Help от anonymous

Зарегистрируйтесь и создайте топик с вопросом - это увеличит вероятность того, что вам помогут. Ну и почитайте это.

anon_666
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.