RE:NODE

Лимит игроков в Valheim: потолок в 10 человек и большие группы

Автор Команда RE:NODE
12 мин чтения


Ванильный выделенный сервер Valheim принимает одновременно десять игроков, а одиннадцатого отклоняет с сообщением "Server is full". Ни аргумент запуска, ни конфигурационный файл, ни настройка хостинга это не меняют, потому что число прописано в самой игре. Моды могут поднять лимит, и группы по пятнадцать-двадцать человек действительно так играют, но цена реальна: больше памяти, больше трафика, враги, которые масштабируются странным образом, и куда более высокий шанс, что соединение одного игрока испортит вечер всем. В этой статье разбираем, откуда берётся потолок, что на самом деле ломается за его пределами, как работают моды, снимающие лимит, и какой запас ресурсов нужен большой группе, прежде чем такой мод ставить.

Общая настройка сервера - порты, аргументы запуска, сохранения - описана в руководстве по выделенному серверу Valheim. Здесь предполагается, что сервер у вас уже работает, а группа из него выросла.

Откуда берётся лимит в 10 игроков#

Ограничение живёт в сетевом коде сервера. Когда клиент подключается, он отправляет информацию о своём peer, а сервер проверяет, сколько игроков уже в мире, прежде чем принять нового. При десяти соединение отклоняется со статусом "full", и клиент показывает Server is full. Ни один аргумент запуска выделенного сервера эту проверку не затрагивает, поэтому поиск -maxplayers ничего не даёт: такого аргумента просто нет.

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

  • Владение зонами. Мир поделён на зоны, и каждую зону, рядом с которой есть игроки, просчитывает один клиент - обычно тот, кто зашёл туда первым. Сервер хранит мир и передаёт состояние, но значительная часть реальной симуляции происходит на машинах игроков. Каждый дополнительный игрок - это ещё одна машина, владеющая зонами, и ещё одно соединение, от которого должны слышать все остальные клиенты поблизости.
  • Синхронизация объектов. Всё в мире - сундук, бревно, выпавшая смола, стена - это сетевой объект. Когда игроки собираются вместе, каждый клиент в этой области должен оставаться синхронизированным со всеми объектами, которые меняют остальные. Этот трафик растёт быстрее, чем число игроков, если люди скучиваются на одной базе.
  • Баланс. Здоровье и урон существ масштабируются в зависимости от числа игроков рядом, а бои с боссами, рейдовые события и скорость добычи ресурсов настроены на небольшую группу, а не на толпу.

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

Что видит одиннадцатый игрок#

Отказ происходит во время рукопожатия, до загрузки мира: одиннадцатый игрок видит экран подключения, затем ошибку "Server is full" и возвращается в меню. В мир ничего не записывается, ничего не теряется. Несколько особенностей застают группы врасплох:

  • У администраторов нет зарезервированного слота. Наличие в adminlist.txt не позволяет пройти проверку в ванильной игре. Если десять друзей онлайн, а администратору нужно зайти и что-то починить, кому-то придётся выйти.
  • Игроки с кросс-платформой считаются так же. Игроки Steam, Microsoft Store и Xbox занимают одни и те же десять слотов. Ретранслятор PlayFab, который использует кроссплей, ёмкости не добавляет.
  • Оборвавшееся соединение ненадолго держит слот. Игрок, у которого упала игра, может оставаться в списке, пока сервер не заметит тайм-аут. Если сразу после вылета вам говорят, что сервер полон, подождите минуту и повторите попытку, прежде чем решать, что зашёл кто-то другой.

Моды, поднимающие лимит#

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

Самый распространённый вариант - ValheimPlus (поддерживаемый форк сообщества). В его конфигурационном файле BepInEx/config/valheim_plus.cfg есть секция [Server] с переключателем и числом игроков:

BepInEx/config/valheim_plus.cfg
[Server]; Turn the section on, or nothing below appliesenabled = true; Maximum players on the servermaxPlayers = 16

ValheimPlus - крупный мод, меняющий десятки других значений, и он сверяет собственную версию между сервером и клиентом, поэтому выбор его ради лимита означает, что его ставят и все игроки. Для группы только на ПК, которая и так играет с модами, это нормально. Для группы, которая в остальном играет в ваниль, это слишком много мода ради одного числа, к тому же он полностью закрывает вход игрокам Xbox и Game Pass, поскольку те ничего устанавливать не могут. Названия ключей в ValheimPlus менялись между форками и релизами, поэтому после первого запуска прочитайте сгенерированный файл, а не копируйте блок выше вслепую.

На Thunderstore есть и небольшие моды с единственной задачей - поднять лимит. Поищите там по запросу "max players" в сообществе Valheim, посмотрите, когда каждый обновлялся, и отдавайте предпочтение тому, где сказано, что он работает только на стороне сервера. Мод с одной функцией проще поддерживать актуальным, чем ValheimPlus, но маленький мод с одним автором - как раз тот, который чаще всего перестают поддерживать после патча игры. Прежде чем ставить что-то незнакомое на сервер, к которому подключаются другие люди, стоит прочитать о вредоносных плагинах и модах.

Какой бы вариант вы ни выбрали, ставьте его через BepInEx, как описано в статье моды для сервера Valheim через BepInEx, и убедитесь по журналу запуска, что мод загрузился. Мод лимита, который молча не загрузился, выглядит точно так же, как ваниль: одиннадцатого отклоняют, и никто не понимает почему.

Что ломается после десяти игроков#

На одиннадцатом ничего не падает. Всё постепенно ухудшается, и порядок, в котором это происходит, предсказуем.

Масштабирование врагов

Существа получают дополнительное здоровье и урон за каждого игрока в радиусе действия. В текущих сборках масштабирование учитывает игроков примерно в 200 метрах и перестаёт считать после пяти, так что бой, в котором вокруг босса стоят двенадцать человек, - это не сложность на двенадцать игроков, а сложность на пятерых, только бьют его двенадцать. Боссы тают, а рейды, рассчитанные на давление на небольшую группу, становятся тривиальными. На краях возникает обратная проблема: одиночка, бродящий рядом с людной базой, получает усиленных существ, не имея толпы, чтобы с ними сражаться. Точные константы менялись между версиями, поэтому относитесь к числам как к ориентиру. Если группа хочет вызова, честный рычаг - модификатор мира combat, описанный в статье модификаторы и пресеты мира Valheim, а не надежда на то, что больше игроков сделает игру сложнее.

Сетевая нагрузка на главной базе

Настоящий предел для больших групп - не сервер, а главная база. Когда пятнадцать человек стоят в нескольких соседних зонах, каждый клиент должен успевать за каждым объектом, которого касаются остальные: наполняются плавильни, открываются сундуки, едут телеги, ставятся и ломаются элементы построек. Valheim отправляет обновления мира с ограниченной частотой на соединение, и когда очередь забивается, симптомы такие: рывки персонажа, двери, которые открываются с опозданием, и предметы, возвращающиеся в сундуки. Игрок с худшим соединением обычно владеет хотя бы одной из загруженных зон, что ухудшает ситуацию для всех рядом с ним.

Это тот же эффект, что описан в статье производительность и лаги сервера Valheim, только усиленный. Большая группа ощущает его в первую очередь в портальном хабе и возле плавилен, потому что именно там все собираются одновременно.

Память и время сохранения

Больше игроков исследуют больше карты параллельно, а каждая исследованная и застроенная зона увеличивает файл мира и то, что сервер держит в памяти. Группа из двадцати человек не просто использует больше RAM, пока она онлайн: она быстрее создаёт больший мир, и пауза на сохранение растёт вместе с ним. Эта пауза происходит каждые -saveinterval секунд, и при большом мире и большой группе онлайн её замечают.

Во что большая группа обходится серверу#

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

ИгрокиRAMCPUЧто ломается первым
До 10, ваниль3-4 GB1.5-2 ядраНичего, если базы разнесены
11-15, мод лимита5-6 GB2-2.5 ядраЛаги на главной базе
16-20, мод лимита6-8 GB2.5-3 ядраЛаги везде, где собираются люди, более долгие сохранения
20+, мод лимита8 GB и больше3+ ядраРассинхрон и кики; игра на это не рассчитана

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

На RE:NODE линейка Valheim идёт от 2 GB до 8 GB, так что верхний тариф покрывает группу с модами примерно из двадцати человек с запасом на сами моды. Переход на следующий тариф меняет лимит существующего сервера, а не пересоздаёт его, поэтому можно начать с тарифа пониже и переходить, когда график памяти в консоли подскажет, что пора, а не гадать заранее.

Как заставить большую группу работать#

Большая часть лагов у крупной группы вызвана тем, где стоят люди, а не тем, сколько их. Исправления ничего не стоят:

  1. Разнесите базы. Отдельные базы - это отдельные зоны с отдельными владельцами. Двадцать человек на четырёх базах работают намного плавнее, чем двадцать на одной. О расстояниях подробнее в статье расположение баз на общих серверах.
  2. Держите портальный хаб небольшим. Хаб с сорока порталами и стеной сундуков - самое дорогое место на карте. Размещайте хранилища рядом с тем местом, где ими пользуются, а не все вплотную к хабу.
  3. Сокращайте интервал сохранения, а не увеличивайте. Соблазнительно растянуть -saveinterval, чтобы избежать паузы на сохранение. На большом мире это лишь делает паузу реже, а потери при падении больше. Разумный диапазон - от десяти до двадцати минут.
  4. Перезапускайте по расписанию. Еженедельный перезапуск в час, когда никто не играет, не даёт памяти расти. О том, как часто и зачем, читайте в статье расписания перезапуска, которые помогают.
  5. Попросите игрока с худшим соединением по возможности не заходить в самую людную зону. Это несправедливо, но это самое большое улучшение на загруженной базе, потому что владение зоной переносит симуляцию на его машину.

Помогают и моды, улучшающие сеть. Например, Better Networking от CW_Jesse сжимает трафик и меняет объём данных, отправляемых за одно обновление. Моды этой категории обычно нужно ставить и на сервер, и на все клиенты, и, как любые моды, их нужно обновлять после патчей игры. Прежде чем что-то предполагать, прочитайте страницу мода: на какую сторону он ставится.

Альтернативы повышению лимита#

Прежде чем править сервер, подумайте, действительно ли группе нужно, чтобы все были в одном мире одновременно.

  • Два мира, по плану на каждый. Основной мир и второй - для тех, кто хочет вырваться вперёд или играть на более сложном пресете. Персонажи хранятся на машине игрока, поэтому любой может переходить между мирами со своим снаряжением. Каждый сервер - обычный ванильный сервер со своими десятью слотами.
  • Расписание. Многие большие группы обнаруживают, что одновременно в игре бывает всего шесть-семь человек. Две недели понаблюдать, кто реально онлайн, стоит до любых покупок: лимит может так и не быть достигнут.
  • Сначала кроссплей, потом моды. Если хотя бы один человек в группе играет на Xbox, мод лимита с установкой на клиенте отпадает. Совместим с консольными игроками только мод лимита, работающий исключительно на стороне сервера, и стоит убедиться, что мод действительно серверный, прежде чем обещать кому-то слот.

Диагностика повышенного лимита#

Одиннадцатый игрок по-прежнему получает "Server is full". Мод не загрузился или его настройка не включена. Найдите в журнале запуска строку загрузки плагина, затем проверьте в конфигурации переключатель enabled в нужной секции. В частности, ValheimPlus игнорирует все значения в секции, где enabled равно false.

Игроков кикает при подключении после установки мода. Мод проверяет версию, а у клиента его нет или версия другая. Подробно это разобрано в статье кик из-за несовпадения версий модов.

Вчера работало, после обновления перестало. Вышел патч игры, и мод лимита либо не загружается, либо цепляется за метод, которого больше нет. Найдите исключение с упоминанием мода в BepInEx/LogOutput.log. Пока автор не обновит мод, на сервере снова десять игроков.

Сервер показывает 12 игроков, но у всех лаги. Посмотрите, где они стоят. Большие группы лагают там, где собираются, и обычно лечится это расстоянием между базами, а не более мощным тарифом.

Во время загруженных вечеров память упирается в лимит. Мир вырос. Сопоставьте график памяти с числом игроков за неделю; если дело в мире, поможет тариф побольше, а если память растёт постепенно и без игроков онлайн, больше пользы даст перезапуск по расписанию.

FAQ#

Можно ли поднять лимит игроков в Valheim без модов?

Нет. Проверка находится в коде игры, и никакой аргумент запуска, конфигурационный файл или настройка хостинга её не меняют. Любой хостинг, рекламирующий больше десяти игроков Valheim, использует мод.

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

Только если этого требует сам мод. Проверка числа игроков выполняется на сервере, поэтому моду лимита, работающему только на стороне сервера, ничего на клиентах не нужно. ValheimPlus, самый частый выбор, сверяет версию между сервером и клиентом, так что с ним у всех должна стоять одна и та же версия.

Входят ли администраторы в лимит игроков?

Да. В ванильном Valheim нет зарезервированного слота для администратора. Если онлайн десять человек, администратора отклонят, как любого другого.

Реально ли 20 игроков на одном сервере Valheim?

Это работает для групп, которые расходятся по карте и играют в разное время. Для групп, где все играют одновременно на одной базе, это мучение. Сервер справляется с 8 GB и тремя ядрами; страдает сетевое взаимодействие между игроками, собравшимися в одном месте.

Меняет ли кроссплей лимит игроков?

Нет. Игроки Xbox, Game Pass и Steam делят те же десять слотов, а консольные игроки не могут устанавливать моды, поэтому мод лимита с установкой на клиент делает сервер только для ПК.