Создать сервер quake 3 linux

Обновлено: 08.07.2024

Культовая компьютерная игра в жанре многопользовательского шутера от первого лица, изданная компанией id Software 2 декабря 1999 года, третья в серии игр Quake и первая, не имеющая полноценного однопользовательского режима.

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, убедитесь, что выделена опция "Dedicated server".

Установка карт, модов, дополнений
Как говорилось выше - в релизе есть далеко не всё, что нам надо. Папку baseq3 можно взять с официального диска с игрой. Не бойтесь переписать её поверх той, что была только что поставлена. Все остальные файлы и папки - osp, cpma - можно взять из любой работающей копии игры (моды обычно распространяются бесплатно).

В дальнейшем будем считать, что Quake III установлен в /usr/local/games/quake3

Запуск сервера

Дальнейшие действия проводим из-под аккаунта обычного пользователя. Хотя мы и полностью уверены, что quake3 не нанесёт никакого вреда системе, будучи запущенным от суперпользователя, но всегда, когда расширенные права не нужны, лучше ими не пользоваться.

Простейший случай
Заходим в /usr/local/games/quake3, и запускаем сервер с нужными нам параметрами.

$ cd /usr/local/games/quake3
$ ./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.c fg

Если вы (в той же ситуации) записываете конфиг командой "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 (не забудьте дать ему права на исполнение). Содержимое должно быть таким:

./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.

Кроме того добавим удобный интерфейс для запуска и остановки сервера. Теперь скрипт будет выглядеть так:

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

Эти команды ничего не выводят на экран. О деятельности сервера можно судить по логам, которые находятся в /home/user/.q3a-server1/osp/games.log. Соответственно, конфиги сервера теперь надо класть в его новую домашнюю директорию, то есть /home/user/.q3a-server1/osp.

Запуск нескольких серверов
В этом случае имеет смысл изменить названия исполняемых файлов, которые запускаются скриптом. Нужно создать файлы q3ded.somethingnew, которые будут содержать то же, что и исходный q3ded. Сделаем это с помощью механизма "символических ссылок".

Это удобно тем, что если вам понадобится изменить q3ded (например, при выходе новой версии), то будет достаточно изменить только один файл, а все ссылки на него менять не надо. Кроме того, такой метод сохраняет место на жестком диске.

Не забудьте изменить q3ded на q3ded.27961 в двух местах в скрипте, который запускает сервер. Также можно сменить порт, домашнюю директорию и конфиг для каждого из скриптов.

Клиенты не могут приконнектиться к серверу.
Проверьте, чему равны переменные sv_pure, sv_punkbuster, sv_strictauth. Их лучше всего выставлять равными нулю.

Проверьте, работает ли на компьютерах firewall. Возможно, сервер работает корректно, но Linux не принимает соединения на 2796x порты. Также могут быть проблемы с подключением к интернету как на клиенте, так и на сервере.

Звезда не активна
Звезда не активна
Звезда не активна
Звезда не активна
Звезда не активна

Заходим в систему как root пользователь (как это сделать читаем в статье Ubuntu server настройка сети) и скачиваем дистрибутив с официального сервера idSoftware (около 29Mb):

Загрузка и установка пакета сервера Quake 3 (3 команды)

В зависимости от того, в каком режиме (графическом или консольном) вы работаете, вы увидите различное представление одного и того же инсталлятора. Устанавливая quake 3, убедитесь, что выделена опция "Dedicated server". По умолчанию игра устанавливается в /usr/local/games/quake3. В релизе есть далеко не всё, что нам надо, а надо нам файл "pack0.pk3". Взять его можно с диска с игрой или скопировать из уже установленной игры.

скопируем pack0.pk3 в папку на сервере baseq (1 команда)

cp /path/pack0.pk3 /path/with/game/baseq/

Дальнейшая установка может происходит под обычным пользователем.

Запуск сервера Quake 3

Запуск сервера /usr/local/games/quake3 с нужными нам параметрами (2 команды)

cd /usr/local/games/quake3
./q3ded +set fs_game osp +set sv_strictauth 0 +set sv_pure 0 +map q3dm6

в консоли вы увидите полный лог сервера, и после загрузки появится возможность вводить команды. Терминал, из которого был запущен сервер станет обычной консолью, к которой вы уже привыкли. Вам наверняка надоест каждый раз печатать кучу параметров для коммандной строки сервера. Этот процесс можно легко автоматизировать, создав простой скрипт. у пользователя нет прав писать в директорию /usr/local/games/quake3, поэтому создадим скрипт в домашней директории. назовём его q3.sh:

Создаем скрипт (1 командf)

nano -w /home/path/q3.sh

В открывшемся документе прописываем команды

Даем скрипту права на исполнение (1 команда)

Модификация скрипта сервера Quake 3

Запуск сервера Quake 3 в фоновом режиме

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 1500
+exec 1v1.cfg >&/dev/null &
exit
;;
stop
killall q3ded
;;
*)
echo "Usage: "
exit 1
esac
exit 0

Запуск сервера Quake 3: (1 команда)

Остановка сервера Quake 3: (1 команда)

Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.

Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.


Это руководство по настройке выделенного сервера Quake 3 Arena в Linux. Он будет работать практически с любым вариантом Linux с небольшими изменениями или без них.

Этот сервер будет автоматически запускать игру и автоматически переключать карты. Если вы оставите сервер запущенным с ботами, они будут продолжать сражаться, пока вы не подключены!

Установка

Устанавливаем ioquake3-server, запустив:

Переключаемся на только что созданного пользователя:

Сервер должен выдать:

Это значит что не хватает .pk3

После запуска сервер создаст .q3a каталог в домашнем каталоге /home/quake3. Скопируем туда файлы Quake 3 Arena из каталога baseq3. (Не обязательно. Можно скопировать файлы Quake 3 Team Arena. Находятся в каталоге missionpack)

Теперь для работы все готово. Осталось настроить. Можно поробовать запустить командой:

И закрыть crtl + c

Конфигурация

Для удобной настройки можно использовать следующие файлы:

  1. autoexec.cfg контролирует самые основные параметры сервера
  2. server.cfg определяет тип игры и большинство игровых опций
  3. bots.cfg позволяет легко настроить ботов, играющих на сервере
  4. levels.cfg настраивает карты и их порядок

Файл autoexec.cfg

set vm_game 2 // хз
set vm_cgame 2 // хз
set vm_ui 2 // хз
set dedicated 1 // хз
set com_hunkmegs 128 // оперативная память для сервера
set net_port 27960 // сетевой порт

Файл server.cfg

seta g_gametype 4 // 0: FFA, 1: Tourney, 2: FFA, 3: TD, 4: CTF
seta g_teamAutoJoin 0 // 0: переход в режим наблюдателя, 1: автоматически присоединяться к команде
seta g_teamForceBalance 0 // 0: свободный выбор, 1: играть в слабой команде
seta timelimit 30 // лимит времени в минутах
seta capturelimit 8 // предел захвата CTF
seta fraglimit 0 // ограничение убийств

//Командные настройки закомментированы

//seta g_gametype 3 // 0: FFA, 1: Tourney, 2: FFA, 3: TD, 4: CTF
//seta g_teamAutoJoin 0 // 0: переход в режим наблюдателя, 1: автоматически присоединяться к команде
//seta g_teamForceBalance 1 // 0: свободный выбор, 1: играть в слабой команде
//seta timelimit 15 // лимит времени в минутах
//seta fraglimit 25 // ограничение убийств

// Настройки для всех закомментированы

//seta g_gametype 0 // 0: FFA, 1: Tourney, 2: FFA, 3: TD, 4: CTF
//seta timelimit 10 // лимит времени в минутах
//seta fraglimit 15 // ограничение убийств

Файл bots.cfg

seta bot_enable 1 // разрешить ботов н сервере
seta bot_nochat 1 // отключить чат ботов
seta g_spskill 4 // умные боты (от 1 до 5)
seta bot_minplayers 5 // минимум ботов на сервере

Файл levels.cfg


За последние 16 лет, с момента выхода первой версии, q3 изменился не сильно. Не поймите неправильно — игра менялась. Развились и канули в лету турнирные моды (Привет, osp, cmpa — мы вас помним!), родился quake live в браузере, перебрался в steam. Чемпионатов стало меньше, игроков на серверах — тоже.

Но бесшабашная динамика осталась практически неизменной. В современной инкарнации, Quake Live — всё та же старая-добрая игра, вобравшая в себя все лучшие наработки за прошедшие годы.

И хоть серверов сейчас намного больше, чем игроков — данный очерк скорее претендует на демонстрацию возможностей, и не призывает их бездумно плодить. Но, если вы просто хотите свой небольшой сервер для игры с друзьями долгими зимними вечерами, и не знали с чего начать, или Вам просто интересно, как сейчас происходит процесс установки — добро пожаловать под кат!

Инструкция актуальна для Ubuntu Server от 14.04 и выше. (в других дистрах установка minqlx может быть усложнена отсутствием python35 из коробки).

Начнём с тривиальных вещей — поставим полезный софт, откроем порты на firewall. Команды вводятся от имени root.


порты udp использует сервер игры, tcp — сервер статистики qlstats

Установим дополнительный софт и зависимости


Очередь за установкой собственно сервера Quake Live через Стим


После недолгого ожидания, сервер загружен в директорию ql и готов к работе. Но самое интересное только начинается — для полноценной работы понадобится установить и настроить minqlx. Список команд сервера доступен на GitHub.


Настроим автообновление сервера, иначе через некоторое время клиенты не смогут к нему присоединиться:


После установки сервера — логично поставить плагины. Не буду описывать их все, остановлюсь на тех, что качаются отдельно и не входят в стандартную поставку:

branding — изменение надписей, которые показываются при подключении к серверу.
q3resolver — сопоставление старых названий карт из q3 с новыми названиями, работает только для dm и ctf карт, но можно вписать дополнительные, или задать свои шорткаты.
ratinglimiter — позволит ограничить вход на сервер игрокам с рейтингом ниже или выше заданного; для использования в конфиге должен быть включен модуль balance.
changemap — меняет карту на заданную в конфиге, когда на сервере никого нет.
pingspec — вежливо просит покинуть сервер (kick) игроков с пингом выше заданного значения.
clanspinner — свистелка для анимации клантега, просто чтобы показать, что это возможно :)
autorestart — перегружает сервер в заданное время, когда на нём нет игроков.
custom_vote — накладывает ограничения на определённые режимы голосования в игре.
полный список плагинов смотрите вот тут


Дело за малым — создаём файл для запуска сервера


Обратите внимание, конфиг сервера должен находиться в директории ./baseq3/

Имя конфига — server-1.cfg для сервера на порту 27960, server-2.cfg для сервера на порту 27961 и т.д. Количество запущенных серверов регулируется через supervisor, об этом ниже.

Сперва нужно подготовить файл access.txt и вписать в него 17-значный стим-id (тот, что в урл при переходе на ваш профиль в стим) с указанием предоставить админ-доступ.

Делается это очень просто:


В этом же файле можно прогнать неугодных (чтобы забанить игрока — нужно написать id|ban), или поощрить достойных (id|mod — модератор).

В данном случае, все сервера будут использовать один список доступа, но можно сделать и разные, по аналогии с конфигами.

Файлы можно подключать прямо во время игры:


но в этом случае ql будет их искать в директории /home/ql/номерпорта/baseq3

Чтобы сервер работал — нужен конфиг:


Осталось совсем немного! На всякий случай, переопределим владельца в директории /home/ql:


Сервер настроен, осталось убедиться, что он будет работать всегда, когда потребуется. Не зря же мы ставили supervisor?

данный конфиг запустит 3 инстанса quake live с портами 27960, 27961, 27962, и будет перезапускать их в случае зависания, а так же запускать при перезагрузке сервера. Для управления вручную используется supervisorctl start/stop/restart all/ql_1

Чуть не забыл! Для добавления контента, отредактируйте файл /home/ql/baseq3/workshop.txt.


Контент вот здесь. Айди проще всего скопировать из url понравившегося дополнения. Кстати, тут есть старый добрый дефраг со всеми возможными картами ;)

Не забудьте перезапустить сервера после добавления новинок!


Пожалуй, на этом всё. Надеюсь, эта информация будет полезной — полноценного howto по установке серверов Quake Live на русском я не встречал, что и сподвигло на написание этой заметки.

До 1500 — обычные игроки, от 1600 и выше — те, кто играют почаще и получше, от 2000 — профи и киборги-убийцы, отдавшие богу квейка мозг, сердце, и большую часть свободного времени :)

Читайте также: