Table of Contents

На дворе 2021 год. Я захотел поиграть в quake2 с ботами.
Система - Ubuntu 20.10
Устанавливаем Quake2 и то что нужно, чтобы его запустить:

sudo apt-get install quake2 game-data-packager innoextract

Собираем пакет с данными:

game-data-packager quake2 --package quake2-full-data ~/Games/q2/

И устанавливаем его

sudo apt-get install ~/quake2-full-data_65_all.deb

В результате установится Yamagi Quake2.
Исполняемый файлик будет тут: /usr/lib/yamagi-quake2/quake2
Директория с данными - /usr/share/games/quake2/

CTF + Deathmatch на базе 3zb2

https://github.com/DirtBagXon/3zb2-zigflag

git clone https://github.com/DirtBagXon/3zb2-zigflag.git
cd 3zb2-zigflag/
sudo cp -R 3zb2 /usr/share/games/quake2/3zb2
make
sudo cp release/game.so /usr/share/games/quake2/3zb2/game.so
sudo cp release/game.so /usr/share/games/quake2/3zb2/gamex86.so
sudo cp release/game.so /usr/share/games/quake2/3zb2/gamex64.so

Всё. Можно запускать deathmatch:

/usr/lib/yamagi-quake2/quake2 -datadir /usr/share/games/quake2/ +set basepath /usr/share/games/quake2/ +set game 3zb2 +set deathmatch 1 +set autospawn 10 +exec game.cfg

Апгрейд графики Quake2

https://www.moddb.com/mods/quake-2-xp
http://quakegate.ru/forum/topic741/
https://sourceforge.net/projects/quake2xp/files/linux%20release/
https://github.com/thro/quake2xp

Заставить работать на встроенной карте AMD Ryzen 4800H не удалось о чем честно написано тут: http://quakegate.ru/forum/topic893/! Собрать quake2xp на текущей версии Ubuntu 21.10 удалось не сразу. Понадобилось обновить скрипт waf и поставить старенький gcc8.
С текущим gcc11 возникала ошибка линкера collect2:

[ 49/244] Linking build/baseq2/gamexp.so
...
collect2: error: ld returned 1 exit status

Ставим то что понадобится для сборки:

sudo apt-get install build-essential libvorbis-dev libdevil-dev libsdl1.2-dev libopenal-dev

Ставим gcc8:

sudo apt-get update && sudo apt-get install build-essential software-properties-common -y && sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && sudo apt-get update && sudo apt-get install gcc-8 g++-8 -y && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-8 && gcc -v  

Клонируем исходники:

git clone https://github.com/thro/quake2xp

И свежий waf:

git clone https://gitlab.com/ita1024/waf.git

Собираем waf:

cd waf/
python3 ./waf-light configure build

Копируем свежий waf в директорию с исходниками quake2xp

cp ./waf ../quake2xp/waf

Конфигурируем сборку. При необходимости указываем нужный префикс для инсталляции (дефолтный - /usr/local) с помощью параметра

python waf configure

или

python waf configure --prefix=$HOME/local

Собираем:

python waf -v -j1

Устанавливаем исполняемые компоненты:

python waf install

В итоге по-дефолту все установится в /usr/local:

+ install /usr/local/share/quake2xp/baseq2/gamexp.so (from build/baseq2/gamexp.so)
+ install /usr/local/share/quake2xp/xatrix/gamexp.so (from build/xatrix/gamexp.so)
+ install /usr/local/share/quake2xp/rogue/game.so (from build/rogue/game.so)
+ install /usr/local/bin/quake2xp (from build/quake2xp)

Скачиваем файлики необходимые для работы quake2xp: https://disk.yandex.ru/d/RP5yRSM-sx5ck или https://disk.yandex.ru/d/OtMgvf03VDXcew
Распаковываем и копируем куда надо:

sudo cp ~/Downloads/quake2xp/* /usr/local/share/quake2xp/

Копируем файлы из оригинальной игры:

sudo cp -R /usr/share/games/quake2/baseq2/* //usr/local/share/quake2xp/baseq2/

Клонируем и копируем шейдеры

svn checkout svn://svn.code.sf.net/p/quake2xp/code/glsl glsl
sudo cp -R ./glsl /usr/local/share/quake2xp/baseq2/

Клонируем и копируем карты освещения:

svn checkout svn://svn.code.sf.net/p/quake2xp/code/maps maps
svn checkout svn://svn.code.sf.net/p/quake2xp/code/mapsx mapsx
sudo cp -r ./maps/* //usr/local/share/quake2xp/baseq2/maps/
sudo cp -r ./maps/* /usr/local/share/quake2xp/baseq2/maps/

Фиксим права на листинг директорий:

sudo chmod a+x /usr/local/share/quake2xp/baseq2/
sudo chmod a+x /usr/local/share/quake2xp/baseq2
sudo chmod a+x /usr/local/share/quake2xp/baseq2/infantry
sudo chmod a+x /usr/local/share/quake2xp/baseq2/maps
sudo chmod a+x /usr/local/share/quake2xp/baseq2/models/
sudo chmod a+x /usr/local/share/quake2xp/baseq2/pics
sudo chmod a+x /usr/local/share/quake2xp/baseq2/players
sudo chmod a+x /usr/local/share/quake2xp/baseq2/soldier
sudo chmod a+x /usr/local/share/quake2xp/baseq2/video

3zb2

Вероятно лучшие боты для quake2 - https://github.com/yquake2/3zb2

crbots

Боты crbot (с исходниками) - https://www.angelfire.com/mt2/quakebots/crbotandsrc.tar.gz
Для того, чтобы можно было запустить ботов нужно скопировать папку с ботами в директорию с данными игры:

sudo cp -R./crbot /usr/share/games/quake2/

Исполняемый файл с ботами должен иметь имя game.so. Я попробывал перемиеновать уже собранный файл gamei386.so в game.so, но ожидаемо получил сообщениео не несовместимости:

/usr/share/games/quake2/crbot/game.so

Устанавливаем немного зависимостей

sudo apt-get install libc6-dev build-essential

Дальше берем Makefile для сборки под linux (из папки crbot/crbotsource/RESOURCE/Linux Makefile/ ) и копируем его в папку пробуем собрать. И они нормально собираются, но файлик gamex86_64.so нужно переименовать в game.so.
Вот подправленные crbot, который нормально собираются современными компиляторами: crbot_patched.tar.gz