поднятие выделеного игрового сервера Quake 3 ещё проще, чем для CS 1.6.
(база: AMD Sempron 2800+ 2GHz, 768Mb, 80Gb, Ubuntu server 9.04)
1. заходим в систему под рутом и скачиваем дистрибутив с официального сервера idSoftware (29Mb):
# wget ftp://ftp.idsoftware.com/idstuff/quake3/linux/linuxq3apoint-1.32b-3.x86.run
2. даём права скачанному файлу на запуск:
# chmod +x linuxq3apoint-1.32b-3.x86.run
3. запускаем его:
# ./linuxq3apoint-1.32b-3.x86.run
в зависимости от того, в каком режиме (графическом или консольном) вы работаете, вы увидите различное представление одного и того же инсталлятора.
и да. устанавливая quake 3, убедитесь, что выделена опция "Dedicated server".
по умолчанию игра устанавливается в
/usr/local/games/quake3.
в релизе есть далеко не всё, что нам надо.
а надо нам файл
pack0.pk3. взять его можно с диска с игрой или скопировать из уже установленной игры.
4. скопировать pack0.pk3 в папку на сервере
baseq:
# cp /path/pack0.pk3 /path/with/game/baseq/
дальнейшие действия проводим из-под аккаунта обычного пользователя. хотя мы и полностью уверены, что quake3 не нанесёт никакого вреда системе, будучи запущенным от суперпользователя, но всегда, когда расширенные права не нужны, лучше ими не пользоваться.
5. заходим в /usr/local/games/quake3, и запускаем сервер с нужными нам параметрами:
$ cd /usr/local/games/quake3
$ ./q3ded +set fs_game osp +set sv_strictauth 0 +set sv_pure 0 +map q3dm6
в консоли вы увидите полный лог сервера, и после загрузки появится возможность вводить команды. терминал, из которого был запущен сервер станет обычной консолью, к которой вы уже привыкли.
6. вам наверняка надоест каждый раз печатать кучу параметров для коммандной строки сервера. этот процесс можно легко автоматизировать, создав простой скрипт. у пользователя нет прав писать в директорию /usr/local/games/quake3, поэтому создадим скрипт в домашней директории. назовём его
q3.sh:
$ nano -w /home/path/q3.sh
#!/bin/bash
cd /usr/local/games/quake3/
./q3ded +set com_hunkmegs 32 +set net_port 27960 +set dedicated 1 +set vm_game 2 +set vm_cgame 2 +set vm_ui 2 +set fs_game osp
+set sv_strictAuth 0 +set sv_punkbuster 0 +set sv_lanForceRate 1 +set sv_maxrate 15000 +exec 1v1.cfg
7. даём скрипту права на исполнение:
$ chmod +x q3.sh
8. чего не хватает в простом скрипте? во-первых, при закрытии консоли, в которой скрипт был запущен, закроется и сервер. это неудобно, если вы хотите, чтобы ваш сервер работал 24/7. во-вторых, если таким скриптом мы запустим два сервера, то их логи будут писаться в один и тот же файл. впоследствии их будет невозможно разобрать.
первая проблема решается очень просто. мы будем запускать сервер в фоновом режиме. предварительно надо убедиться, что в конфигах и параметрах командной строки есть всё, что нам нужно. в конфиге необходимо прописать rconPassword, потому что это будет единственный способ управления сервером. сервер запускается в фоновом режиме добавлением "
<&/dev/null &" в конце строки с параметрами.
решение второй проблемы тоже простое, но оно может показаться нетривиальным. логи сервера пишутся в домашнюю директорию пользователя. в Linux-версии Quake III есть специальная переменная, которая определяет местоположение домашней директории. это переменная fs_homepath. Мы присвоим ей значение /home/user/.q3a-server1.
кроме того добавим удобный интерфейс для запуска и остановки сервера. Теперь скрипт будет выглядеть так:
#!/bin/bash
cd /usr/local/games/quake3/
case "" in
start)
nice -n 0 ./q3ded +cvar_restart
+set com_hunkmegs 32
+set net_port 27960
+set dedicated 1
+set vm_game 2
+set vm_cgame 2
+set vm_ui 2
+set fs_game osp
+set fs_homepath /home/quake3/.q3a-server1
+set sv_strictAuth 0
+set sv_punkbuster 0
+set sv_lanForceRate 1
+set sv_maxrate 15000
+exec 1v1.cfg >&/dev/null &
exit
;;
stop)
killall q3ded
;;
*)
echo "Usage: "
exit 1
esac
exit 0
теперь сервер запускается и останавливается командами:
$ /home/user/q3.sh start
$ /home/user/q3.sh stop
на этом всё. благодарю за внимание. по вопросам допиливания статьи пишите мне в жаббер.
-= статья про выделенный сервер
CS: Source (
https://forum.ubuntu.ru/index.php?topic=68335.0)=-