Как настроить сервер Quake3 на Linux Содержание
Copyright
Disclaimer
Системные требования
Дистрибутив
Установка quake3 и модов к нему
Запуск сервера
Тонкая настройка
FAQ
Copyright
Источник - http://www.cyberfight.ru/offline/articles/29248/
Disclaimer
Этот документ предоставляется "как есть". Автор не несет ответственности за любой вред (моральный или физический), который может быть нанесён оборудованию или людям в результате прочтения этого документа.
Системные требования
Linux с ядром версии 2.2.9 или выше, glibc-2.1 или выше
Процессор от Pentium II 266MHz
128 MB памяти
500 MB места на жестком диске
Соединение с интернетом и/или выход в локальную сеть
Если вы хотите играть с того же компьютера, на котором запущен сервер - требования к компьютеру будут намного выше.
Дистрибутив
Поставьте ваш любимый дистрибутив Linux. Какой именно - практически не имеет значения. Главное - проследите, чтобы это была одна из последних его версий. Инструкции по установке вы всегда можете получить на сайте выбранного дистрибутива. Для новичков могу порекомендовать Slackware, SuSE, Red Hat.
Установка quake3
Лирическое отступление о правах доступа
В Linux права доступа организованы отлично от того, что вы могли видеть раньше в других ОС. Существует суперпользователь (root), и права доступа для него не проверяются. То есть root имеет полный доступ ко всей системе. Для каждого файла существуют три правила доступа: владелец (owner), группа пользователей (group), и все остальные (others). В каждом из этих правил есть права на чтение файла (read), запись в него (write), и запуск файла на исполнение (execute).
Мы будем проводить установку из-под пользователя root, а запуск сервера из-под обычного пользователя (назовём его "user").
Установка дистрибутива quake3
Скачать дистрибутив можно с разных серверов. Он включает в себя только обновления и исполняемые файлы для запуска клиента и сервера под нужной нам ОС. Эти файлы распространяются совершенно бесплатно, и мы возьмём их с официального сервера id Software. Размер инсталлятора - около 30 МБ.
root@host # wget ftp://ftp.idsoftware.com/idstuff....x86.run
Даём скачанному файлу права для запуска. Запускаем его.
root@host # chmod +x linuxq3apoint-1.32b-3.x86.run
root@host # ./linuxq3apoint-1.32b-3.x86.run
В зависимости от того, в каком режиме (графическом или консольном) вы работаете, вы увидите различное представление одного и того же инсталлятора.
Устанавливая quake3, убедитесь, что выделена опция "Dedicated server".
Установка карт, модов, дополнений
Как говорилось выше - в релизе есть далеко не всё, что нам надо. Папку baseq3 можно взять с официального диска с игрой. Не бойтесь переписать её поверх той, что была только что поставлена. Все остальные файлы и папки - osp, cpma - можно взять из любой работающей копии игры (моды обычно распространяются бесплатно).
В дальнейшем будем считать, что Quake III установлен в /usr/local/games/quake3
Запуск сервера
Дальнейшие действия проводим из-под аккаунта обычного пользователя. Хотя мы и полностью уверены, что quake3 не нанесёт никакого вреда системе, будучи запущенным от суперпользователя, но всегда, когда расширенные права не нужны, лучше ими не пользоваться.
Простейший случай
Заходим в /usr/local/games/quake3, и запускаем сервер с нужными нам параметрами.
user@host $ cd /usr/local/games/quake3
user@host $ ./q3ded +set fs_game osp +set sv_strictauth 0 +set sv_pure 0 +map q3dm6
В консоли вы увидите полный лог сервера, и после загрузки появится возможность вводить команды. Терминал, из которого был запущен сервер станет обычной консолью, к которой вы уже привыкли.
О хранении файлов и логов сервера
Linux Quake III хранит файлы совсем не так, как его windows-версия. Если в windows всё хранится в том месте, куда проинсталлирована игра, то в Linux есть два места, откуда можно брать конфиги, моды и прочие нужные файлы. Первое - как всегда. Второе - домашняя директория пользователя. В ней при первом запуске создается директория ".q3a".
Допустим, вы запустили сервер с модом osp, и выполняете на сервере конфиг myServer.cfg. Вы пишете в консоли сервера "exec myServer.cfg". Сервер ищет его в следующем порядке:
/home/user/.q3a/osp/myServer.cfg
/home/user/.q3a/baseq3/myServer.cfg
/usr/local/games/quake3/osp/myServer.cfg
/usr/local/games/quake3/baseq3/myServer.cfg
Если вы (в той же ситуации) записываете конфиг командой "writeconfig newServer.cfg", то он будет записан только в "/home/user/.q3a/osp/newServer.cfg".
Регистр символов имеет значение. Конфиги myserver.cfg и myServer.cfg - совершенно разные файлы. По той же причине файл pak0.PK3 не будет найден, и сервер вылетит с ошибкой.
Пути надо писать только с использованием прямого слеша (/).
/usr/local/games/quake3 - правильно.
usrlocalgamesquake3 - ошибка.
Тонкая настройка
Скрипт для запуска
Вам наверняка надоест каждый раз печатать кучу параметров для командной строки сервера. Этот процесс можно легко автоматизировать, создав простой скрипт. У пользователя нет прав писать в директорию /usr/local/games/quake3, поэтому создадим скрипт в домашней директории. Назовём его 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
Во второй строке мы переходим в то место, где лежат файлы для сервера. q3ded ищет файлы данных в домашней директории, затем в текущей директории. Поэтому нам надо перейти туда, чтобы программа всё нашла.
Для переноса параметров на новую строку можно поставить обратный слеш в конце предыдущей строки.
Продвинутые параметры
Чего не хватает в простом скрипте? Во-первых, при закрытии консоли, в которой скрипт был запущен, закроется и сервер. Это неудобно, если вы хотите, чтобы ваш сервер работал 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
Теперь сервер запускается и останавливается командами:
user@host $ /home/user/q3.sh start
user@host $ /home/user/q3.sh stop
Эти команды ничего не выводят на экран. О деятельности сервера можно судить по логам, которые находятся в /home/user/.q3a-server1/osp/games.log. Соответственно, конфиги сервера теперь надо класть в его новую домашнюю директорию, то есть /home/user/.q3a-server1/osp.
Запуск нескольких серверов
В этом случае имеет смысл изменить названия исполняемых файлов, которые запускаются скриптом. Нужно создать файлы q3ded.somethingnew, которые будут содержать то же, что и исходный q3ded. Сделаем это с помощью механизма "символических ссылок".
root@host # cd /usr/local/games/quake3
root@host # ln -s q3ded q3ded.27961
Это удобно тем, что если вам понадобится изменить q3ded (например, при выходе новой версии), то будет достаточно изменить только один файл, а все ссылки на него менять не надо. Кроме того, такой метод сохраняет место на жестком диске.
Не забудьте изменить q3ded на q3ded.27961 в двух местах в скрипте, который запускает сервер. Также можно сменить порт, домашнюю директорию и конфиг для каждого из скриптов.
FAQ
Клиенты не могут приконнектиться к серверу.
Проверьте, чему равны переменные sv_pure, sv_punkbuster, sv_strictauth. Их лучше всего выставлять равными нулю.
Проверьте, работает ли на компьютерах firewall. Возможно, сервер работает корректно, но Linux не принимает соединения на 2796x порты. Также могут быть проблемы с подключением к интернету как на клиенте, так и на сервере.