Запуск Quake на движке Nexuiz

Nexuiz - это игра распространяемая по лицензии GPL. Она основана на движке DarkPlaces, который в свою очередь был создан на основе движка Quake 1. Может показаться, что если игра основана на столь устаревшем движке, то и выглядит она не очень красиво. Но это не так!

Среди различных улучшений можно отметить: динамическое освещение, поддержка текстур с высоким разрешением, поддержка рельефного текстурирования, сжатие звуков ogg vorbis, карты в формате Quake 3, скелетную анимацию. Подробнее см. соответствующие статьи на Википедии DarkPlaces и Nexuiz.

При этом сама логика игры, как и прежде, реализуется программированием на языке QuakeC. Движок имеет встроенный интерпретатор байт-кода QuakeC, что позволяет создавать новые игры с новой игровой логикой не затрагивая код движка. Например, таким способом были сделаны первые игры типа CTF (Capture The Flag - захват флага) и игра с ботами. В Quake 2 разработчики по каким-то причинам отказались от реализации интерпретатора байт-кода, и выполнили реализацию игровой логики в виде загружаемой разделяемой библиотеки. Однако в Quake 3 разработчики вновь вернулись к прежнему подходу и реализовали интерпретатор байт-кода внутри игрового движка. C учётом того что в Quake 3 не было реализовано рельефное текстурирование и скелетная анимация, можно отметить, что движок Nexuiz по техническим характеристикам превосходит движок Quake 3.

Одним из следствий того, что движок Nexuiz содержит интерпретатор байт-кода Quake 1, является возможность запуска на этом движке игры Quake и любого мода Quake!

Для начала установим саму игру Nexuiz:

# aptitude install nexuiz

Теперь можете запустить игру и посмотреть на неё. По содержанию и графике игра показалась мне очень похожей на Unreal Tournament.

Для запуска Quake на движке nexuiz достаточно скопировать игровые ресурсы из оригинального Quake в каталог ~/.nexuiz/data/. Я скопировал туда файлы pak0.pak, pak1.pak, qrp-maptextures-2007-10-06r2.pk3 и каталог textures. Откуда взять эти файлы и каталоги - описано в моей предыдущей заметке Quake в Linux.

Вкратце: первые два файла берутся из каталога id1 с компакт-диска с оригинальной игрой Quake, третий берётся по ссылке http://qrp.quakeonline.net/qrp-maptextures-2007-10-06r2-7files.zip, а файлы в каталоге textures можно взять из архива по ссылке http://facelift.quakedev.com/download/SKINSbmodels-48files-4-23-05.zip. В принципе, для запуска игры вполне достаточно двух первых файлов взятых с компакт-диска. Два архива, ссылки на скачивание которых приведены выше, нужны лишь для улучшения качества картинки - они содержат более качественные текстуры, перерисованные энтузиастами.

Теперь можно запустить игру. К сожалению в Nexuiz не предусмотрено меню для запуска других игр, кроме как самого Nexuiz. Но любую игру можно запустить воспользовавшись консолью игры.

По умолчанию консоль открывается по одновременному нажатию клавиш Shift и Esc, а закрывается по нажатию клавиши Esc. После подключения игровых ресурсов от Quake консоль можно открыть простым нажатием на клавишу тильды - ~ (слева от клавиши 1 на основной клавиатуре).

Теперь запустим Quake. Для этого введём две команды:

deathmatch 0
map start

Первая команда отключает режим deathmatch и переключает игру в режим cooperative. Вторая команда грузит карту для выбора уровня сложности и эпизода игры. Всё, можно наслаждаться игрой.

Теперь, если захочется сохранить игру, можно ввести в консоли игры команду:

save game

game - это имя файла, в который будет сохранена текущая игра.

Загрузить сохранённую игру так же просто:

load game

Где game - имя файла, в котором была сохранена игра.

Не остановимся на этом и попробуем загрузить какой-нибудь мод. Например, я взял с компакт-диска pak-файл pak0.pak от мода rogue. Создадим каталог ~/.nexuiz/rogue и скопируем туда pak-файл. Внимание: важно чтобы имя файла состояло только из строчных букв!

Теперь запустим игру rogue из командной строки таким образом:

nexuiz -game rogue

Запустить новую игру, сохранять и загружать игры можно точно таким же образом, как было описано выше.

Написать автору