Vanilla Quake III и q3ded: полное руководство по серверу 1.32
Версии и protocol 68, запуск q3ded, server.cfg, карты, RCON, логи, безопасность и отличие vanilla от ioquake3 и OSP.
MadWars · 28.07.2026Область действия
Это руководство описывает оригинальный Quake III Arena 1.32/1.32b и финальный патч 1.32c. Здесь нет OSP-команд и расширений ioquake3, если они не помечены отдельно.
- Q3 1.30 использует protocol 66;
- Q3 1.31 — protocol 67;
- Q3 1.32, 1.32b и 1.32c — protocol 68;
- 1.32c от 8 мая 2006 года — минимальная разумная версия оригинального бинарника для Интернета;
- GPL-репозиторий id Software основан на 1.32b и остаётся первичным источником поведения vanilla.
Для нового публичного сервера безопаснее актуальный ioq3ded с оригинальными данными baseq3. Оригинальный q3ded полезен для совместимости и истории, но старые бинарники не следует выставлять в Интернет без финальных исправлений.
Что нужно серверу
Движок с открытым исходным кодом не включает коммерческие данные игры. Нужны законно полученные:
baseq3/pak0.pk3из купленной Quake III Arena;- официальные patch data
pak1.pk3—pak8.pk3; - собственные карты и моды — только с правом распространения.
Если сервер пишет Couldn't load default.cfg, почти всегда он не видит baseq3/pak0.pk3 или запущен с неправильным fs_basepath.
q3ded, quake3 и ioq3ded
q3ded/linuxq3ded— оригинальный выделенный сервер id Software;quake3 +set dedicated 2— полный оригинальный клиент в dedicated-режиме;ioq3ded— современный сервер ioquake3, совместимый по сети с финальной линией 1.32c;q3dedне является OSP: OSP подключается отдельным+set fs_game osp.
Минимальный запуск
Оригинальный Linux dedicated:
./linuxq3ded +set dedicated 2 +set net_port 27960 +set com_hunkMegs 64 +exec server.cfg
Оригинальный полный binary:
./quake3 +set dedicated 2 +set net_port 27960 +exec server.cfg
Современный ioquake3:
./ioq3ded.x86_64 +set dedicated 2 +set net_port 27960 +exec server.cfg
dedicated 1 — LAN и прямое подключение. dedicated 2 — публичный сервер с heartbeat master-серверам. Без команды map сервер останется в консоли и не начнёт матч.
Критические параметры лучше задавать до +exec:
dedicated;net_ip,net_port;fs_basepath,fs_homepath,fs_game;com_hunkMegs;bot_enable.
server.cfg не исполняется автоматически по имени. Автоматически читаются default.cfg, q3config.cfg и autoexec.cfg; серверный файл нужно вызвать через +exec server.cfg.
Базовый server.cfg
// Identity and slots
set sv_hostname "^1MadWars ^7Vanilla Q3"
set sv_maxclients "12"
set sv_privateClients "0"
set sv_privatePassword ""
// Access
set g_password ""
set rconPassword "CHANGE_TO_A_LONG_RANDOM_SECRET"
// Integrity and downloads
set sv_pure "1"
set sv_allowDownload "0"
// Network
set sv_fps "20"
set sv_maxRate "25000"
set sv_minPing "0"
set sv_maxPing "0"
set sv_floodProtect "1"
set sv_lanForceRate "1"
// FFA
set g_gametype "0"
set fraglimit "30"
set timelimit "15"
set capturelimit "8"
set g_friendlyFire "0"
set g_teamAutoJoin "0"
set g_teamForceBalance "1"
set g_doWarmup "1"
set g_warmup "20"
set g_forcerespawn "20"
set g_inactivity "180"
set g_allowVote "1"
set g_motd "^7Welcome to MadWars"
// Logging
set g_log "games.log"
set g_logSync "0"
set logfile "2"
// Rotation
set d1 "map q3dm6; set nextmap vstr d2"
set d2 "map q3dm13; set nextmap vstr d3"
set d3 "map q3dm17; set nextmap vstr d1"
vstr d1
В серверном cfg достаточно set: файл выполняется при каждом старте. seta дополнительно записывает значение в генерируемый q3config.cfg, что особенно нежелательно для секретов.
Главные engine cvar vanilla
sv_hostname "noname"— имя сервера;sv_maxclients 8— слоты, engine limit 64;sv_privateClients 0иsv_privatePassword— резерв;net_port 27960— игровой UDP-порт;net_ip "localhost"— историческая ловушка: в оригинальном коде это bind на все IPv4-интерфейсы, а не только127.0.0.1;sv_fps 20— частота серверной симуляции;sv_maxRate 0— серверный предел трафика на клиента, 0 снимает cap;sv_minPing 0,sv_maxPing 0— фильтр ping;sv_floodProtect 1— ограничение частых reliable-команд;sv_timeout 200,sv_zombietime 2,sv_reconnectlimit 3;sv_pure 1— проверка PK3;sv_allowDownload 0— старая UDP-загрузка;fs_game ""—baseq3, либо имя каталога мода;com_hunkMegs— память hunk, practically 64–128+.
У vanilla нет sv_dlURL, CIDR-ban и IPv6. Это расширения современных портов.
Правила игры
Vanilla g_gametype:
0— FFA;1— Tournament / duel;2— Single Player FFA, не для публичного сервера;3— Team Deathmatch;4— Capture the Flag.
Значения 5–7 относятся к Team Arena.
Базовые defaults 1.32:
fraglimit 20,timelimit 0,capturelimit 8;g_friendlyFire 0;g_teamAutoJoin 0,g_teamForceBalance 0;g_doWarmup 0,g_warmup 20;g_forcerespawn 20,g_inactivity 0;g_allowVote 1;g_weaponrespawn 5,g_weaponTeamRespawn 30;g_speed 320,g_gravity 800,g_knockback 1000,g_quadfactor 3.
dmflags — сумма битов: 8 отключает falling damage, 16 фиксирует FOV, 32 отключает footsteps.
Карты и ротация
Основные имена: q3dm0—q3dm19, q3tourney1—q3tourney6, q3ctf1—q3ctf4. Point release добавляет q3tourney6_ctf, pro-q3dm6, pro-q3dm13, pro-q3tourney2, pro-q3tourney4.
map q3dm6
map_restart
map_restart 5
vstr nextmap
devmap включает cheats и для обычного публичного матча не используется. Надёжная vanilla-ротация строится цепочкой vstr; последний cfg должен запустить первый map или vstr.
RCON и команды администратора
set rconPassword "длинный-уникальный-секрет"
С подключённого клиента:
/rconPassword секрет
/rcon status
/rcon map q3dm6
/rcon map_restart 5
/rcon clientkick 3
Без подключения задайте /rconAddress host:27960. Полезны status, serverinfo, systeminfo, dumpuser, map, map_restart, kick, clientkick, say, forceteam, heartbeat, killserver.
RCON передаёт пароль в незашифрованном UDP-пакете. Используйте VPN/firewall allowlist, уникальный пароль и закрытые права на cfg. Не помещайте пароль в аргументы командной строки.
Vanilla IP-фильтр:
addip 192.0.2.*
removeip 192.0.2.*
listip
g_filterBan 1 делает список banlist, 0 — allowlist. CIDR и banaddr относятся к ioquake3.
Боты
+set bot_enable 1включает subsystem;bot_minplayersдополняет сервер ботами;addbot <name> [skill 1-5] [team];botlist;kick allbots.
Если боты не нужны, задайте +set bot_enable 0 до запуска.
Логи
Есть два разных журнала:
g_log "games.log"— игровые событияInitGame, connect, kill, score, shutdown;logfile 1|2— engine console вqconsole.log.
g_logSync 1 синхронно сбрасывает каждую строку: удобно live-parser, но создаёт больше I/O. Встроенной нормальной ротации нет; используйте systemd/logrotate или служебный скрипт. Храните games.log, stdout/stderr и qconsole.log раздельно.
Безопасный сервер
- не публиковать оригинальный binary ниже 1.32c;
- для нового сервера предпочесть актуальный
ioq3ded; - запускать непривилегированным пользователем;
- открыть только нужный UDP-порт;
- оставить
sv_pure 1иsv_floodProtect 1; - отключить vanilla download, если он не нужен;
- не считать PunkBuster современной защитой;
- закрыть cfg, логи и RCON;
- packet flood и DDoS фильтровать на firewall/хостинге.
Серверные cvar не способны остановить насыщение канала.
Типовые ошибки
Couldn't load default.cfg— нетpak0.pk3или неверен basepath;Can't find map— нет PK3 карты или patch data;VM_Create on game failed— нетvm/qagame.qvm, повреждён pak или неверенfs_game;Server uses protocol version 68— клиент 1.30/1.31;Unpure client detected— различаются PK3/checksum/order;Couldn't allocate IP port— порт занят;- сервер не виден — нет карты,
dedicated 1, NAT/firewall/master; Hunk_Alloc failed— увеличить+set com_hunkMegs;Bad rconpassword— другой или пустой пароль;- нет
games.log— неверен homepath или права записи.
Источники
- Официальный GPL-код id Software
- Server cvar: sv_init.c
- Game cvar: g_main.c
- Server commands: sv_ccmds.c
- Официальный архив FTP id Software
- Quake III 1.32c
- Оригинальный server.txt
- ioquake3 SysAdmin Guide
Далее: полное руководство по ioquake3 и OSP 1.03a.