понедельник, 8 августа 2016 г.

Запуск классических игр от Id Software в современном Linux

DOOM, Quake, Return to Castle Wolfenstien, Heretic, Hexen - эти игры знает каждый, кто увлекался компьютерными играми в 90-х. Компания Id Software является родоначальником жанра шутер от первого лица. Её игры всегда отличались технологичностью и качеством, а в качестве основного графического API всегда и везде использовался OpenGL. Но компания знаменита не только этим. Она знаменита также тем, что открыла исходный код почти всех версий своего игрового движка под свободной лицензией GNU GPL, что позволило портировать эти замечательные игры на великое множество платформ, а также внести очень много улучшений. Поэтому эти движки будут актуальны ещё очень много лет. Ну и разумеется - компания не обходила стороной операционную систему GNU/Linux, и предоставляла инсталяторы своих игр под эту систему. При этом ресурсы игры использовались общие, и игра одинаково хорошо работала как в Linux, так и Windows. Однако на современных версиях Linux, запуск игр с оригинальных инсталяторов затруднён. И дальше я объясню почему. А также расскажу как поиграть в шедевры своего времени на современном Линуксе.

Первым делом, хочу внести ясность: для игры вам необходимы оригинальные файлы ресурсов целевой игры (текстуры, модели и так далее). Где их взять? С вашей честно купленной версии игры, например под Windows. Хотя конечно не каждый человек покупает лицензионные игры, и точно знает другие способы раздобыть эти файлы. Так или иначе - они вам нужны. Движок у описанных игр открытый и свободный, а всё остальное - защищено авторским правом. Далее я напишу какие именно файлы необходимы.

Wolfenstein 3D




Начну с самой первой известной игры от Id Software. Предлагаю вам два движка для этой игры - классический Wolf4sdl и современный, активно развивающийся Ecwolf. В первом случае вы получите оригинальную игру, без каких-либо изменений. Во втором случае - сможете играть в более комфортном разрешении экрана. Движок Wolf3sdl есть в стандартных репозиториях большинства дистрибутивов, однако его использование затруднено. Поэтому предлагаю вам скачать архив с исполняемыми файлами движка, распаковать их в нужную вам директорию, где будет лежать игра. Версий игр несколько, несколько вариантов игровых архивов и соотвественно - разные исполняемые файлы для них. Потому если у вашей игры архивы с расширением .Wl6 - используйте соответствующий исполняемый файл. Итак. Для игры вам необходимы архивы ресурсов, в формате WL6, WL1, SDM, SOD или WL6A. Обратите внимание, что имена архивов, вместе с расширением, должны быть написаны маленькими буквами (не MAPHEAD.WL6, а maphead.wl6). Скопируйте все игровые архивы в каталог с исполняемыми файлами Wolf4sdl. И запустите соответствующий бинарник.



Движок Ecwoolf в настоящее время активно развивается. Для него автор поддерживает репозитории для Ubuntu, которые указаны на этой странице. Я же опишу способ сборки движка из исходного кода, в данном случае - на Debian 8. Сперва установим необходимые сборочные зависимости:

sudo apt-get install cmake g++ libsdl1.2-dev libsdl-mixer1.2-dev zlib1g-dev libbz2-dev mercurial make libjpeg-dev libgtk2.0-dev libsdl-net1.2-dev

Создаём необходимые директории и скачиваем исходный код:

mkdir -pv $HOME/ecwolf_build
cd $HOME/ecwolf_build
hg clone https://bitbucket.org/Blzut3/ecwolf

Конфигурируем и собираем:

cd ecwolf
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DGPL=ON ..
make

Для запуска игры необходимы файлы ecwolf, ecwolf.pk3 и оригинальные файлы игры. У меня при игре в окне не захватывается мышь (возможно у вас всё будет работать), потому я запускаю игру в полном экране с моим родным разрешением экрана командой:

./ecwolf --fullscreen --res 1360 768

находясь в каталоге с игрой. Просмотреть список доступных опций можно командой:

./ecwolf --help

Для ленивых - готовый собранный бинарник.

DOOM, DOOM 2, Final DOOM, Ultimate DOOM



DOOM использует архивы в формате WAD, в которых содержатся все ресурсы игры. Допустим вы хотите поиграть в оригинальный первый DOOM. Вам необходим файл doom.wad. Далее дело за игровым движком. Я буду использовать PrBoom+, который есть в репозиториях большинства дистрибутивов. Установка для Debian/Ubuntu:

sudo apt install prboom

Обратите внимание, что он рекомендует установить некие Freedoom и Freedoom2. Это свободные клоны оригинального Дума, которые тоже весьма интересны. Если хотите - можете установить их тоже. После установки движка, нужно скопировать doom.wad в директорию /usr/share/games/doom. Сделать это можно двумя способами: открыв файловый менеджер с правами администратора, либо через консоль. В первом случае:

sudo nautilus

Во втором:

sudo cp -r /путь/к/wad-файлу /usr/share/games/doom

Несмотря на то, что ярлык PrBoom+ появится в списке программ, по умолчанию он будет запускать первый попавшийся WAD-файл. Потому если вы скачали Freedoom - будет запускаться он. Чтобы запустить оригинальный DOOM с вашего WAD-файла, откройте терминал и введите:

prboom -iwad doom.wad

И всё. При желании вы можете создать ярлыки на рабочем столе, где вписать соответствующую команду на запуск. Аналогичная операция производится с Doom 2 и дополнениями для них.



Heretic и Hexen



Официальными портами этих игр являются hhexen (Hacked Hexen) и hheretic (Hacked Heretic). Можно использовать их. Скачать 32-х битную версию движка можно отсюда. Но на 64-х битных системах потребуются 64-х битные библиотеки. Поэтому вы можете либо собрать движок из исходного кода, либо - скачать собранные мной бинарные файлы. Далее вам потребуются файлы hexen.wad и heretic.wad. Положите их в директорию с исполняемым файлами (для hhexen и hheretic соответственно) и запустите игру. В результате вы получите полностью оригинальную версию игры, с соответствующим "графоном" и разрешением экрана. Но есть более продвинутый способ - движок Doomsday. Этот движок обладает дополнительными графическими (и не только) возможностями, и его использование не вызывает затруднений. Опять же - он есть в репозиториях большинства дистрибутивов. Устанавливаем в Debian/Ubuntu:

sudo apt install doomsday

WAD-файлы как и прежде нужно закинуть в директорию /usr/share/games/doom. Далее запускаем из терминала doomsday. Откроется консоль, где командой load имяигры вы можете запустить нужную игру. К примеру

load heretic

Либо же запустить по методу PrBoom:

doomsday -iwad heretic.wad



Quake, Quake 2 и Quake 3 Arena



Для Quake 1 вам понадобится движок Darkplaces, который всё также можно установить из репозиториев вашего дистрибутива. Далее вам потребуются файлы pak0.pak и pak1.pak с диска Quake (ну или откуда-нибудь ещё). Создайте где-нибудь каталог id1 (например в ~/Games/quake/id1). В каталог id1 положите pak-файлы. Далее в директории quake создайте текстовый файл quake.sh со следующим содержимым:

#!/bin/sh
cd ~/Games/quake
darkplaces $*

Сохраните и дайте ему права на выполнение (либо в свойствах файла, либо через консоль командой chmod +x quake.sh). Запустите полученный скрипт и....наслаждайтесь игрой! Также хочу обратить ваше внимание на то, что если вы скопируете только pak-файлы - в игре не будет музыки, которая в оригинале грузилась с диска. Поэтому если она вам нужна - скопируйте каталог SOUND с диска к pak-файлам.

Для Quake 2 понадобится движок Yamagi. Установка:

sudo apt install yamagi-quake2

С диска с игрой необходимы все pak-файлы, который находятся в каталоге baseq2, а также каталоги music, video и players. Всё это необходимо скопировать в /usr/lib/yamagi-quake2/baseq2. Не знаю как будет у вас, но у меня исполняемый файл quake2 не хотел запускаться из терминала. Потому я создал ярлык, в котором прописал следующую команду (будет работать и через терминал):

/usr/lib/yamagi-quake2/quake2

И игра будет полностью работоспособной.

Далее у нас Quake 3 Arena. Для него нужен движок ioquake3, который, как вы уже наверно догадались, тоже есть в репозиториях большинства дистрибутивов :) Ставим:

sudo apt install ioquake3

Далее нам необходимы pak-файлы третей Кваки, которые нужно скопировать в /usr/lib/ioquake3/baseq3. Далее из терминала запустить ioquake3 и играть.


Return to Castle Wolfenstein



Эту игру можно установить либо с официального инсталятора, либо - используя свободный движок IORTCW, который основан на Ioquake3. Однако на современных Линуксах, запустить игру с помощью официального установщика - тот ещё геморрой. Во первых, игра требует устаревшую библиотеку libstdc++, во-вторых - есть серьёзные проблемы со звуком (его может вообще не быть). Поэтому данный способ я рассматривать не буду. Но дам ссылку на статью, где он описывается. Мы же пойдём более лёгким путём. Нам потребуется движок Iortcw. К сожалению, в репозиториях Debian и Ubuntu его нет (хотя я планирую добавить его в свои репозитории), потому будем собирать движок из исходного кода. Это совсем несложно. Для начала установим необходимые зависимости:

sudo apt install build-essential libsdl2-dev git

Создадим каталог для сборки и скачаем исходный код:

mkdir build && cd build
git clone  https://github.com/iortcw/iortcw.git
cd iortcw/SP

Собирать будем singleplayer-режим.

И производим сборку:

make

В каталоге Build появится директория release-linux-x86_64. В ней будет директория main, в которую вам надо скопировать все ресурсы игры (если не будете собирать multiplayer-режим - то не копируйте pak-файлы с префиксом mp). И запустить файл iowolfsp. Приятной игры!


DOOM 3 и DOOM 3 BFG Edition

 

DOOM 3 будем ставить двумя способами: сперва из оригинального инсталятора от Id Software. Так как скорость его скачивания с FTP-сервера компании просто невероятно низкая - скачиваем его отсюда.  Далее даём ему права на выполнение:

chmod +x doom3-linux-1.3.1.1304.x86.run

и запускаем установку:

sudo ./doom3-linux-1.3.1.1304.x86.run

После установки, как обычно, нужно скопировать файлы ресурсов игры в нужную директорию. Нам нужны pak-файлы, находящиеся в каталоге base на диске с игрой, или в установленной Windows-версии (если таковая имеется). Копируйте эти файлы в /usr/local/games/doom3/base. Затем надо изменить права доступа на них (ВНИМАНИЕ: если описанные выше игры у вас плохо работают и не запускаются - возможно изменение прав доступа исправит проблему):

sudo chmod -R 777 /usr/local/games/doom3/base/pak00*.pk4

Всё. Можно играть. В меню приложений должен быть ярлык doom3.

Но Doom 3 не был бы Думом, если бы для него не существовало свободного движка. Он есть. И зовётся dhewm 3. Однако в репозиториях Debian и Ubuntu его нет, потому либо качаем собранный мной бинарник (собран в Debian 8, но будет работать в Ubuntu 16.04 и Mint 18), либо - собираем сами:

Ставим необходимые сборочные зависимости:

sudo apt install build-essential git
cmake libsdl2-dev libopenal-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev

Получаем последнюю версию исходного кода и приступаем к сборке:

git clone https://github.com/dhewm/dhewm3.git
cd dhewm3
mkdir build
cmake /neo
make

После сборки появится исполняемый файл dhewm3. Короме него будет нужна директория base, в которой должен лежать файл default.cfg. В эту директорию скопируйте ресурсы игры (pak-файлы). Кроме dhwm3 и директории base больше ничего не нужно. Можете удалить. Запустите dhwm3 и играйте.



Doom 3 BFG Edition - это переиздание Doom 3 для современных версий Windows, включающее в себя дополнение Resurection of Evil и первые две части Дума. Спустя некоторое время после релиза игры, разработчики по традиции открыли исходный код движка. В результате родился движок RBDOOM3-BFG, который помимо полной поддержки Linux может похвастаться наличием 64-х битной поддержки, улучшенной отрисовкой теней и многим другим. Движок находится в активном развитии, потому рекомендую вам собрать последнюю версию из исходного кода. Если не хотите - вот собранный мной бинарник (примечание: в будущем эти движки будут добавлены в мои репозитории). Остановлюсь на сборке из исходного кода. Сперва устанавливаем сборочные зависимости:

sudo apt install build-essential cmake libsdl2-dev libopenal-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev git

Получаем последнюю версию исходного кода:

git clone https://github.com/RobertBeckebans/RBDOOM-3-BFG.git

Конфигурируем и собираем:

cd RBDOOM-3-BFG
cd neo/
./cmake-linux-release.sh
cd ../build
make

Ждём. После сборки у нас получится исполняемый бинарный файл RBdoom3BFG. Это и есть наша игра. В каталоге с ним создайте директорию base (или просто переместите её из каталога с исходным кодом) и скопируйте туда ресурсы игры. Также убедитесь в наличии там файла default.cfg. Приятной игры!

5 комментариев:

  1. спасибо большое за информацию!

    ОтветитьУдалить
  2. Упомяну еще GZDoom, позволяющий запускать старые Doomы, Heretic, Hexen, Strife и еше некоторые шедевры, сделанные на Doom Engine, а также моды к ним. Плюс к этому существуют wad'ы, заточенные конкретно под фичи GZDoom, а также Zandronum - форк GZDoom специально для игры по сетке.
    Ну а для желающих погонять Вторую Кваку с красивой графикой, как в Darkplaces, существует Berserker, неплохо работающий под Wine.

    ОтветитьУдалить
  3. Спасибо за хороший обзор! О существовании prboom знал давно. Если честно, не думал, что удастся найти оверлей для ZDoom под Gentoo, но тем ни менее, он существует. Игра собралась с пол-пинка. Очень порадовал brutal mod. С вашей помощью удалось собрать ECWolf. Но, к сожалению, в исходниках была допущена ошибка, пришлось править исходник, иначе не собиралось. Еще раз спасибо!!!

    ОтветитьУдалить
  4. Спасибо большое за такую подробную статью! Странно, но после всех вышеописанных действий по запуску Quake3 на Debian 9, система выдает: bash: ioquake3: command not found

    ОтветитьУдалить