На дворе 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/
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
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
Вероятно лучшие боты для quake2 - https://github.com/yquake2/3zb2
Боты 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