Серверу Counter-Strike 1.6 нужно около 256 МБ памяти, одно ядро процессора, из которого он всё равно использует только один поток, и один UDP-порт. За двадцать лет это не изменилось. Изменилось другое: оригинальным HLDS от Valve почти никто больше не пользуется. Серверы, на которых реально играют, работают на ReHLDS - переписанном движке, - а Metamod поверх него загружает AMX Mod X. Именно этот набор отличает сервер, который ощущается как в 2004 году, от сервера-музея.
В этом руководстве разобрано всё целиком: что такое ReHLDS и ReGameDLL и почему они заменили оригиналы, установка через SteamCMD, все настройки server.cfg, которые стоит менять, Metamod и AMX Mod X, флаги админов и список команд, карты и загрузки, боты и честный разговор про читеров и клиенты без Steam. Установки CS 1.6 на RE:NODE поставляются с уже настроенными ReHLDS, AMX Mod X и Metamod, так что если вы на одной из них, читайте это как объяснение того, что там уже есть.
Что запускает сервер CS 1.6: HLDS, ReHLDS и ReGameDLL#
Оригинальный набор состоит из трёх частей. Движок (hlds_linux с engine_i686.so в Linux, hlds.exe с swds.dll в Windows) управляет миром и сетью. Игровая библиотека (cstrike/dlls/cs.so в Linux, mp.dll в Windows) реализует саму Counter-Strike: меню покупок, бомбу, деньги. А папка мода cstrike/ содержит карты, конфиги и всё, что вы на самом деле будете редактировать.
Первые две части сообщество заменило:
| Компонент | Оригинал | Замена | Зачем |
|---|---|---|---|
| Движок | HLDS | ReHLDS | Исправления падений и уязвимостей, лучшая производительность, дополнительные cvar |
| Игровая библиотека | cs.so / mp.dll | ReGameDLL_CS | Исправлены давние ошибки, зашитое в код поведение вынесено в cvar |
| Загрузчик плагинов | нет | Metamod или Metamod-r | Позволяет AMX Mod X и другим плагинам подключаться к игре |
ReHLDS ставится поверх: вы перезаписываете бинарный файл движка, и всё остальное продолжает работать. С ReGameDLL_CS то же самое для игровой библиотеки, и именно она добавляет большинство новых cvar с mp_, о которых все говорят: режим free-for-all, бесконечные раунды, поведение оружия, которое раньше было зашито в код. По умолчанию ни то, ни другое не меняет саму игру. Обе разработки живут на GitHub, и обе стоит взять: в обычном HLDS уже очень давно не было существенных исправлений, а часть его ошибок можно вызвать удалённо.
Базовая игра ставится через SteamCMD как приложение 90, выделенный сервер Half-Life, причём мод нужно выбрать до запуска обновления:
$ steamcmd +force_install_dir /home/cs16/server +login anonymous \ +app_set_config 90 mod cstrike +app_update 90 validate +quit$ cd /home/cs16/server$ ./hlds_run -game cstrike +ip 0.0.0.0 +port 27015 \ +maxplayers 24 +map de_dust2С приложением 90 знаменито много возни. SteamCMD часто падает с первого раза с ошибкой подписки или манифеста и срабатывает со второй-третьей одинаковой попытки, а +app_set_config 90 mod cstrike должно стоять раньше +app_update, иначе вы получите deathmatch для Half-Life. GoldSrc - 32-битный движок, поэтому на 64-битной Linux-машине до запуска нужно поставить 32-битную библиотеку C. На хостинге с панелью всё это уже сделано, и вы получаете готовое дерево.
hlds_run - это скрипт-обёртка, которая перезапускает сервер, если он завершился; hlds_linux - сам бинарный файл. В старых руководствах советуют -pingboost со значением 1, 2 или 3, который меняет то, как движок засыпает между кадрами. Это был обходной путь для ядер, которых давно нет, и на ReHLDS его лучше не использовать.
Требования и потребление ресурсов#
| Конфигурация | RAM | CPU | Примечания |
|---|---|---|---|
| 12-16 слотов, ваниль плюс AMXX | 256-512 МБ | 1 ядро | Обычный публичный сервер |
| 24-32 слота, дюжина плагинов | 512 МБ - 1 ГБ | 1 ядро | Число плагинов важнее числа слотов |
| Zombie Plague, CSDM, Jailbreak на 32 слота | 1-2 ГБ | 1 быстрое ядро | Тяжёлые моды AMXX с состоянием для каждого игрока |
| Два сервера на одной машине | Вдвое больше | по 1 ядру на каждый | Один поток они с пользой не разделят |
Сама установка занимает меньше гигабайта. Растёт только добавленное вами содержимое: пользовательские карты, спрайты, звуки и модели, - и именно под них на самом деле нужен диск в тарифе.
В процессоре 1.6 необычна. GoldSrc выполняет всю симуляцию в одном потоке, поэтому число ядер не значит ничего, а тактовая частота значит всё. sys_ticrate задаёт целевую частоту кадров сервера, и общепринятое значение 1000 действительно тратит процессорное время ради более плавного движения и регистрации попаданий. На тарифе, где вы покупаете лишь долю ядра, sys_ticrate 500 - разумный компромисс, разницу почти не почувствовать; а вот sys_ticrate 100 почувствуют, и игроки заметят.
По современным меркам сетевой трафик крошечный: полный сервер на 32 слота - это несколько сотен килобайт в секунду. Важны задержка и джиттер, потому что компенсация лага в 1.6 хорошая, но не волшебная, а сервер за две страны от вас - это сервер, на котором вы проигрываете дуэли.
server.cfg, строка за строкой#
cstrike/server.cfg читается при запуске и при каждой смене карты. Вот полный конфиг для публичного сервера, без украшений:
hostname "Longship 1.6 // Classic maps // EU"rcon_password "a-long-random-string"sv_password ""sv_contact "you@example.com"sv_lan 0sv_region 3// Rounds and rulesmp_timelimit 30mp_maxrounds 0mp_winlimit 0mp_freezetime 6mp_roundtime 2.5mp_buytime 0.25mp_c4timer 35mp_startmoney 800mp_friendlyfire 0mp_tkpunish 0mp_autoteambalance 1mp_limitteams 2mp_autokick 0mp_flashlight 1mp_footsteps 1mp_forcecamera 0mp_fadetoblack 0mp_hostagepenalty 0mp_chattime 10mp_playerid 0// Physicssv_gravity 800sv_maxspeed 320sv_airaccelerate 10sv_cheats 0pausable 0// Networksys_ticrate 1000sv_maxrate 25000sv_minrate 5000sv_maxupdaterate 101sv_minupdaterate 20sv_unlag 1sv_maxunlag 0.5sv_timeout 65// Contentsv_allowupload 1sv_allowdownload 1sv_downloadurl ""mp_consistency 1// Logslog onmp_logmessages 1mp_logdetail 3sv_logbans 1sv_logecho 1exec banned.cfgexec listip.cfg| Настройка | По умолчанию | Что делает |
|---|---|---|
mp_roundtime | 5 | Длина раунда в минутах, от 1 до 9. В соревновательных матчах 1.75 |
mp_freezetime | 6 | Заморозка на покупки в начале раунда, в секундах |
mp_buytime | 1.5 | Время меню покупок в минутах. 0.25 - это пятнадцать секунд |
mp_c4timer | 45 | Таймер бомбы. 35 - соревновательное значение |
mp_startmoney | 800 | Деньги в первом раунде, от 800 до 16000 |
mp_friendlyfire | 0 | Включают для соревновательных матчей, выключают на публичном сервере, который хочет сохранить онлайн |
mp_autoteambalance | 1 | В конце раунда переводит игроков, чтобы уравнять команды |
mp_limitteams | 2 | Максимальная разница в размере команд, после которой вход блокируется |
mp_forcecamera | 0 | 1 ограничивает погибших наблюдением только за своей командой |
mp_fadetoblack | 0 | 1 затемняет экран после смерти. Защита от подсказок в матчах |
mp_playerid | 0 | 0 - имена видны всем, 1 - только своей команды, 2 - никому |
sv_maxupdaterate | 60 | Число снимков в секунду на клиента. 101 - стандарт сообщества |
sv_unlag | 1 | Компенсация лага. Никогда не выключайте |
mp_consistency | 1 | Отклоняет клиентов, у которых файлы моделей и спрайтов не совпадают |
Последние две строки конфига важнее, чем кажется. banned.cfg и listip.cfg - это файлы, куда движок записывает баны при выполнении writeid и writeip, и не во всех сборках они загружаются автоматически: если подключить их через exec из server.cfg, баны переживут перезапуск. Если это забыть, получится классическое «я вчера забанил его, а он вернулся».
Порты, RCON и подключение#
| Порт | Протокол | Назначение |
|---|---|---|
27015 | UDP | Игровой трафик и запрос Steam, который использует браузер серверов |
27015 | UDP | RCON. GoldSrc гонит RCON по UDP на игровом порту |
27020 | UDP | HLTV, только если вы запускаете прокси |
Строка про RCON - ловушка для всех, кто пришёл из игр на Source. CS:GO и CS2 говорят по RCON через TCP; GoldSrc - через UDP на том же порту, что и игра, открытым текстом, с паролем в каждом пакете. Любой, кто перехватывает трафик между вами и сервером, получает пароль, и никакой версии протокола, которая это исправляет, нет. Пользуйтесь консолью панели, которая вместо этого проверяет вашу учётную запись, а rcon_password делайте длинным и меняйте. Общий случай разобран в статье безопасная работа с RCON, и здесь всё сказанное в ней применимо вдвойне.
Тариф CS 1.6 на RE:NODE идёт с одним выделенным портом, а серверу больше и не нужно. HLTV - это второй процесс на втором порту, и его при желании добавляют на вкладке Network.
Игроки подключаются тремя способами: через встроенный браузер в разделе Find Servers, через избранное, добавленное по адресу, или командой connect 203.0.113.10:27015 в консоли. Прямое подключение работает, когда мастер-список тормозит, и именно с него стоит начинать проверку, прежде чем верить в реальность проблемы. Если вместо адреса вы хотите раздавать имя, в статье как привязать домен к игровому серверу разобрана запись A; для 1.6 она отлично работает, пока порт остаётся в адресе.
Metamod и AMX Mod X#
Metamod - это прослойка между движком и игровой библиотекой, благодаря которой к игре могут подключаться сразу несколько плагинов. AMX Mod X - платформа плагинов, на которой работает почти каждый сервер 1.6, и загружается она как плагин Metamod. Ни у чего другого в мире 1.6 нет и доли такого каталога плагинов.
Metamod устанавливается так: мод направляют на него, а не на игровую библиотеку. В cstrike/liblist.gam:
gamedll "addons\metamod\dlls\metamod.dll"gamedll_linux "addons/metamod/dlls/metamod_i386.so"Дальше Metamod загружает всё, что перечислено в cstrike/addons/metamod/plugins.ini, по одному плагину в строке, с платформой в начале:
linux addons/amxmodx/dlls/amxmodx_mm_i386.sowin32 addons\amxmodx\dlls\amxmodx_mm.dllЗапустите сервер и введите в консоли meta list. Если AMX Mod X отображается как работающий, введите amxx version. Две команды, тридцать секунд - и вы знаете, жив ли набор. Дерево под ним выглядит так:
cstrike/addons/amxmodx/ configs/ amxx.cfg core settings users.ini admins plugins.ini which plugins load modules.ini which modules load maps.ini the map vote list cmds.ini commands run at map start plugins/ the .amxx files modules/ engine, fun, cstrike, fakemeta, hamsandwich data/lang/ translations logs/ one file per day scripting/ .sma sources and the compilerПлагины - это файлы .amxx в plugins/, и включаются они добавлением имени файла в configs/plugins.ini. Некоторым плагинам сначала нужно включить модуль в modules.ini: обычные подозреваемые - fun, cstrike, fakemeta и hamsandwich, и плагин, который не загрузился со строкой «module not found» в logs/, почти всегда упирается именно в это. Плагины на Pawn компилируются из .sma в .amxx компилятором из scripting/; это полезно знать, потому что половина полезных плагинов для 1.6 выложена в виде исходников.
В configs/amxx.cfg лежат основные настройки. amx_default_access задаёт, что может делать игрок без записи в users.ini, и должен оставаться пустым. amx_show_activity 2 объявляет действия админов с указанием имени админа - эта настройка удерживает команду модераторов в рамках. amx_password_field "_pw" называет клиентскую переменную, в которую кладётся пароль админа, - то есть строку setinfo _pw "yourpassword", которую админ добавляет в собственный конфиг.
Админы, флаги и команды#
Админы живут в cstrike/addons/amxmodx/configs/users.ini, по одному в строке, в четырёх полях: идентификатор, пароль, флаги доступа, флаги учётной записи.
; identity password access flags account flags"STEAM_0:1:123456" "" "abcdefghijklmnopqrstu" "ce""STEAM_0:0:987654" "" "bcdefijmnu" "ce""Anna" "herring42" "bcdefij" "a"Флаги учётной записи определяют, как админа распознают. c означает, что идентификатор - это SteamID, d - что это IP-адрес, e - что пароль не требуется, а a отключает всякого, кто ввёл неверный пароль под этим именем. SteamID с ce - правильный ответ для тех, кому вы доверяете; имя плюс пароль - для тех, чьего ID у вас пока нет, и надёжно это ровно настолько, насколько надёжен пароль.
Флаги доступа - это отдельные буквы, и они складываются:
| Флаг | Даёт |
|---|---|
a | Иммунитет от других админов |
b | Зарезервированный слот |
c | amx_kick |
d | amx_ban, amx_unban, amx_banip |
e | amx_slay, amx_slap |
f | amx_map |
g | amx_cvar для большинства cvar |
h | amx_cfg |
i | amx_chat, amx_say, amx_psay, amx_tsay |
j | Команды голосования |
k | Доступ к защищённым cvar, таким как sv_password |
l | amx_rcon и rcon_password |
m - t | Пользовательские уровни, которые определяют отдельные плагины |
u | Доступ к админ-меню |
z | Обычный пользователь, без прав админа |
Раздача abcdefghijklmnopqrstu всем подряд - вот как серверы 1.6 разрушаются собственным персоналом. Модератору нужно bcdefiju и ничего больше; l даёт RCON, то есть весь сервер, и принадлежит одному человеку.
| Команда | Действие |
|---|---|
amx_kick <name> [reason] | Выгоняет игрока |
amx_ban <minutes> <name> [reason] | Банит по SteamID. 0 - навсегда |
amx_banip <minutes> <name> | Банит по адресу |
amx_addban <steamid> <minutes> | Банит того, кого нет на сервере |
amx_unban <steamid> | Снимает бан |
amx_slay <name> / amx_slap <name> [damage] | Убивает либо бьёт и толкает |
amx_map <map> | Меняет карту |
amx_extendmap <minutes> | Добавляет время текущей карте |
amx_votemap <map...> | Запускает голосование за карту |
amx_cvar <cvar> [value] | Читает или задаёт cvar |
amx_rcon <command> | Выполняет серверную команду |
amx_who | Показывает игроков с их доступом |
amx_reloadadmins | Перечитывает users.ini без перезапуска |
amx_plugins / amx_modules | Что загрузилось, а что нет |
amxmodmenu | Открывает админ-меню в игре |
Запомнить стоит amx_reloadadmins: добавить модератора посреди вечера ничего не стоит и не требует перезапуска.
Карты, ротация карт и загрузки#
Карты - это файлы .bsp в cstrike/maps/, часто рядом с файлом .res, перечисляющим дополнительные звуки, спрайты и модели, нужные карте, чтобы клиенты знали, что скачивать. mapcycle.txt в cstrike/ - это ротация, по одному названию карты в строке, а motd.txt - текст, который игроки видят при подключении.
На большинстве серверов ротацию берёт на себя AMX Mod X. configs/maps.ini - список, который предлагают плагины голосования, а стандартные плагины mapchooser, nextmap и timeleft вместе проводят голосование в конце карты, объявляют, что будет дальше, и отвечают на say timeleft. Если вам нужна фиксированная ротация, уберите mapchooser из plugins.ini и пусть работает mapcycle.txt.
Пользовательский контент - то, на чём серверы 1.6 теряют игроков. Если у клиента нет вашей карты, получить её можно двумя способами:
- Загрузка средствами движка при
sv_allowdownload 1. Работает, но мучительно медленно: карта в 20 МБ - это две минуты взгляда на полосу прогресса. Некоторые клиенты сдаются. sv_downloadurl "http://files.example.com/cstrike", указывающий на веб-сервер с зеркалом структуры папок -maps/,sound/,sprites/,models/. Файлы можно хранить сжатыми bzip2 какde_yourmap.bsp.bz2, и клиент их распакует. Это в десятки раз быстрее, и так делает каждый загруженный сервер.
Для второго варианта подойдёт любой статический веб-хостинг, в том числе небольшой тариф веб-хостинга: это папка с файлами по HTTP, ничего хитрого. Держите содержимое идентичным тому, что лежит на сервере, потому что несовпавший спрайт при mp_consistency 1 приводит к выкидыванию игрока с сообщением, которое никто не понимает.
Боты, читеры и клиенты без Steam#
CS 1.6 поставляется с ZBot - ботом, перенесённым из Condition Zero. bot_add, bot_add_t, bot_add_ct, bot_quota <n>, bot_difficulty от 0 до 3 и bot_kick - весь интерфейс. Ботам нужен навигационный файл для карты, maps/de_dust2.nav: у официальных карт он есть, у пользовательских почти никогда. Альтернатива - бот для Metamod вроде YaPB или POD-Bot: у них собственные вейпойнты, они лучше справляются с пользовательскими картами и настраиваются для каждой карты отдельно, поэтому почти каждый населённый сервер 1.6, где есть боты, использует один из них, а не ZBot.
Читерство - честное слабое место игры. VAC существует и ловит неосторожных. Серверная защита - это sv_cheats 0, mp_consistency 1 и античит-плагин AMX Mod X, который следит за невозможным поведением, плюс ReAuthCheck на стороне ReHLDS, отклоняющий клиентов, предъявляющих чужие SteamID. Ничто из этого не решает проблему до конца, и растущему серверу нужен активный админ больше, чем ещё один плагин. Статья как держать сервер с модами чистым о модах, а не о читах, но дисциплина там та же.
И есть ещё то, что пропускает каждое руководство по 1.6. Значительная часть оставшихся игроков 1.6 сидит на клиентах без Steam, а серверы, желающие принимать этих игроков, ставят ReUnion, который их пускает и выдаёт им сгенерированные идентификаторы. Это настоящая развилка, а не мелочь. Примете их - получите более людный сервер, население без аутентификации и баны по SteamID и админку по SteamID, которые почти ничего не значат, потому что забаненный игрок возвращается с новым идентификатором. Откажетесь - сохраните sv_lan 0, настоящую аутентификацию Steam, баны, которые действуют, и меньший пул игроков. Существуют серверы обоих видов, и оба работают. Решайте обдуманно: менять решение на уже работающем сервере - значит заново собирать списки админов и банов.
Устранение неполадок#
SteamCMD не может установить приложение 90. Запустите снова. И ещё раз. Дело не в вас: манифест приложения 90 периодически ломается, и та же команда срабатывает при следующей попытке. Проверьте, что +app_set_config 90 mod cstrike стоит раньше +app_update 90.
Сервер запускается, но не появляется в браузере. Проверьте sv_lan 0 и sv_region, затем попробуйте прямой connect по адресу. Если прямое подключение работает, сервер в порядке, а мастер-список просто медленный.
`meta list` ничего не выводит. liblist.gam по-прежнему указывает на оригинальную игровую библиотеку. Проверьте обе строки, gamedll и gamedll_linux: править только строку для своей платформы нормально, а вот не править ни одну - обычная ошибка.
AMX Mod X загружается, а плагин нет. Прочитайте addons/amxmodx/logs/. Там будет назван недостающий модуль или указана ошибка компиляции. Модули включаются в modules.ini, плагины - в plugins.ini, а сам файл плагина должен лежать в plugins/.
У админов нет прав. Либо SteamID в users.ini не совпадает в точности с тем, что у игрока, либо в флагах учётной записи нет c. Выполните amx_who, пока они подключены, чтобы увидеть, кем их считает сервер, а затем amx_reloadadmins.
Игроков выкидывает за несовпадение файлов. mp_consistency 1 при том, что содержимое на сервере отличается от отдаваемого по адресу загрузки. Сделайте их идентичными.
Всё тормозит на 32 игроках. Сравните sys_ticrate с лимитом процессора, прежде чем винить плагины. Сервер, упёршийся в жёсткий лимит CPU, работает медленно, а не сломан, и о себе не сообщает ничем, кроме частоты кадров.
FAQ#
Стоит ли размещать Counter-Strike 1.6 в 2026 году?
Да, если иметь в виду, что серверы с сообществом по-прежнему заполняются каждый вечер. Это самая дешёвая игра для хостинга с огромным отрывом, у мод-сцены за плечами двадцать лет глубины, а весь оставшийся онлайн сознательно остался. Но это не та игра, для которой вы запускаете сервер и ждёте, пока вас найдут.
Чем HLDS отличается от ReHLDS?
ReHLDS - это переписанный тот же движок, бинарно совместимый с существующими модами и плагинами, с исправленными накопившимися падениями и уязвимостями и дополнительными cvar. Он ставится вместо оригинала, и сегодня нет практической причины запускать оригинальный HLDS.
Сколько RAM нужно серверу CS 1.6?
256 МБ для маленького сервера, 512 МБ для полного сервера на 32 слота с обычным набором плагинов и 1 ГБ или больше для тяжёлых режимов AMXX вроде Zombie Plague, которые хранят состояние каждого игрока. Память в 1.6 почти никогда не бывает пределом; предел - это производительность одного потока процессора.
Как сделать себя админом?
Добавьте в cstrike/addons/amxmodx/configs/users.ini строку со своим SteamID, без пароля, с нужными флагами доступа и флагами учётной записи ce. Выполните в консоли amx_reloadadmins. Затем введите в игре amxmodmenu.
Почему игроки так медленно скачивают карты?
Потому что собственная передача файлов в движке - из 1998 года. Задайте sv_downloadurl на веб-сервер с теми же папками maps/, sound/ и sprites/, лучше со сжатыми bzip2 копиями, и загрузки станут достаточно быстрыми, чтобы люди оставались.
Могут ли клиенты без Steam зайти на мой сервер?
Только если вы установите ReUnion, который их принимает и назначает сгенерированные идентификаторы. Платой за это становится то, что баны по SteamID и админка на основе SteamID сильно слабеют. Сервер по умолчанию с sv_lan 0 принимает только клиентов Steam.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.