Сервер Squad - это две задачи под одним пальто. Первая административная: без лицензии Offworld Industries сервер работает прекрасно, но попадает во вкладку Custom Servers, а не в основной браузер серверов, а у лицензии есть условия - число слотов в определённых границах, настоящий состав админов, постоянно открытый доступ, - которые определяют, какое именно сообщество вы возьмётесь вести, ещё до того, как вы потратили хоть копейку на железо. Вторая задача - железо, и она проще, чем кажется. Сто игроков, их техника и снаряды - это один игровой поток Unreal Engine. Тактовая частота одного ядра задаёт tick rate, и почти ничего другого на него не влияет. Закладывайте примерно 16 ГБ памяти, ядра, которые вы не делите с чужаком, 60 ГБ быстрого диска и пять открытых портов, а внимание тратьте на лицензию и ротацию слоёв.
Лицензия и что она на самом деле даёт#
Squad делит браузер серверов надвое. Лицензированные серверы показываются на основной вкладке Server Browser. Всё остальное - во вкладке Custom Servers. Работают обе. Обе показывают пинг, число игроков и карту. Разница в том, как вас находят: на основной вкладке оказывается игрок, который запустил игру и нажал Servers, а на Custom - игрок, которому кто-то подсказал, что искать.
Из этого одного факта следует вся стратегия. Если вы держите сервер для Discord-сообщества из сорока постоянных игроков, которые заходят по названию, лицензия не нужна, и подавать заявку - ошибка: вы взяли бы на себя обязательства ради заметности, которая вам не нужна. Если же вы строите публичный сервер на 80 слотов с нуля, лицензия - это вся суть, потому что иначе вас никто не найдёт.
Заявки подаются через license.offworldindustries.com. Политика принадлежит Offworld и меняется, так что перед планированием прочитайте актуальную версию, но на момент написания её общий вид давно стабилен:
- Границы по слотам. Серверы меньше 80 слотов не лицензируются; ожидается, что они остаются в браузере Custom. Серверы, заявляющие больше 100 слотов, отклоняются.
- Состав админов. Минимум десять админов на каждый лицензированный сервер, число растёт вместе с числом ваших серверов, а админы должны присутствовать в часы пик.
- Постоянно публичный. Никакого пароля, никакого скрытия сервера, никакого перевода в приватный режим на клановые вечера. Сотрудники Offworld должны иметь возможность зайти в любой момент.
- Поведение. Лицензированные серверы соглашаются с правилами сообщества и могут потерять лицензию, если их игнорируют.
Сама лицензия приходит в виде ID и ключа, которые записываются в SquadGame/ServerConfig/License.cfg в том виде, в каком это указано в письме. Относитесь к этой паре как к паролю: она идентифицирует вашу организацию для Offworld, её можно перевыпустить в случае утечки, и ей не место на скриншоте папки с конфигами или в публичном репозитории GitHub. Если вы пользуетесь хостинг-панелью, лицензия лежит в файле на сервере, а не в вашем биллинговом аккаунте, поэтому при смене хостера лицензия не пропадает, - но и любой, у кого есть доступ к файлам, её видит. Это хорошая причина выдавать помощникам субпользователя с нужными правами и не больше.
Несколько настроек в Server.cfg помечены в самом файле как обязательные для лицензированных серверов. Это блок автокика за тимкиллы и AllowCommunityAdminAccess, о них ниже. На нелицензированном сервере вы вправе выставлять их как угодно.
Что нужно серверу: CPU, память и диск#
Squad построен на Unreal Engine, а авторитетная симуляция - движение, регистрация попаданий, физика техники, полёт снарядов - идёт в одном игровом потоке. Дополнительные ядра помогают операционной системе, сетевым потокам и всему остальному на машине, но шаг симуляции быстрее не завершается. Это самый важный факт о размерах для этой игры, и именно поэтому два сервера с одинаковым объёмом RAM могут ощущаться совершенно по-разному.
| Слоты | RAM | CPU | Реалистичные ожидания |
|---|---|---|---|
| 20-40, пехотные слои | 8-10 ГБ | 2 быстрых ядра | Комфортно, tick держится высоко |
| 50-60, смешанные слои | 12 ГБ | 3-4 быстрых ядра | Обычный размер для частного сообщества |
| 80-100, лицензированный публичный | 16-20 ГБ | 4+ быстрых ядра, высокая частота | Ограничение - tick, а не память |
| Сильно модифицированный, любой размер | 20-24 ГБ+ | 4+ быстрых ядра | Целиком зависит от набора модов |
- CPU. Частота важнее числа ядер, без исключений. Полному серверу нужен современный десктопный процессор, держащий выше 4,5 ГГц на нагруженном ядре. Старая серверная модель с 32 медленными ядрами плохо потянет сервер Squad на 100 слотов.
- Память. Squad не особенно прожорлив для того, чем он является. 16 ГБ хватает для полного ванильного сервера с запасом. Добавление памяти серверу, у которого проседает tick rate, не меняет ровным счётом ничего - как понять, что у вас на самом деле, читайте в статье CPU или RAM: что тормозит ваш сервер.
- Диск. Установка выделенного сервера велика и росла с каждым крупным релизом. Свежие версии занимают где-то от 30 до 60 ГБ ещё до модов, поэтому если собираетесь ставить контент из Workshop, берите диск на 80 ГБ и проверяйте реальную цифру после первой установки, а не верьте числам из статьи в блоге, включая эту.
- Общий CPU - ловушка. Вся производительность Squad зависит от того, что один поток получает ядро в момент, когда просит. На перегруженном общем железе у вас поток, который готов работать и ждёт своего кванта, и это проявляется как tick rate, который проваливается в непредсказуемое время суток, а не под нагрузкой. Общий CPU и шумные соседи - это длинная версия того же довода.
Выбор слоя сдвигает нагрузку сильнее, чем думает большинство. Большая открытая карта с полным набором техники, вертолётов и длинных линий обзора обходится за тик заметно дороже, чем тесный пехотный слой на том же сервере с теми же игроками. Если вся ваша ротация состоит из танковых слоёв, рассчитывайте под них, а не под среднее.
Установка через SteamCMD#
Выделенный сервер - это бесплатная анонимная загрузка, Steam app id 403240. Учтите, что это не id игры: 393380 - это клиент, и именно этот id используется при загрузке модов из Workshop, на чём многие и спотыкаются.
$ steamcmd +force_install_dir /home/squad/server \ +login anonymous +app_update 403240 validate +quit$ cd /home/squad/server$ ./SquadGameServer.sh Port=7787 QueryPort=27165 beaconport=15000 \ RCONPORT=21114 FIXEDMAXPLAYERS=80 RANDOM=NoneВ Windows аналогом служит SquadGameServer.exe с теми же аргументами; на хостинге с панелью эту строку вы не набираете вовсе, потому что те же параметры показаны полями на вкладке Startup, и панель собирает команду сама. В любом случае важны такие параметры:
| Параметр | Типичное значение | Что делает |
|---|---|---|
Port | 7787 | Игровой трафик. Сервер занимает и следующий по номеру порт |
QueryPort | 27165 | С этим портом разговаривает браузер серверов |
beaconport | 15000 | Session beacon, используется при подключении |
RCONPORT | 21114 | Удалённая консоль, TCP |
FIXEDMAXPLAYERS | 80 | Жёсткий потолок слотов, независимый от MaxPlayers |
MULTIHOME | 0.0.0.0 | Какой адрес занимать, если у машины их несколько |
RANDOM | None | Перемешивается ли ротация при старте |
FIXEDMAXTICKRATE | 50 | Целевое число тиков в секунду |
Первый запуск создаёт папку с конфигами, а затем загружает первый слой, что на холодном диске без кэша занимает некоторое время. Следите за консолью, пока сервер не сообщит, что уровень загружен и query-порт занят. В статье SteamCMD простыми словами разобраны validate, беты и скрипты обновления, которые понадобятся, когда всё это станет рутиной.
Server.cfg строка за строкой#
Всё, что касается облика сервера и его правил, лежит в SquadGame/ServerConfig/Server.cfg. Файл - обычный Key=Value с комментариями //, и поставляемая версия документирует себя довольно хорошо. Вот строки, которые стоит понимать:
ServerName="Longshot Tactical | Teamwork or Leave"ShouldAdvertise=trueIsLANMatch=falseMaxPlayers=80NumReservedSlots=4PublicQueueLimit=25MapRotationMode=LayerListRandomizeAtStart=trueUseVoteFactions=falseUseVoteLevel=falseUseVoteLayer=falseAllowTeamChanges=truePreventTeamChangeIfUnbalanced=trueNumPlayersDiffForTeamChanges=3RejoinSquadDelayAfterKick=180ServerMessageInterval=300RecordDemos=falseAllowPublicClientsToRecord=falseTKAutoKickEnabled=trueAutoTKBanNumberTKs=7AutoTKBanTime=300VehicleKitRequirementDisabled=falseAllowCommunityAdminAccess=true| Настройка | По умолчанию | Что решает |
|---|---|---|
ShouldAdvertise | true | Появляется ли сервер в браузере вообще |
IsLANMatch | false | Режим LAN. Поставьте true, и снаружи вас никто не найдёт |
MaxPlayers | 100 | Число слотов, включая зарезервированные |
NumReservedSlots | 0 | Слоты для админов и участников внутри MaxPlayers |
PublicQueueLimit | 25 | Размер очереди. 0 отключает очередь, -1 - без ограничений |
MapRotationMode | LayerList | Какой файл ротации используется и перемешивается ли он |
RandomizeAtStart | true | Перемешать ротацию при загрузке |
NumPlayersDiffForTeamChanges | 3 | Насколько команды могут различаться по численности, прежде чем переход блокируется |
RejoinSquadDelayAfterKick | 180 | Секунды до того, как кикнутый игрок сможет вернуться в этот отряд |
ServerMessageInterval | 300 | Секунды между строками из ServerMessages.cfg |
AutoTKBanNumberTKs | 7 | Число тимкиллов за раунд до автоматического бана |
AutoTKBanTime | 300 | Длительность этого бана в минутах |
Две из этих настроек кусаются. NumReservedSlots вычитается из MaxPlayers, а не добавляется к нему: сервер с MaxPlayers=80 и NumReservedSlots=4 - это публичный сервер на 76 слотов. А ServerName - то, на чём держится вся ваша стратегия поиска в браузере Custom, потому что внутриигровой фильтр ищет по подстроке: вставьте в название запоминающееся слово и скажите игрокам, какое.
Остальная часть папки - набор файлов с одной задачей каждый: Admins.cfg, Bans.cfg, License.cfg, Motd.cfg, ServerMessages.cfg, Rcon.cfg, LayerRotation.cfg, LevelRotation.cfg, ExcludedLayers.cfg, ExcludedFactions.cfg, VoteConfig.cfg и ещё несколько. Точный набор меняется между крупными версиями. Когда руководство велит править файл, которого у вас нет, проверьте, не переименовала ли его ваша версия, прежде чем создавать его вручную: лишний конфиг молча игнорируется, а это худший из возможных видов отказа.
Порты и файрвол#
Squad требует пять портов, и все, кроме RCON, - UDP. Здесь заканчивается большинство обращений вида «сервер запущен, но его никто не видит».
| Порт | Протокол | Назначение |
|---|---|---|
7787 | UDP | Игровой трафик |
7788 | UDP | Игровой трафик, порт на единицу выше Port |
27165 | UDP | Steam query - браузер серверов |
27166 | UDP | Query, порт на единицу выше QueryPort |
15000 | UDP | Session beacon, используется при подключении |
21114 | TCP | RCON |
Отсюда два правила. Во-первых, игровой порт и query-порт занимают ещё и номер выше себя, поэтому зазор в один порт между службами на одной машине приведёт к конфликту. Если вы запускаете два сервера Squad на одной машине, разнесите их с запасом - 7787/27165 и 7797/27175, а не 7787 и 7788. Во-вторых, после первоначального рукопожатия Squad использует ещё и высокие эфемерные UDP-порты для отдельных клиентских соединений, поэтому файрвол, который пропускает только шесть перечисленных номеров и ничего больше, порождает игроков, которые подключаются, а потом вылетают по таймауту. Файрвол с отслеживанием состояния, разрешающий established и related трафик, справляется с этим правильно, и открывать диапазон не нужно.
RCON по TCP - особый и опасный случай. Это удалённая консоль с полными правами админа, защищённая паролем, который идёт по сети открытым текстом. Ограничьте его по адресу источника, если файрвол это умеет, не используйте пароль, применяемый где-то ещё, и прочитайте как безопасно пользоваться RCON, прежде чем отдавать данные Discord-боту. В статье порты игровых серверов простыми словами объяснено, зачем query-порты вообще существуют отдельно и что ломается, когда доступна только половина пары.
Админы, группы и RCON#
Admins.cfg состоит из двух частей: вы задаёте группы со списком прав, а потом назначаете группам Steam ID. Файл поставляется с полным списком названий прав в комментариях, и это авторитетный источник для вашей версии.
Group=Admin:changemap,pause,cheat,private,balance,chat,kick,ban,config,cameraman,immune,manageserver,reserve,teamchange,forceteamchange,canseeadminchatGroup=Moderator:kick,ban,chat,teamchange,canseeadminchatGroup=Whitelist:reserveAdmin=76561198012345678:AdminAdmin=76561198087654321:ModeratorAdmin=76561198011112222:WhitelistПраво reserve - это и есть механизм вайтлиста для участников: любой из группы с reserve может занять один из NumReservedSlots, когда сервер полон. Именно этого большинство сообществ и хочет, когда говорит о вайтлисте, и плагин для этого не нужен.
В Rcon.cfg лежат пароль и порт. Поставьте длинный случайный пароль, а если файл предлагает ограничение числа подключений, держите его небольшим.
Password=8fJq2tVbn4Rz7Lw1Port=21114Когда RCON работает, админские команды одинаковы, вводите ли вы их в игре через админ-камеру или отправляете в сокет:
| Команда | Действие |
|---|---|
ListPlayers | Все подключённые игроки с их id и командой |
ListSquads | Отряды по командам с их лидерами |
AdminBroadcast <text> | Сообщение на всех экранах |
AdminWarn <name> <text> | Личное предупреждение одному игроку |
AdminKick <name> <reason> | Кик по имени |
AdminKickById <id> <reason> | Кик по id из ListPlayers |
AdminBan <name> <length> <reason> | Бан, запись добавляется в Bans.cfg |
AdminChangeLayer <layer> | Немедленно сменить слой |
AdminSetNextLayer <layer> | Поставить слой в очередь на следующий раунд |
ShowNextMap | Что будет дальше |
AdminEndMatch | Завершить раунд прямо сейчас |
AdminRestartMatch | Перезапустить текущий слой |
AdminDisbandSquad <team> <squad> | Распустить отряд |
AdminRemovePlayerFromSquad <name> | Убрать одного игрока из отряда |
AdminForceTeamChange <name> | Перевести игрока в другую команду |
В скриптах предпочитайте формы ById. Имена в Squad содержат клановые теги, символы, похожие на эмодзи, и пробелы, а частичное совпадение имени, попавшее в двух игроков, - это как раз способ забанить не того.
Слои, ротация и голосование#
«Уровень» в Squad - это карта, а «слой» - конкретная версия этой карты: игровой режим, набор фракций, определённая расстановка флагов. Al Basrah AAS v1 и Al Basrah Invasion v2 - два слоя одного уровня, и играются они совершенно по-разному. Ротации строятся из одного или другого, что выбирается через MapRotationMode:
LevelListчитаетLevelRotation.cfgи сам подбирает слой на этом уровне.LayerListчитаетLayerRotation.cfgи играет ровно те слои, которые вы назвали, по порядку.- Варианты
_Randomizedу обоих перемешивают список.
Для сообщества со своим мнением правильный ответ - LayerList, потому что только этот режим даёт контроль над тем, как течёт вечер. Ротация, в которой тяжёлый танковый слой чередуется с тесным пехотным, и играется лучше, и в среднем обходится дешевле по CPU, чем три насыщенных техникой слоя подряд.
Sumari_AAS_v1GooseBay_Invasion_v1Yehorivka_RAAS_v4Narva_AAS_v1Fallujah_RAAS_v1Названия слоёв должны в точности совпадать с внутренними названиями игры, и между версиями они меняются, когда карту перерабатывают. Опечатка не вызывает ошибки: запись пропускается, и ротация, полная опечаток, незаметно превращается в ротацию из двух карт. После любого обновления Squad перезапустите сервер и посмотрите в лог, какие слои он загрузил.
ExcludedLayers.cfg и ExcludedLevels.cfg - это вычитающая версия, полезная с LevelList, когда вам нужно всё, кроме трёх карт, которые ненавидят ваши игроки. VoteConfig.cfg настраивает голосование в конце раунда, которое происходит, только если вы включили UseVoteLevel или UseVoteLayer. Голосование любят игроки, и оно постепенно сужает ротацию до тех трёх карт, которые выигрывают каждый раз, так что решать о нём стоит сознательно, а не по умолчанию.
Моды из Workshop#
Моды для Squad берутся из Steam Workshop под app id игры, 393380. На сервере они скачиваются через SteamCMD в SquadGame/Plugins/Mods, и большинство панелей предлагают поле, куда вставляется список id из Workshop через запятую, а загрузка происходит при следующем запуске.
$ steamcmd +force_install_dir /home/squad/server/SquadGame/Plugins/Mods \ +login anonymous +workshop_download_item 393380 2240351000 +quitТри вещи о модах для Squad, которые не обсуждаются:
- У каждого игрока должны быть те же моды той же версии. Для игрового контента нет набора модов, необязательных для клиента. Игрок, который не подписался или у которого старая версия, зайти не может. Это главная причина, по которой серверы Squad с модами остаются небольшими.
- Моды бывают огромными. Паки карт занимают по нескольку гигабайт каждый, и на вашем диске, и у каждого игрока. Сервер с четырьмя большими паками требует от новичка загрузки ещё до первого раунда, и многие не станут ждать.
- Обновление игры ломает моды, пока авторы их не пересоберут. Крупные версии Squad меняют сборку движка, и мод, скомпилированный под старую, не загрузится. Останавливайте сервер перед обновлением, не позволяйте серверу с модами обновляться автоматически в день патча и храните записанным предыдущий рабочий список модов. Что делать, когда обновление мода всё сломало - общий план действий; моды Steam Workshop на выделенных серверах разбирает, как устроена загрузка, когда она идёт не так.
Названия слоёв из модов записываются в LayerRotation.cfg точно так же, как и ванильные, и именно они чаще всего становятся источником описанной выше проблемы молчаливого пропуска.
Tick rate: как его читать и как удержать#
Браузер серверов показывает tick rate каждого сервера, и это самое честное число в хостинге Squad. 50 Гц - это цель, вокруг которой построена игра. Здоровый сервер держится рядом с ней. Страдающий проседает до двадцати с чем-то, и тогда стрельба ощущается непоследовательной, техника трясётся, а пехота будто телепортируется за углами - ровно те симптомы, которые люди списывают на собственный пинг.
Что влияет на это число, по порядку:
- Число игроков. Стоимость тика растёт вместе с числом игроков, которых серверу нужно симулировать и информировать. Переход с 60 на 100 нелинеен.
- Техника и снаряды. Дорога именно физика. Танковый слой с вертолётами - это в несколько раз больше работы, чем пехотный слой с тем же числом игроков.
- Тактовая частота одного ядра. Всё перечисленное выше ложится на один поток. Это единственный аппаратный рычаг, поднимающий потолок.
- Моды. Кастомная техника, оружие и большие карты - всё это добавляет работу на каждый тик.
Настройки, которая ускорила бы сервер Squad, упирающийся в CPU, не существует. Ваши варианты - меньше слотов, более лёгкая ротация, меньше модов или более быстрое ядро, и сообщества, отказывающиеся от первых трёх, в итоге покупают четвёртое. Сервер на 80 слотов, который держит 50 Гц весь вечер, лучше сервера на 100 слотов, который в прайм-тайм падает до 22, и игроки чувствуют разницу, даже не умея её назвать.
Смотрите на график CPU вместе с tick rate, а не на что-то одно. Игровой поток, упёршийся в предел выделенного ему ресурса при ровном графике памяти, - хрестоматийная картина ограничения по CPU, и она описана в как читать график нагрузки сервера и подробнее в что на самом деле значит tick rate. Если вы арендуете целую машину, страница выделенных машин указывает модель CPU, а не маркетинговый уровень, а это единственный способ оценить тактовую частоту до покупки.
Бэкапы, обновления и устранение неполадок#
В Squad нет сохранённого мира, который можно потерять: важное состояние - это ваша конфигурация, список банов и состав админов. Это небольшой объём текста, но и результат месяцев работы, поэтому делайте бэкап SquadGame/ServerConfig/ перед каждым изменением и храните копию не на самом сервере. Бэкапы, которые действительно восстанавливаются объясняет, почему стоит время от времени проверять, что копия работает.
Обновления приходят по графику Offworld и обязательны: клиент новой версии не может зайти на сервер старой. Остановите сервер, запустите обновление SteamCMD с validate, стартуйте его, затем проверьте, что ротация слоёв загрузилась и моды вернулись.
Сервера вообще нет в браузере. Проверьте ShouldAdvertise=true и IsLANMatch=false, а затем query-порт. Работающий игровой порт при заблокированном query-порте даёт именно это: игроки, заходящие по прямому подключению, успешно подключаются, а браузер ничего не показывает.
Сервер виден в Custom Servers, а вы ждали основную вкладку. Дело в лицензии или в лицензии, неправильно применённой в License.cfg. Настройки, которая перенесёт вас, нет.
Игроки подключаются и вылетают по таймауту на 100%. Обычно дело в beacon-порту или в эфемерном диапазоне. Проверьте, что 15000 открыт по UDP и что файрвол пропускает установленные соединения.
С tick rate всё в порядке, пока не загрузится определённый слой. Дело в ротации, а не в железе. Отметьте, какой это слой, и сравните количество техники. Уберите его или переставьте на более спокойное место в ротации.
В ротации играются только две карты. Названия слоёв, которых больше нет, пропускаются молча. Сравните ваш LayerRotation.cfg со списком слоёв текущей версии.
RCON подключается и тут же отваливается. Неверный пароль или лимит подключений, уже занятый инструментом, о котором вы забыли. RCON в Squad не выстраивает подключения в очередь вежливо.
Сервер сам перезапускается. Либо процесс останавливают снаружи - лимит памяти, супервизор, watchdog, - либо он упал. Консоль подскажет, что именно, а почему ваш игровой сервер постоянно перезапускается разбирает, как их различать.
FAQ#
Нужна ли лицензия Squad, чтобы запустить сервер?
Нет. Нелицензированный сервер работает со всей функциональностью и показывается во вкладке Custom Servers браузера. Лицензия переносит вас на основную вкладку, а это важно только тогда, когда вам нужно, чтобы вас находили посторонние. Для клана или Discord-сообщества, которое заходит по названию, это обязательство без пользы.
Сколько слотов лучше поставить?
Меньше, чем хочется. Tick rate падает с ростом числа слотов, и сервер на 60 слотов, держащий 50 Гц, играется лучше сервера на 100 слотов, проваливающегося до двадцати с чем-то. Если вы собираетесь подавать заявку на лицензию, нужно минимум 80 слотов, поэтому рассчитывайте CPU на 80, прежде чем подавать заявку.
Почему мой сервер Squad не показывается в браузере серверов?
В порядке вероятности: query-порт закрыт или указан неверный номер, ShouldAdvertise равен false или IsLANMatch равен true. Сначала проверьте прямым подключением: если оно работает, с игровым портом всё в порядке, и проблема на стороне query.
Улучшает ли больше RAM tick rate в Squad?
Нет. Tick rate в Squad определяется тем, как быстро одно ядро CPU завершает шаг симуляции. Память влияет на то, запускается ли сервер вообще и переживёт ли он большую карту с модами, а не на ощущения от игры. Добавляйте память, когда процесс убивают за чрезмерное потребление, а не когда он подтормаживает.
Можно ли запустить два сервера Squad на одной машине?
Да, если CPU потянет два игровых потока и вы правильно разнесёте порты. Дайте каждому экземпляру собственную папку установки и оставьте зазор между номерами портов, потому что и игровой порт, и query-порт занимают номер выше себя.
Нужно ли игрокам ставить моды, чтобы зайти на сервер с модами?
Да. В Squad нет игровых модов, необязательных для клиента: всем нужны те же предметы из Workshop той же версии. Учитывайте, что между новичком и его первым раундом встанет загрузка на несколько гигабайт, и держите список модов коротким, если хотите случайный трафик.




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