Установка выделенного сервера 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       *:*