Установка выделенного сервера Urban Terror с ботами на FreeBSD
Urban Terror - потрясающая и очень динамичная “стрелялка”! Его преимущества не только в скорости и динамике игры, но и в том, что он доступен бесплатно, занимает относительно мало места и весьма нетребователен к ресурсам. Через некоторое время, поиграв вдоволь, появляется желание повесить сервер с ботами и у себя в локальной сети. Итак, у нас для этого есть сервер под управлением FreeBSD и немного времени на установку. На Linux все устанавливается аналогично, но со своим набором команд.
Установка выделенного сервера
Идем в соответствующий каталог:
cd /usr/ports/games/iourbanterror/
Задаём команду:
make WITHOUT_CLIENT=1 \ WITHOUT_GAMELIBS=1 \ WITH_DEDICATED=1 \ WITHOUT_CURL=1 \ WITHOUT_OPENAL=1 \ WITHOUT_MUMBLE=1 \ WITHOUT_VORBIS=1 \ WITH_TEAMARENA=1 install clean
Тут меня ждала небольшая проблемка. Дело в том, что будет скачиваться дата-архив игры, который весит 1024МБ. С моим достаточно слабым каналом это могло быть долгим процессом часа на два. Но что ещё хуже – чем дольше качалось, тем больше «умирало». Скорость постепенно снижалась буквально к четверти разрешенной. Однако, у нас в консоли высветилась ссылка на архив и почему бы этим не воспользоваться. Переходим в каталог со скачанными файлами
cd /usr/ports/distfiles/
Устанавливаем wget:
pkg_add -r wget
Закачиваем им ссылку (такая высветилась в моём случае):
wget -c ftp://ftp.snt.utwente.nl/pub/games/urbanterror/full_install/linux_or_mac/UrbanTerror411.zip
Таким образом закачка прошла, используя практически весь мой канал. Конечно, ещё будет закачиваться и linuxq3apoint-1.32b-3.x86.run на 29 MB, но это уже не так и много.
Создание пользователя для сервиса и конфигурационных файлов
А так же установим screen, который поможет запускать нам сервис в бэкграунде и при необходимости возвращаться к нему
pkg_add –r screen
Далее нам нужно создать пользователя, от имени которого мы и будем запускать этот сервис
pw user add urban -m
И переходим в эту учётную запись
su - urban
Создадим нужный каталог для конфигов и перейдём в него:
mkdir -p .ioUrbanTerror/q3ut4 cd .ioUrbanTerror/q3ut4
Он нам нужен для того, чтобы разместить в нём 3 конфигурационных файла: server.cfg , mapcycle.txt и bots.cfg
- server.cfg
sets "Admin" "Wikiadmin from wikiadmin.net" sets "Email" "wikiadmin@wikiadmin.net" set rconpassword "Yjhvfkmysqgfc" set g_gametype "3" set sv_hostname "Urban server on wikiadmin.net" set g_respawndelay "1" set bot_enable "1" set g_teamautojoin "1" set g_maxteamkills "5" set g_respawnprotection "3" // (restart/map/nextmap/cyclemap) set g_allowVote "536870926" set g_log "" set g_logroll "0" set fraglimit "50" set timelimit "15" // Startup map map ut4_turnpike // Add bots exec bots.cfg
Не забудьте поменять настройки на свои! И обратите особое внимание на set g_gametype. Вот его значения, выбирайте по вкусу:
0=FreeForAll 3=TeamDeathMatch 4=Team Survivor 5=Follow the Leader 6=Capture and Hold 7=Capture The Flag 8=Bombmode
mapcycle.txt
ut4_turnpike ut4_abbey ut4_prague ut4_mandolin ut4_algiers ut4_austria ut4_sanc ut4_riyadh ut4_thingley
Здесь у нас указаны только те карты, где боты бегают. Если есть какие-либо ещё – подскажите.
bots.cfg
kick allbots addbot boa 2 blue 25 "Psih" addbot chicken 2 blue 25 "Shuza" addbot cockroach 2 blue 25 "Idiot" addbot goose 2 blue 25 "Debil" addbot boa 2 blue 25 "Botan" addbot chicken 2 blue 25 "Gomer" addbot cockroach 2 blue 25 "Bred" addbot goose 2 blue 25 "Bolnoy"
Уровень сложности бота - это цифра, идущая в 3 столбце. Самые простые 1 и самые сложные - 5. Тут для примера установлен 2 уровень, но поверьте - слишком просто. Создание скрипта запуска с перезапуском в случае обрушения процесса
Теперь в домашней директории пользователя urban создайте скрипт ut.sh
#!/bin/bash myExit() { kill $$ exit $? } trap myExit SIGINT while true do /usr/local/bin/ioUrTded \ +set fs_game q3ut4 \ +set dedicated 1 \ +set net_ip 10.0.0.20 \ +set net_port 27960 \ +set com_hunkmegs 256 \ +exec server.cfg echo "server crashed on `date`" > /usr/home/urban/last_crash.txt done
Не забывайте поменять IP на свой! Далее дайте скрипту права на запуск
chmod 700 start.sh
Запуск сервиса и проверка
И теперь от имени root зайдите в screen, перейдите в пользователя urban (su – urban) и запускайте сервис
./ut.sh
Если пробежала куча строк и не было выхода - значит всё ок. Выходите из screen (Ctrl+A и D) и проверьте, слушает ли ваш сервер нужный нам порт:
[sockstat](/sockstat/) -4 | [grep](/grep/) 27960
вывод:
urban ioUrTded 68694 7 [UDP](/udp/)4 10.0.0.20:27960 *:*