RE:NODE

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

Выделенный сервер Enshrouded: конфиг и порты

Настройка выделенного сервера Enshrouded: enshrouded_server.json по ключам, группы пользователей и пароли, порты, перенос локального мира и сохранность сохранений.

0 прочтений

Выделенный сервер Enshrouded - это бесплатное приложение под Windows (приложение Steam 2278520), которое настраивается одним файлом enshrouded_server.json в папке установки. Он вмещает до 16 игроков, требует одного открытого UDP-порта (query-порт, по умолчанию 15637) и хранит мир в папке savegame в виде небольшого набора файлов с шестнадцатеричными именами. Доступом управляют группы пользователей: у каждой группы свой пароль и свои права, и то, какой пароль вводит игрок, решает, в какую группу он попадёт. Консоли администратора и RCON нет - кикают и банят в списке игроков в игре те, чья группа это позволяет. Для полной группы серверу вполне хватает 6-8 GB памяти. Остальное - детали, и именно в деталях миры и теряются.

Как устроен хостинг Enshrouded#

В Enshrouded можно играть тремя способами: одному, на мире, который хостит из игры один из игроков, или на выделенном сервере. Хостинг из игры привязывает мир к компьютеру хоста: когда он выходит, мир уходит вместе с ним. Выделенный сервер держит мир запущенным, даже когда никого нет в сети, и позволяет каждому в группе играть по своему расписанию.

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

  • Персонажи хранятся на компьютере каждого игрока, а не на сервере. Сервер хранит мир - рельеф, постройки, сундуки, NPC, флаги прогресса. Инвентарь и навыки персонажа игрок приносит с собой. Поэтому один персонаж может посещать несколько миров, и поэтому сервер не может запретить кому-то прийти со снаряжением из другого места.
  • Исполняемый файл сервера есть только под Windows. Keen Games выпускают сборку под Windows. На машине с Linux она работает под Wine или Proton - это работает и стоит немного памяти. Такая конфигурация в общем виде разобрана в статье Wine и Proton для серверов только под Windows.

Игра находится в раннем доступе, и файл конфигурации сервера не раз менял структуру. Старые гайды упоминают единственное поле password и отдельный игровой порт. Текущие сборки используют группы пользователей и только query-порт. Там, где это руководство приводит значение по умолчанию, сверяйте его с файлом, который сгенерировал ваш сервер.

Требования#

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

ГруппаRAMCPUДиск
1-4 игрока4-6 GB2 ядра30 GB
5-10 игроков6-8 GB2-3 ядра35 GB
11-16 игроков, большие базы8-12 GB3-4 ядра40 GB

Если сервер работает под Wine, добавьте немного памяти. Установка занимает несколько гигабайт и растёт с обновлениями; само сохранение сначала маленькое и растёт по мере того, как мир перекапывают и застраивают. Как и в большинстве игр на выживание, быстрое ядро важнее множества ядер. Прежде чем винить сервер в лагах, выясните, действительно ли он упирается в предел, - как это прочитать по графикам, показано в статье CPU или RAM для игровых серверов.

Установка и первый запуск#

На собственной машине SteamCMD скачивает сервер анонимно. Поскольку это сборка под Windows, при скачивании на Linux принудительно укажите платформу Windows:

bash
$ steamcmd +@sSteamCmdForcePlatformType windows \    +force_install_dir /home/enshrouded/server \    +login anonymous +app_update 2278520 validate +quit

Запустите enshrouded_server.exe один раз (на Linux - под Wine) и дайте ему поработать, пока он не сообщит о готовности, затем остановите. Первый запуск записывает enshrouded_server.json со значениями по умолчанию и создаёт папки savegame и logs. Редактируйте файл только при остановленном сервере: сервер читает его при запуске. Шаг скачивания подробнее разобран в статье SteamCMD с объяснениями.

enshrouded_server.json по ключам#

Только что сгенерированный файл в текущей сборке выглядит примерно так (сокращено):

enshrouded_server.json
{  "name": "Longship Enshrouded",  "saveDirectory": "./savegame",  "logDirectory": "./logs",  "ip": "0.0.0.0",  "queryPort": 15637,  "slotCount": 16,  "gameSettingsPreset": "Default",  "gameSettings": {    "playerHealthFactor": 1,    "enemyDamageFactor": 1,    "shroudTimeFactor": 1,    "tombstoneMode": "AddBackpackMaterials",    "dayTimeDuration": 1800000000000,    "nightTimeDuration": 720000000000  },  "userGroups": [    {      "name": "Admin",      "password": "change-this-admin-pass",      "canKickBan": true,      "canAccessInventories": true,      "canEditBase": true,      "canExtendBase": true,      "reservedSlots": 0    }  ]}

Ключи верхнего уровня:

КлючПо умолчаниюЧто делает
nameEnshrouded ServerИмя в браузере серверов
saveDirectory./savegameГде хранится мир
logDirectory./logsКуда пишутся логи
ip0.0.0.0Адрес для привязки; оставьте как есть
queryPort15637UDP-порт, к которому подключаются игроки и браузер серверов
slotCount16Лимит игроков; 16 - максимум
gameSettingsPresetDefaultDefault, Relaxed, Hard, Survival или Custom
gameSettings-Отдельные правила, применяются при пресете Custom
userGroups-Роли, у каждой пароль и права

JSON строгий. Лишней запятой после последнего элемента списка, пропущенной кавычки или строки комментария достаточно, чтобы сервер отверг файл или откатился к значениям по умолчанию. Прежде чем запускать сервер, вставьте файл в JSON-валидатор или в редактор кода, который подсвечивает синтаксические ошибки: одна подсветка синтаксиса помогает заметить пропущенную скобку, но не всегда о ней скажет.

Игровые настройки#

gameSettingsPreset выбирает набор настроек. Чтобы использовать отдельные значения, поставьте его в Custom и отредактируйте gameSettings; при именованном пресете отдельные значения игнорируются. Подборка настроек, о которых спрашивают игроки:

НастройкаДействие
playerHealthFactor, playerStaminaFactor, playerManaFactorЗапасы здоровья, выносливости и маны игрока, 1 - норма
enemyDamageFactor, enemyHealthFactorСложность обычных врагов
bossDamageFactor, bossHealthFactorСложность боссов
shroudTimeFactorСколько можно находиться в Shroud
tombstoneModeЧто выпадает при смерти
enableDurabilityИзнашивается ли снаряжение
enableStarvingDebuffШтраф за то, что персонаж не ест
miningDamageFactorСкорость копания и добычи
plantGrowthSpeedFactorСкорость фермерства
resourceDropStackAmountFactorРесурсы за один дроп
factoryProductionSpeedFactorСкорость станков для крафта
experienceCombatFactorОпыт за бои
dayTimeDuration, nightTimeDurationДлина дня и ночи в наносекундах

Значения времени сбивают с толку: они в наносекундах, так что 1800000000000 - это 30 минут. Добавляйте и убирайте нули аккуратно. Набор доступных настроек расширялся с обновлениями; файл, который сервер записывает при первом запуске, перечисляет все настройки, которые понимает ваша версия, и именно на него стоит опираться.

tombstoneMode - настройка, о которой стоит договориться всей группой. AddBackpackMaterials выбрасывает при смерти материалы, но оставляет снаряжение; Everything выбрасывает всё; NoTombstone не выбрасывает ничего. Для неспешной группы значение по умолчанию справедливо. Для группы, которая хочет риска, Everything делает Shroud по-настоящему опасным.

Группы пользователей, пароли и права#

Группы пользователей заменили единый пароль сервера из ранних версий. У каждой группы есть:

  • name - видно администраторам, а не игрокам.
  • password - то, что игрок вводит при входе. Пароль определяет группу.
  • canKickBan - может кикать и банить из списка игроков в игре.
  • canAccessInventories - может открывать сундуки других игроков.
  • canEditBase - может строить и менять существующие базы.
  • canExtendBase - может ставить алтари пламени и расширять базы.
  • reservedSlots - слоты, зарезервированные для этой группы, чтобы она могла зайти на заполненный сервер.

Разумная схема для группы друзей - три группы: Admin для одного-двух человек со всеми правами и зарезервированным слотом; Friend, которая может строить и открывать сундуки; и Guest для гостей, которые могут играть, но не могут трогать базы и сундуки. Сообщайте пароль Admin как можно меньшему числу людей - любой, у кого он есть, может кикнуть и забанить всех остальных. В поздних сборках появились дополнительные права; сгенерированный файл показывает, что есть в вашей версии.

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

Порты и подключение#

ПортПротоколНазначение
15637UDPQuery и игровые подключения в текущих сборках
15636UDPИгровой порт в старых сборках, где ещё есть gamePort

Текущие сборки используют только query-порт. Если в сгенерированном конфиге есть ключ gamePort, ваша сборка его ещё использует, и открыты должны быть оба порта. Оба - UDP; правило для TCP - классическая причина, по которой сервер работает, но недоступен. Зачем вообще нужны query-порты, объясняется в статье порты игровых серверов.

Игроки находят сервер во внутриигровом браузере по имени или заходят, введя адрес и порт напрямую. Новый сервер появляется в списке через несколько минут. Если прямое подключение работает, а в списке сервера нет, с сервером всё в порядке, просто список медленный.

Как перенести локальный мир на сервер#

Мир, в который играли локально или который хостили из игры, можно перенести на выделенный сервер. Локальные миры сохраняет игровой клиент - у версии из Steam в папке Steam userdata для приложения 1203620 или в Saved Games\Enshrouded в папке пользователя, в зависимости от настроек и версии.

  1. Остановите сервер и сделайте копию его папки savegame.
  2. На своём компьютере найдите нужный мир: файл с шестнадцатеричным именем плюс файлы с тем же именем и суффиксами вроде -index и пронумерованными копиями. Скопируйте их.
  3. Сервер загружает мир с именем 3ad85aea из своей папки сохранений. Переименуйте главный файл своего мира и его файл -index в это имя, сохранив суффиксы.
  4. Загрузите их в папку savegame сервера, заменив то, что там есть.
  5. Запустите сервер и зайдите. Вы должны увидеть свой мир со своими базами.

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

Загружайте по SFTP или через файловый менеджер - подробности в статье SFTP и файловый менеджер. Файлы мира достаточно маленькие, так что подойдёт любой способ.

Сохранения, резервные копии и обновления#

Сервер записывает мир в savegame по собственному расписанию и хранит рядом несколько сменяющихся копий в виде пронумерованных копий файла мира. Они защищают от повреждённой записи, но не от удалённого сервера и не от ошибки: они на том же диске.

  • Останавливайте штатно. Штатная остановка записывает мир. Убитый процесс теряет всё, что произошло с последнего сохранения.
  • Делайте копии в другое место ежедневно и перед каждым обновлением игры. Обновления раннего доступа меняли формат сохранения; сохранение, сделанное до обновления, - ваш путь назад.
  • Иногда восстанавливайте, чтобы доказать, что копия рабочая. Почему это важно, объясняется в статье резервные копии, которые действительно восстанавливаются.
  • Обновляйте сервер, когда обновляется игра. Клиент новой версии не может зайти на старый сервер.

Перезапуски и долгоживущие миры

Сервер Enshrouded, как и большинство серверов игр на выживание в раннем доступе, тем больше потребляет памяти, чем дольше работает и чем больше мира игроки перекопали. Еженедельный или ежедневный перезапуск в тихий час держит потребление ровным и стоит минуту. Поставьте его в расписание, а не полагайтесь на то, что кто-то вспомнит, и объявляйте о нём в чате группы: внутриигровой команды объявления, чтобы заранее предупредить игроков, нет, так что перезапуск при людях в сети просто их отключит. О выборе времени - в статье расписания перезапусков, которые помогают.

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

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

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

Enshrouded у хостера с панелью#

В панели на базе Pterodactyl настройки сервера лежат в enshrouded_server.json и правятся в файловом менеджере. Отдельной строки для Enshrouded в каталоге RE:NODE нет, так что что предлагается, смотрите в списке игровых серверов. Общие правила действуют у любого хостера: дайте серверу 6-8 GB на полную группу, откройте query-порт как UDP и делайте копии папки savegame на другую машину. В RE:NODE слоты резервных копий есть в каждом игровом тарифе, а вкладка Schedules может запускать ночной backup и перезапуск; сервер, упёршийся в лимит памяти, останавливают и чисто перезапускают, а не оставляют уходить в swap, что для Enshrouded означает потерю всего, что произошло с последнего сохранения, так что берите ресурсы с запасом.

Если что-то не работает#

Сервера нет в браузере. Проверьте, что query-порт открыт как UDP, что queryPort совпадает с выделенным портом, и подождите несколько минут. Проверьте прямым подключением.

Игроки не могут зайти с правильным паролем. У двух групп один пароль, или JSON не загрузился и сервер работает на значениях по умолчанию. Поищите в логе ошибку конфигурации.

Сервер игнорирует мои игровые настройки. gameSettingsPreset не равен Custom.

Мой загруженный мир не загрузился, я получил новый. Файлы не переименовали в 3ad85aea с их суффиксами или положили не в ту папку.

Сутки длятся минуты или часы. dayTimeDuration и nightTimeDuration задаются в наносекундах; пропущенная или лишняя группа нулей меняет их в тысячу раз.

После правки конфига сервер не запускается. Неверный JSON. Ищите лишнюю запятую или пропущенную кавычку.

FAQ#

Сколько игроков вмещает сервер Enshrouded?

Шестнадцать. Выше slotCount не поднять. Зарезервированные слоты позволяют группе администраторов зайти на заполненный сервер.

Есть ли в Enshrouded консоль команд администратора?

Нет. Права администратора дают группы пользователей: группа с canKickBan может кикать и банить из списка игроков в игре. RCON нет.

Переносятся ли персонажи на выделенный сервер?

Персонажи хранятся на компьютере каждого игрока и приходят вместе с ним. Переносить нужно только мир.

Можно ли запустить сервер Enshrouded на Linux?

Только через Wine или Proton, потому что сервер - сборка под Windows. У многих это работает и требует чуть больше памяти.

Поддерживает ли Enshrouded моды на сервере?

Официально нет. Планируйте ванильный сервер и следите за изменениями в патчноутах игры.


Комментарии

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

0/2000