Запуск Parkan на Linux посредством Wine.
Запуск описан на примере Wine 7.0 (2022) и GoG-версии игры: https://www.gog.com/game/parkan_the_imperial_chronicles
Страница на Wine AppDB: https://appdb.winehq.org/objectManager.php?sClass=version&iId=16490
Основы по использованию Wine: https://noostyche.ru/blog/2020/04/30/ispolzovanie-wine-dlya-zapuska-windows-programm-v-linux/
Подготовка к запуску.
Установка не представляет проблемы, достаточно всё сделать с параметрами по умолчанию, поэтому сразу перейдём к нюансам.
Установка кодека Indeo.
Для работы видео нужно установить кодек Indeo:
env WINEPREFIX=/home/$USER/.wineParkan winetricks icodecs
В установочнике выбрать опцию Custom и в списке отметить только(!) Indeo Video 3.2 Codec, иначе установка не сможет завершиться:
Потребуется прокрутить весь список и отключить всё лишнее:
Редактирование реестра для активации использования GDI.
Официальная справка о GDI (graphics device interface): https://docs.microsoft.com/en-us/windows/win32/gdi/windows-gdi
О regedit в Wine: https://wiki.winehq.org/Regedit
Ключи реестра в Wine: https://wiki.winehq.org/Useful_Registry_Keys
В Wine поддерживается отрисовка посредством OpenGL, Vulkan и GDI. Для очень старых игр и программ GDI является единственным средством, способным правильно отрисовать их графику. На момент Wine 7.0 автоматическое использование GDI работало далеко не для всех программ, поэтому его требовалось задействовать вручную. Parkan как раз тот случай, для которого требовался вариант с принудительным включением, иначе игра не стартовала и выводилась ошибка:
X11DRV_WineGL_InitOpenglInfo couldn’t initialize OpenGL, expect problems
X Error of failed request: BadValue (integer parameter out of range for operation)
Либо игра запускалась, но аварийно завершалась во время игрового процесса в режиме «экзоскелета».
Включение использования GDI осуществляется через редактирование реестра префикса посредством штатной утилиты reg:
env WINEPREFIX=/home/$USER/.wineParkan wine reg ADD 'HKCU\Software\Wine\Direct3D' /v 'renderer' /t REG_SZ /d 'gdi'
Суть действия в том, чтобы добавить запись «renderer»=»gdi» в HKCU\Software\Wine\Direct3D. После этого GDI будет использоваться по умолчанию для всех программ префикса.
Восстановление работы музыки.
Без манипуляции с переопределением библиотеки музыка в режиме «космоса» будет ограничена одной композицией. Проблема с музыкой решается следующим образом. В корневом каталоге ранее установленной игры выполнить:
sed -i s/WINMM.dll/WIN32.dll/g NAV32.DLL NGI32.DLL WALK3D.DLL PARKAN.EXE && mv winmm.dll win32.dll
Тем самым с помощью sed будут открыты и отредактированы файлы NAV32.DLL, NGI32.DLL, WALK3D.DLL и PARKAN.EXE и в каждом будут заменены все упоминания библиотеки WINMM.dll на WIN32.dll; затем файл winmm.dll будет переименован в win32.dll. После этой операции вся музыка будет работать. Такая вот магия Windows-библиотек.
Стоит отметить, что эту операцию можно проделать вручную, открывая файлы текстовым редактором и заменяя все вхождения winmm.dll, в свою очередь, sed упрощает эту рутину.
Пример запуска игры.
Запуск GOG-версии Parkan нужно обязательно производить с ярлыка, который находится в корне каталога игры:
evn WINEPREFIX=~/.wineParkan wine start /unix 'C:\GOG Games\Parkan - The Imperial Chronicles\Запустить Parkan - The Imperial Chronicles.lnk'
Результат: