Crossroads » BLOG » Об играх » Wine: Resident Evil и Resident Evil Zero

Wine: Resident Evil и Resident Evil Zero

  • Dislike
  • 0
  • Like
Resident Evil, так же известная как Biohazard HD REMASTER — ремастеринг самой первый игры серии Resident Evil, вышедшей в далёком 1996-ом году для консоли Sony PlayStation One. Игра, как и серия в целом, оказалась на столько популярной, что первый её ремастеринг был выпущен уже в 2002-ом году для консоли Nintendo GameCube. Была переделана отвратительная озвучка оригинальной игры, переработаны текстуры, значительно улучшена графика, так же изменениям подверглись некоторые пазлы.

В том же году для Nintendo GameCube был выпущен приквел под названием Resident Evil Zero, так же известный как Resident Evil 0. Обе игры серии добрались до персональных компьютеров в 2015-ом и 2016-ом году практически без изменений, за исключением того, что в разы выросли системные требования и были добавлены HD текстуры. Графика в целом, так же стала выглядеть лучше. Динамика и сюжет остались теми же.

Обе игры были портированы на PC с жёсткой привязкой к OS Windows и её компонентам, что затрудняет дальнейшее портирование под Mac и операционные системы на ядре Linux. Однако это возможно, и в этой статье я расскажу как.

Такого рода «кустарное» портирование всегда сопряжено со множеством факторов, которые учесть на вскидку просто невозможно. Это и сама ОС, и окружение рабочего стола, и зависимости пакетов, и драйвер видеокарты. В моём примере характеристики следующие: OS Manjaro с ядром Linux линейки 5.0; Рабочий стол — KDE; Звук — ALSA; Видеокарта — шестигиговая nVidia 1060 с проприетарным драйвером версии 418. Многие говорят, что MESA в сочетании со свободным драйвером amdgpu для видеокарт от AMD тоже даёт хороший результат, но в моём случае всегда были лаги даже в нативных играх. Правда и карта была R7. Возможно с современными картами от AMD дела действительно обстоят не плохо. Особенно если использовать проприетарный драйвер amdgpu-pro. Так или иначе, но процесс показывает куда копать в случае, если в каких-то сильно отличающихся конфигурациях что-то не заведётся.

Имеется ввиду, что у вас уже установлен Wine, Winetricks, все зависимости и вы знаете как с этим всем обращаться.

Resident Evil, как и Resident Evil Zero для проигрывания видео в кат-сценах использует Windows Media Player. В результате чего попытки запустить игру под Wine у многих не продвигаются дальше лого Capcom. Единственная версия WMP, которая работает почти идеально под Wine — версия 10. Для её установки нужен 32-х разрядный префикс, совместимый с Windows XP. Это не проблема в Resident Evil 4-6, а так же в Revelations. Resident Evil же, как и Resident Evil Zero на PC выходили уже после закрытия Windows XP и в минимальных системных требованиях указана Windows 7. Это не мешает их запуску под Windows XP, однако в Resident Evil практически сразу вылетает ошибка «Err08», указывающая на то, что игре не хватает оперативной памяти из-за ограничений в 2 гига на 32-х разрядных системах. Resident Evil, как и Resident Evil Zero — 32-х разрядные приложения, но ограничение в 2 гига обойти можно. Однако нужен 64-х разрядный префикс, в котором не заведётся Windows Media Player 10.

К счастью нам не нужен на 100% рабочий Windows Media Player. Нам нужно лишь чтоб кат-сцены в игре проигрывались с видеорядом и звуком. С этим вполне справится Windows Media Player 11, который существует так же в 64-х битном формате. Но он, как и его предок, под Windows XP и без костылей не встанет.

Для упрощения задачи мы будем использовать Lutris и их сборку Wine так как Lutris имеет кучу твиков в своём интерфейсе и их сборки Wine всегда свежие, с рядом патчей, заточенных именно под игры. И так, приступим…

Если вы Знаете, что такое Lutris и как с ним работать, то следующие пару абзацев можно пропустить. На данном этапе от Lutris нам нужна лишь свежая сборка Wine. На момент написания данного текста — это 4.6. Если вы устанавливаете Lutris впервые, то установите сначала системный Wine и все его зависимости. Если в вашем дистрибутиве есть Wine Staging, то устанавливайте именно staging. Наличие системного Wine со всеми зависимостями значительно снизит вероятность возникновения проблем с соблюдением зависимостей при использовании локальных сборок Wine от Lutris.

В интерфейсе Lutris, слева будет список «Runners» со значком шестерёнки для управления ими. «Runners» - термин, используемый в данном случае командой Lutris для обобщения инструментов, позволяющих запускать те или иные игры. Зайдите в настройки «Runners», где нас интересует два пункта: Wine и Wine Steam, так как для запуска Resident Evil нам понадобится версия Steam, работающая под Wine. Напротив Wine нажмите кнопку «Manage Versions» для управления версиями Wine. «Tkg» означает, что сборка — staging-сборка, поддерживающая Esync и прочие прелести. На момент написания статьи — это «tkg-4.6». Всегда выбирайте последнюю версию, если доподлинно неизвестно, что конкретная игра лучше работает на более ранних версиях Wine. Скаченные сборки будут распакованы по адресу ~/.local/share/lutris/runners/wine. Для упрощения доступа к ним можно создать ссылку на них где-нибудь поближе. Например:
ln -s ~/.local/share/lutris/runners/wine ~/WineRunners


Пункт Wine Steam поможет автоматически установить две копии Steam. Одна в 32-х разрядный префикс, другая — в 64-х разрядный. Не важно в какой префикс установлена игра. Для запуска игры через интерфейс Lutris необходимо прописать пути до Steam в 64-х и 32-х разрядном префиксе.

Так же Steam можно установить вручную, что не сложно. Например:
WINEPREFIX=/home/user/WineSteam/x32prefix WINEARCH="win32" /home/user/WineRunners/tkg-4.6-x86_64/bin/winecfg
WINEPREFIX=/home/user/WineSteam/x64prefix WINEARCH="win64" /home/user/WineRunners/tkg-4.6-x86_64/bin/winecfg
WINEPREFIX=/home/user/WineSteam/x32prefix WINE=/home/user/WineRunners/tkg-4.6-x86_64/bin/wine winetricks steamwebhelper.exe=disabled winemenubuilder.exe=disabled steam
WINEPREFIX=/home/user/WineSteam/x64prefix WINE=/home/user/WineRunners/tkg-4.6-x86_64/bin/wine winetricks steamwebhelper.exe=disabled winemenubuilder.exe=disabled steam


Где «WINEPREFIX=» указывает на путь до префикса, «WINE=» указывает на путь до сборки Wine при работе с Winetricks. С этим часто путаница, так как «WINE=» нужен лишь при работе с Winetricks. Во всех остальных случаях вы указываете путь до бинарников Wine, но без параметра «WINE=», что видно в первых двух командах. Разрядность префикса так же указывается лишь при его создании. При последующих операциях с префиксом параметр «WINEARCH=» не нужен. Первыми двумя командами мы создаём два 32-х и 64-х битных префикса. Вторые две команды установят в них Steam, отключат автоматическое создание меню в вашем рабочем столе, (что часто заноза, так как по умолчанию Wine пихает в меню программ всё, чему там не место) и отключат steamwebhelper.exe, из-за которого Steam плюёт ошибками при каждой попытке подгрузить магазин. На сегодня Steam под Wine работает не очень гладко, но настройки и библиотека работают как надо. Для всего остального есть нативная версия Steam под вашу операционную систему.

После установки Steam запускаем копию из 64-х битного префикса и устанавливаем игру. Не используйте путь по умолчанию. Вынесите библиотеку игр за пределы префикса (диск Z и так далее), например в /home/user/SteamLibrary. После успешной закачки игры не пытайтесь её запустить. Она не заведётся. Закройте Steam и убедитесь, что все Wine процессы в системе остановлены.

Создаём 64-х разрядный префикс в папке с игрой. В данном примере это /home/user/SteamLibrary/steamapps/common/Resident Evil Biohazard HD REMASTER.
WINEPREFIX="/home/user/SteamLibrary/steamapps/common/Resident Evil Biohazard HD/prefix" WINEARCH="win64" /home/user/WineRunners/tkg-4.6-x86_64/bin/winecfg


В открывшихся настройках Wine, во вкладке «Applications» указываем версию Windows для «Default Settings» как Windows XP. Это важно для установки WMP. Там же добавляем приложение нажатием кнопки «Add Application...». Указываем путь до файла «bhd.exe» в корне папки с игрой и выставляем версию Windows как Windows 7. То же самое делам со «Steam.exe», выбрав полный путь до «Steam.exe», который в нашем 64-х битном префиксе Стима. Steam под Windows XP существует, но давно не обновляется и лучше, когда он работает в режиме Windows 7. Подобная установка Steam подразумевает его использование для множества игр. Неважно под какой версией Windows запускается игра. Steam всегда лучше запускать под Windows 7. Иначе он начнёт переустанавливать сам себя при каждом запуске игр из различных префиксов.

Устанавливаем Windows Media Player. Тут не всё так просто. Windows Media Player 11 можно скачать с официального сайта Microsoft, выбрав 64-х битную версию под Windows XP. Но в таком виде он не установится. Будет гнать что-то по поводу подлинности Windows (Wine — это не настоящая Windows, а для Microsoft это то же самое, что пиратская). Скаченный «wmp11-windowsxp-x64-enu.exe» сначала нужно распаковать. Вы можете сделать это с помощью утилиты «cabextract», предназначенной для распаковки Майкрософтовских «cabinet» (.cab) файлов. Утилита есть в репозиториях большинства популярных дистрибутивов на ядре Linux. Или вы можете скачать уже распакованные файлы здесь.

Скачайте мой архив, или скачайте плеер с официального сайта и распакуйте сами.
cabextract "/путь_до/wmp11-windowsxp-x64-enu.exe


Распакуется в то же место, где находится «wmp11-windowsxp-x64-enu.exe». Поместите его предварительно в отдельную папку. В распакованном wmp нас интересует два файла: «wmfdist11-64.exe» и «wmp11-64.exe». Устанавливаем их последовательно в наш префикс для игры.
WINEPREFIX="/home/user/SteamLibrary/steamapps/common/Resident Evil Biohazard HD/prefix" /home/user/WineRunners/tkg-4.6-x86_64/bin/wine /путь_до/wmfdist11-64.exe


Дождитесь окончания установки (обычно несколько десятков секунд), до появления соответствующего сообщения об успешном завершении остановки. Закройте окно. Скорее всего придётся сбросить команду в терминале при помощи сочетания клавиш Ctrl+C. Повторите процесс с файлом «wmp11-64.exe». После окончания убедитесь, что все процессы Wine остановлены.

Далее, с помощью Winetricks устанавливаем в префикс с игрой необходимые для запуска игры компоненты и перезаписываем библиотеки.

WINEPREFIX="/home/user/SteamLibrary/steamapps/common/Resident Evil Biohazard HD/prefix" WINE=/home/user/WineRunners/tkg-4.6-x86_64/bin/wine winetricks steamwebhelper.exe=disabled winemenubuilder.exe=disabled d3dcompiler_43 d3dcompiler_47 d3dx9 xact windowscodecs


C d3dcompiler_ и d3dx9, думаю, всё понятно. Xact поможет избежать проблем со звуком, windowscodecs установит все необходимые кодеки. После установки «wmfdist11-64.exe» установка кодеков может оказаться не обязательной, но лишней не будет.

После всего вышеописанного мы имеем отдельную установку Steam, что позволяет нам скачивать игры до создания префиксов под них, и 64-х разрядный префикс под игру, в котором игра и Steam запускаются в режиме Windows 7, а Windows Media Player 11 и всё остальное в режиме 64-x разрядной Windows XP (после манипуляций с Winetricks версия Windows может измениться на Windows 2003, что не важно, так как это та же XP, только серверная и всё работает так, как и задумывалось).

Игра работает нормально со стандартными Wine библиотеками, но можно увеличить производительность с помощью D9VK. Если ваша сборка Wine не включает в себя D9VK, то D9VK нужно установить вручную. Если для запуска игры вы используете В Lutris есть почти готовое решение. В остальных случаях нужно либо скомпилировать свою сбору из исходников, либо скачать уже готовую.

Скачиваем последнюю версию. Распаковываем и переходим в распакованную директорию. Там где файл «setup_dxvk.sh». Устанавливаем D9VK в наш префикс. Пример:
WINEPREFIX="/home/user/SteamLibrary/steamapps/common/Resident Evil Biohazard HD/prefix" ./setup_dxvk.sh install


Для запуска игры через Lutris добавляем её с помощью кнопки «Add Game». В поле «Name», во вкладке «Game Info» указываем название игры (Resident Evil), в меню «Runner» указываем «Wine Steam». В поле «Application ID», во вкладке «Game Options» указываем steam-идентификатор игры 304240 для Resident Evil, или 339340 для Resident Evil Zero. В поле «Prefix» указываем путь до префикса игры, то есть тот префикс, который мы создали ранее ("/home/user/SteamLibrary/steamapps/common/Resident Evil Biohazard HD/prefix"). Во вкладке «Runner Options» в полях «Default Wine Prefix» указываем пути к прификсам обоих копий Steam. Это не путь к префиксу игры, а именно префиксы Steam. В поле «Wine Version» указываем версию Wine под которой будет работать игра. В нашем случае это «tkg-4.6-x86_64». Отмечаем «enable Esync». Всё остальное опционально и зависит от индивидуальной конфигурации системы. По умолчанию обычно выставлены оптимальные настройки. Включение «Virtual Desktop» с указанием рабочего разрешения вашего экрана позволит избежать проблем с «залипанием» Steam в трее и прочих неприятностей, связанных с разрешением экрана. Во вкладке «System Options», там где «Environment Variables» жмём кнопку «Add» чтобы добавить дополнительные условия. Поля «Key» - опция, поля «Value» - значение. Опция DXVK_HUD со значением fps выведет FPS в левый верхний угол. Значение 1 включит стандартный набор данных. Значения можно чередовать через запятую. Например version,fps,memory - версия DXVK, FPS и потребление памяти. DXVK_LOG_PATH с указанием пути укажет на папку для складирования логов. DXVK_STATE_CACHE_PATH - путь к кэшу DXVK. По умолчанию кэш будет храниться в папке с игрой. С помощью этой опции можно указать своё место. То есть «Environment Variables» - это то, что экспотируется в префикс, когда игра запускается через консоль.

Теперь игра заводится, кат-сцены проигрываются, но проблема с периодическими вылетами после ошибки «Err08» остаётся. Если такая проблема присутствует (она есть не у всех, а так же свойственна не только Wine, но и «родной» для игры Windows), нужно снять ограничение в 2 GB на оперативную память. Опять же в «Environment Variables» можно добавить условие WINE_LARGE_ADDRESS_AWARE со значением 1. Это поможет обойти это ограничение, если сборка Wine собрана с поддержкой этой возможности. Если же нет, то здесь поможет утилита «CFF Explorer». Скачиваем версию Explorer Suite и устанавливаем её в префикс нашей игры, так же, как мы это делали с WMP (на этот раз без распаковки). Запускаем «CFF Explorer.exe» (он в /drive_c/Program Files/NTCore/Explorer Suite/ нашего префикса). В левом верхнем углу нажимаем кнопку «Open» и находим бинарник, запускающий игру («bhd.exe»). Далее в «Nt Headers» / «File Header» в поле «Characteristics» жмём «Click here» и ставим галку напротив «App can handle >2gb address space», указывая тем самым на то, что приложение способно обработать адресное пространство за пределами 2-х гигабайт. Жмём «OK» и сохраняем изменения (кнопка «Save»).

Пример запуска игры через консоль, без Lutris:
WINEPREFIX="/home/user/SteamLibrary/steamapps/common/Resident Evil Biohazard HD/prefix" WINEDEBUG=-all,fixme-all WINEESYNC=1 STAGING_SHARED_MEMORY=1 WINE_LARGE_ADDRESS_AWARE=1 DXVK_HUD=version,fps,memory DXVK_LOG_PATH=/home/elissa/logs/RE DXVK_LOG_LEVEL=error DXVK_STATE_CACHE_PATH=/home/elissa/tmp/cache/RE __GL_SHADER_DISK_CACHE=1 __GL_SHADER_DISK_CACHE_PATH=home/elissa/tmp/cache/RE /home/user/WineRunners/tkg-4.6-x86_64/bin/winecfg "/home/user/WineSteam/x64prefix/drive_c/Program Files (x86)/Steam/Steam.exe" -applaunch 304240


Где 304240 - ID игры в Steam. Всё, что связано с __GL относится к видеокартам nVidia с проприетарным драйвером. Запустите Steam перед запуском игры, если Steam располагается в другом префиксе. Таким образом он пропишется в реестр префикса игры и будет открываться при запуске игры с помощью команды выше.

Всё то же самое можно проделать и с Resident Evil Zero. Но не ставьте несколько игр в один и то же префикс, даже если процесс установки идентичен. Всегда есть шанс, что что-то пойдёт не так и будет проще переустановить одну игру, чем десяток.
Like Dislike

___
Tatyana K.



Tags: Linux, Wine, DXVK, Wine Games


 
  • Creative Commons Licence
  • Norton Safeweb
  • Website Uptime Monitoring By ServiceUptime.com