RE:NODE

Руководства12 мин чтения

Моды и ротация слоёв в Squad

Как в Squad называются и ротируются слои, как ставить моды из Workshop на выделенный сервер, добавлять слои модов в LayerRotation.cfg и сохранять сервер доступным для входа.

0 прочтений

Слой в Squad - это одна конкретная играбельная версия карты: карта, режим, номер версии и набор фракций в одном имени вроде Narva_AAS_v1, - а ротация - это просто список таких имён в SquadGame/ServerConfig/LayerRotation.cfg, который используется при MapRotationMode=LayerList. Моды берутся из Steam Workshop под app id игры 393380, скачиваются на сервер в SquadGame/Plugins/Mods/ и добавляют собственные слои, которые попадают в тот же файл ротации. Модовые серверы Squad ломают две вещи: имена, которые не совпадают в точности и пропускаются без ошибки, и версии модов, различающиеся у сервера и у игроков, из-за чего люди не могут зайти.

Это руководство сначала подробно разбирает слои и ротацию, а затем моды: как их ставить, как узнать имена их слоёв, как держать сервер и клиентов в одной версии и как собрать ротацию, на которой сообщество действительно останется. Остальное про сервер - установка, порты, лицензия, tick rate - в статье хостинг сервера Squad, а админы и баны - в статье Server.cfg и Admins.cfg в Squad.

Уровни, слои и как Squad их называет#

Squad разделяет два понятия, которые большинство игр смешивают:

  • Уровень (level) - это карта: Narva, Gorodok, Al Basrah, Yehorivka.
  • Слой (layer) - это настроенный раунд на этой карте: какой режим, какие флаги или тайники, какие фракции, какая техника, день или ночь. У одного уровня много слоёв.

Имена слоёв строятся по шаблону: <Map>_<Mode>_v<N>. Номер версии - не счётчик патчей карты; он различает разные раскладки одного режима на одной карте. Yehorivka_RAAS_v1 и Yehorivka_RAAS_v4 - разные раунды, с разными линиями и техникой.

Режимы, которые встречаются в именах:

Токен режимаРежимЧто это
AASAdvance and SecureФиксированная цепочка флагов, захватываются по порядку
RAASRandom AASЦепочка флагов каждый раунд выбирается случайно из набора
InvasionInvasionОдна сторона атакует, другая обороняется, у атакующих есть тикеты
InsurgencyInsurgencyПовстанцы защищают спрятанные тайники
DestructionDestructionАтакующие по очереди уничтожают цели
TCTerritory ControlСетка из шестиугольников, нужно удерживать большую часть карты
SkirmishSkirmishНебольшой слой, меньше игроков и техники
SeedSeedЧисто пехотный слой для почти пустого сервера

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

Как узнать настоящие имена слоёв

Надёжных источников три, в порядке предпочтения:

  1. Сам сервер. Свежие версии в ответ на ListLayers через RCON или консоль выдают все слои, которые знает сервер, включая слои модов. Сохраните этот вывод в файл и собирайте ротацию по нему.
  2. Лог сервера. При запуске в лог записывается загруженная ротация. Слой, который вы указали, но которого там нет, был пропущен.
  3. Админское меню в игре. Админы с правом changemap могут просматривать слои, выбирая следующий.

Копировать имена из таблицы сообщества нормально для планирования; сам файл ротации всегда нужно сверять с одним из трёх источников выше.

LayerRotation.cfg и режимы ротации#

При MapRotationMode=LayerList в Server.cfg сервер играет строки LayerRotation.cfg сверху вниз и идёт по кругу. LayerList_Randomized перемешивает их. RandomizeAtStart=true перемешивает один раз при запуске, что обычно не нужно, если вы продумали порядок.

SquadGame/ServerConfig/LayerRotation.cfg
// Evening rotation - alternate heavy and lightNarva_AAS_v1Sumari_Seed_v1Yehorivka_RAAS_v4Fallujah_Invasion_v1Gorodok_RAAS_v1Mestia_Skirmish_v1GooseBay_Invasion_v1

Свежие версии также принимают два тега фракций после имени слоя через пробелы, чтобы зафиксировать противостояние для этой записи, а не отдавать выбор игре. Обе фракции должны быть допустимы для этого слоя, а точный формат тегов менялся вместе с системой фракций и подразделений, поэтому прочитайте комментарии в начале своего LayerRotation.cfg из поставки и проверьте одну строку, прежде чем переделывать всю ротацию. Если строка с тегами фракций пропускается, первым делом подозревайте теги.

Альтернативы:

  • `LevelList` читает LevelRotation.cfg, по одной карте на строку, и даёт игре выбирать слой на каждой. Меньше работы, меньше контроля. Используйте вместе с ExcludedLayers.cfg, чтобы игра не выбирала слои, которые вам не нравятся.
  • Голосование. UseVoteLevel, UseVoteLayer и UseVoteFactions в Server.cfg, правила - в VoteConfig.cfg. Голосование заменяет ваш порядок выбором толпы, а толпа сходится на одних и тех же трёх слоях. ExcludedLayers.cfg, ExcludedLevels.cfg и ExcludedFactions.cfg не пускают лишнее в голосование.

Ротация, на которой люди остаются#

Ротация - самый сильный рычаг, который у вас есть, чтобы сервер Squad удерживал онлайн на протяжении вечера. Работающие приёмы:

  • Чередуйте вес. За RAAS-слоем с большим количеством техники - пехотный Invasion или карта поменьше. Игроки получают разнообразие, а нагрузка на CPU по раундам выравнивается - три слоя с бронетехникой подряд и утомляют, и чаще всего становятся моментом, когда проседает tick rate.
  • Ставьте любимые слои на пик. Если вы знаете, когда сервер заполнен сильнее всего, выстройте порядок так, чтобы слои, которые нравятся постоянным игрокам, приходились на это время. Если перезапуск стоит в расписании, сервер перезапускается в известное время, и позиция в ротации становится предсказуемой.
  • Сидинг отдельно. Seed-слои существуют потому, что карта на 100 игроков с восемью людьми скучна и опустошает сервер. Распространённый подход - короткая ротация для сидинга утром, которая переключается на основную, когда сервер переходит определённый порог.
  • Ночные слои - понемногу. Они необычные, и многим игрокам не нравятся. Максимум один на ротацию и никогда на пике, если сообщество само не просит.
  • Убирайте слои осознанно. Если слой стабильно опустошает сервер, уберите его. Число игроков при смене раунда - самый честный отзыв о карте, который вы получите.

Автоматически переключаться между ротацией для сидинга и основной базовый сервер не умеет. Сообщества делают это с помощью инструмента на RCON - обычно SquadJS, - который следит за числом игроков и ставит следующий слой, или с помощью двух подготовленных файлов ротации и планового перезапуска, который их меняет. Второй вариант грубее, но не требует дополнительного софта: держите LayerRotation.seed.cfg и LayerRotation.main.cfg и перед перезапуском копируйте один из них поверх рабочего файла. Про сторону перезапусков - статья плановые задачи, которые стоит завести.

Для разового управления во время раунда админы используют команды RCON или консоли:

code
ShowCurrentMapShowNextMapAdminSetNextLayer Yehorivka_RAAS_v4AdminChangeLayer Narva_AAS_v1

AdminSetNextLayer перебивает ротацию только на один раунд, после чего ротация продолжается. AdminChangeLayer сразу завершает текущий раунд, что игроки замечают, поэтому пользуйтесь им редко.

Моды из Workshop на сервере Squad#

Моды Squad - это предметы Steam Workshop, привязанные к игре с app id 393380, а не к выделенному серверу с id 403240; именно эта ошибка заставляет людей ходить по кругу. Сервер загружает моды, которые находит в SquadGame/Plugins/Mods/, - по одной папке на предмет Workshop, названной его числовым id.

Скачайте их через SteamCMD с анонимным входом, затем перенесите каждый предмет в папку модов:

bash
$ steamcmd +force_install_dir /home/squad/workshop +login anonymous \    +workshop_download_item 393380 1234567890 \    +workshop_download_item 393380 1234567891 +quit$ cp -r /home/squad/workshop/steamapps/workshop/content/393380/1234567890 \    /home/squad/server/SquadGame/Plugins/Mods/

На хостинговой панели эти команды обычно не нужно выполнять самому. Многие установки Squad дают во вкладке Startup поле для списка id Workshop через запятую, которые скачиваются при следующем запуске; где его нет, вы скачиваете предметы на своём компьютере (подписка в клиенте Squad кладёт их в workshop/content/393380/ вашей библиотеки Steam) и загружаете папки в SquadGame/Plugins/Mods/ по SFTP. Как устроены загрузки из Workshop в разных играх и почему они ломаются, объясняет статья моды Steam Workshop на выделенных серверах.

скачивание по idкопированиеподпискавход, если версии совпадаютSteam Workshopapp 393380SteamCMDна сервереИгрокте же моды и версииPlugins/Modsпапка на каждый idСервер Squadзагружает при старте
Как мод попадает на сервер Squad и к игрокам

Что моды могут и чего не могут

Моды Squad бывают от маленьких до огромных:

  • Моды карт добавляют новые уровни и их слои. Они самые большие, часто по несколько гигабайт каждый.
  • Моды фракций и техники добавляют подразделения, которые появляются на стандартных или модовых слоях.
  • Геймплейные переработки меняют правила, баллистику или весь режим игры. Сюда относятся крупные проекты вроде Global Escalation, у которых свои наборы слоёв.
  • Серверные инструменты в Squad редкость. Большая часть админских инструментов живёт вне игры и общается с ней через RCON.

Категории игрового контента, необязательного для клиента, нет. Чтобы зайти, у каждого игрока должны быть те же предметы тех же версий. Это одно правило определяет, какой модовый сервер вы можете держать: сервер с одним популярным набором карт ещё может привлекать случайных людей; сервер с восемью модами и двадцатью гигабайтами загрузок - это сервер для уже существующего сообщества, которое будет следовать инструкциям.

Как добавить слои модов в ротацию#

Слои мода попадают в LayerRotation.cfg точно так же, как стандартные. Сложность в том, чтобы узнать, как они называются. Авторы модов называют слои как хотят, и имя в описании мода не всегда совпадает с внутренним.

  1. Установите мод и перезапустите сервер.
  2. Выполните ListLayers через RCON и найдите новые записи или посмотрите в логе, какие слои зарегистрировал мод.
  3. Добавьте имена в LayerRotation.cfg, лучше по одному, и перезапустите сервер.
  4. Проверьте по логу, что каждый загрузился, затем поставьте его через AdminSetNextLayer, чтобы проверить в настоящем раунде, прежде чем он попадёт в вечернюю ротацию.

Ротация из стандартных и модовых слоёв - это нормально, но осознанно выбирайте, что идёт первым после перезапуска. Если первый слой - модовая карта, каждый игрок, не скачавший мод, получает отказ ровно тогда, когда ваш сервер пытается заполниться.

Обновления: как держать сервер и моды в одной версии#

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

  • Обновление Squad. Клиенты обновляются через Steam и больше не могут зайти на старый сервер. Серверу нужен app_update 403240 validate. Крупные обновления Squad обычно перестраивают движковую часть, и моды, собранные под предыдущую версию, перестают загружаться, пока авторы их не переопубликуют.
  • Обновление мода. Автор публикует новую версию; Steam у игроков обновляет предмет автоматически; на вашем сервере остаётся старая копия, пока вы не скачаете её заново. Теперь никто не может зайти, пока вы этого не сделаете.

Поэтому порядок действий в любой день обновления такой:

  1. Остановите сервер и сделайте backup SquadGame/ServerConfig/ и своего списка модов.
  2. Обновите сервер через SteamCMD.
  3. Проверьте страницу каждого мода в Workshop на наличие релиза после обновления. Уберите каждый мод, который не обновился, и вычеркните его слои из ротации.
  4. Скачайте заново обновившиеся моды.
  5. Запустите сервер, найдите в логе загруженную ротацию и ошибки загрузки модов и поставьте модовый слой следующим, чтобы проверить его.

Модовый сервер никогда не должен обновляться автоматически в день патча. Более общая версия этого порядка - в статье что делать, когда обновление мода всё ломает.

Ресурсы: во что моды обходятся серверу#

Моды влияют на три ресурса неравномерно:

РесурсВлияние модовЧто делать
ДискБольшое - наборы карт весят гигабайты каждыйБерите диск с запасом на две версии каждого мода во время обновлений
ПамятьУмеренное - большие карты увеличивают рабочий набор раундаСмотрите пиковое потребление памяти на самом тяжёлом модовом слое, а не среднее
CPUЗависит от слоя - модовые слои с обилием техники дороже на каждый tickПроверьте tick rate на модовом слое при полном сервере, прежде чем оставлять его

Пункт про CPU стоит подчеркнуть. Tick rate в Squad определяется одним игровым потоком, поэтому модовый слой, набитый техникой и вертолётами, может уронить tick rate на сервере, который спокойно держит 50 Hz на стандартных слоях. Если tick rate всегда проседает на конкретном модовом слое, исправлять нужно ротацию, а не тариф. Как понять, какого ресурса на самом деле не хватает, объясняет статья CPU или RAM для игровых серверов.

В панели графики CPU и памяти в консоли за полный раунд на новом слое скажут вам больше, чем любые цифры на странице Workshop. Сделайте backup перед установкой большого набора карт - в RE:NODE бэкапы есть на каждом тарифе и восстанавливаются одной кнопкой, - чтобы откат был восстановлением, а не вечером удаления папок.

Решение проблем#

Слой из ротации никогда не играется. Имя неверное, устаревшее или принадлежит моду, который не установлен или не загрузился. Проверьте ListLayers и лог запуска.

Игроков кикает из-за несовпадения модов. У них другая версия мода, чем на сервере, или какого-то мода нет. Если мод обновился, обновите копию на сервере; иначе пусть игрок проверит целостность предмета в Steam.

Сервер не запускается после добавления мода. Мод собран под другую версию Squad или скачан не полностью. Удалите его папку из Plugins/Mods, запустите сервер и убедитесь, что стандартная игра работает, прежде чем пробовать снова.

Диск заполняется во время обновления. Squad и его моды обновляются на месте, но временным файлам нужно место. Удалите неиспользуемые моды и держите запас не меньше размера самого большого мода.

Голосование всегда выбирает одни и те же слои. Так голосование и работает. Исключите доминирующие слои из голосования на неделю или переключитесь на LayerList.

Модовый слой загружается, но tick rate падает. Слишком много техники или слишком большая игровая зона для вашего CPU при вашем числе слотов. Перенесите его на более спокойное время или уберите.

FAQ#

Чем уровень отличается от слоя в Squad?

Уровень - это карта. Слой - это конкретный раунд на этой карте: режим, раскладка флагов, фракции, техника и освещение - с именем вроде Gorodok_RAAS_v1. Ротации собираются из слоёв, когда MapRotationMode равен LayerList.

Куда класть моды Squad на выделенном сервере?

В SquadGame/Plugins/Mods/, по одной папке на предмет Workshop, названной его числовым id. Они скачиваются из Workshop под app id 393380 - это id игры, а не выделенного сервера.

Нужно ли игрокам ставить те же моды?

Да, каждый геймплейный мод той же версии. Необязательного для клиента контента для карт, фракций или правил нет. Опубликуйте коллекцию в Workshop или простой список, чтобы игроки могли подписаться до попытки зайти.

Как узнать имена слоёв, которые добавляет мод?

Установите его, перезапустите сервер и выполните ListLayers через RCON или посмотрите в логе запуска, какие слои зарегистрировал сервер. Имена в описании мода не всегда совпадают с внутренними.

Стоит ли разрешать модовому серверу обновляться автоматически?

Нет. Обновление Squad обычно ломает часть модов, пока авторы их не переопубликуют, а обновление мода ломает вход, пока на сервере не будет той же версии. Обновляйте вручную, по порядку, при остановленном сервере.

Можно ли держать только модовые слои?

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


Комментарии

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

0/2000