
В том же году для 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.

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

Устанавливаем 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

Далее, с помощью 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


Теперь игра заводится, кат-сцены проигрываются, но проблема с периодическими вылетами после ошибки «Err08» остаётся. Если такая проблема присутствует (она есть не у всех, а так же свойственна не только Wine, но и «родной» для игры Windows), нужно снять ограничение в 2 GB на оперативную память. Опять же в «Environment Variables» можно добавить условие WINE_LARGE_ADDRESS_AWARE со значением 1. Это поможет обойти это ограничение, если сборка Wine собрана с поддержкой этой возможности. Если же нет, то здесь поможет утилита «CFF Explorer». Скачиваем версию Explorer Suite и устанавливаем её в префикс нашей игры, так же, как мы это делали с WMP (на этот раз без распаковки).


Пример запуска игры через консоль, без 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. Но не ставьте несколько игр в один и то же префикс, даже если процесс установки идентичен. Всегда есть шанс, что что-то пойдёт не так и будет проще переустановить одну игру, чем десяток.
___
Tatyana K.
Tatyana K.