RE:NODE

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

Sons of the Forest: настройки и сохранения

Как выбрать настройки сервера Sons of the Forest под свою группу, поменять правила существующего мира и переносить сохранения на выделенный сервер, обратно и между слотами.

0 прочтений

У выделенного сервера Sons of the Forest два вида настроек, и путаница между ними - источник большей части недоразумений. Настройки сервера в dedicatedserver.cfg - имя, пароль, интервал сохранения, поведение при простое - применяются при каждом запуске. Правила игры - GameMode и всё в CustomGameModeSettings - читаются только при создании сохранения, а затем хранятся внутри самого сохранения в GameSetupSaveData.json. Поэтому изменить сложность существующего мира можно либо начав новый слот, либо аккуратно отредактировав этот файл, а перенос мира между машинами означает копирование целой пронумерованной папки слота, потому что правила путешествуют вместе с ней. В этом руководстве разобраны выбор правил для вашей группы, содержимое папки сохранения, изменение существующего мира и перенос сохранений на сервер, с него и между слотами.

Установка, каждый ключ dedicatedserver.cfg, порты и список владельцев описаны в руководстве по выделенному серверу Sons of the Forest. Эта статья опирается на него.

Какие настройки когда применяются#

НастройкаГде хранитсяКогда вступает в силу
ServerName, Password, MaxPlayers, портыdedicatedserver.cfgПри каждом запуске
SaveSlot, SaveModededicatedserver.cfgПри каждом запуске
SaveInterval, IdleDayCycleSpeed, целевая частота кадровdedicatedserver.cfgПри каждом запуске
GameSettings (восстановление деревьев, урон постройкам)dedicatedserver.cfgПри каждом запуске
GameModededicatedserver.cfg, затем копируется в сохранениеТолько при создании нового сохранения
CustomGameModeSettingsdedicatedserver.cfg, затем копируется в сохранениеТолько при создании нового сохранения
Владельцыownerswhitelist.txtПри каждом запуске

На практике это значит вот что: имя сервера или интервал сохранения можно менять когда угодно, с перезапуском. Восстановление деревьев или урон постройкам на существующем мире тоже переключаются перезапуском. А вот агрессию врагов, длину сезонов или штрафы выживания для существующего мира через конфиг не поменять, и сервер не предупредит, что проигнорировал вас.

Ещё два момента, которые стоит знать до выбора:

  • Любой ключ `dedicatedserver.cfg` можно переопределить в командной строке с префиксом -dedicatedserver., например -dedicatedserver.SaveSlot "2". Вкладка Startup в панели часто задаёт значения именно так, и значение из командной строки сильнее файла. Если правка файла будто ничего не меняет, проверьте команду запуска.
  • Файл - строгий JSON. Никаких комментариев, никакой запятой после последнего ключа, только прямые кавычки. Неправильно оформленный файл останавливает запуск с ошибкой конфигурации, а не тихо откатывается к значениям по умолчанию.

Рецепты настроек для реальных групп#

Пресеты - Peaceful, Normal, Hard, HardSurvival, Creative - подходят многим группам. Custom - для тех случаев, когда не подходит ни один. Ниже отправные точки в виде значимого фрагмента dedicatedserver.cfg. Если регистр значений в вашем сгенерированном файле отличается, берите его оттуда: документация и сгенерированный файл не всегда совпадали.

Группа, которая играет урывками и в основном строит

Каннибалы всё равно приходят, но никто не умирает с голоду, пока все на работе, а база защищена от самых тяжёлых набегов.

json
"GameMode": "Custom","IdleDayCycleSpeed": 0.0,"SaveInterval": 300,"GameSettings": {  "Gameplay.TreeRegrowth": true,  "Structure.Damage": false},"CustomGameModeSettings": {  "GameSetting.Vail.EnemyAggression": "low",  "GameSetting.Survival.PlayerStatsDamage": "off",  "GameSetting.Survival.ColdPenalties": "off",  "GameSetting.Environment.SeasonLength": "long",  "GameSetting.Environment.DayLength": "long"}

IdleDayCycleSpeed со значением 0.0 останавливает часы, когда никого нет онлайн, и для группы, которая играет дважды в неделю, это важнее любого ползунка сложности. Восстановление деревьев не даёт окрестностям долгоживущей базы превратиться в поле пней.

Обычное кооперативное прохождение сюжета

"GameMode": "Normal" с GameSettings по умолчанию - это игра в том виде, в каком её задумали, и правильный выбор для группы, которая вместе проходит сюжет. Единственное, что стоит поменять, - SaveInterval: 600 секунд по умолчанию означают, что вылет может стоить десяти минут, а в сюжетном прохождении больше сцен, где это особенно обидно.

Хардкорный сервер на выживание

"GameMode": "HardSurvival" - пресет для групп, которым нужен полный гринд. Если хочется чуть менее жёсткого, используйте Custom с "GameSetting.Survival.ConsumableEffects": "hard", "GameSetting.Survival.PlayerStatsDamage": "hard", "GameSetting.Vail.EnemyHealth": "high" и "GameSetting.Survival.ReducedFoodInContainers": true, оставив штрафы за холод на normal. Жёсткие настройки с длинными сезонами превращают зиму в настоящее событие, а не в короткое неудобство.

Сервер для строительства

"GameMode": "Creative" убирает затраты ресурсов, либо Custom с "GameSetting.Survival.CreativeMode": true и "GameSetting.Vail.EnemySpawn": false, если хотите сохранить какие-то другие свои настройки. Творческие миры с большими постройками - самое тяжёлое, что можно попросить у этого сервера, так что ждите роста потребления памяти вместе с числом построек.

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

Что внутри слота сохранения#

На сервере каждый мир - это папка в каталоге пользовательских данных:

code
Saves/DedicatedServer/Multiplayer/0000000001/

Имя папки - номер слота, дополненный нулями до десяти цифр, и SaveSlot выбирает, какой из них загрузится. Внутри набор JSON-файлов и миниатюра. Имена файлов от сборки к сборке немного различаются, но в актуальных сборках вы найдёте вот что:

ФайлЧто в нём
GameSetupSaveData.jsonПравила, с которыми создан мир: режим и пользовательские настройки
GameStateSaveData.jsonОбщее состояние игры, включая тип игры и прогресс сюжета
SaveData.jsonОсновная часть мира: предметы, постройки, состояние NPC, Kelvin и Virginia
PlayerInventorySaveData.jsonДанные инвентаря
PlayerStateSaveData.jsonПозиция и характеристики игрока
WeatherSystemSaveData.jsonСостояние погоды и сезона
WorldItemManagerSaveData.jsonПредметы, размещённые или выброшенные в мире

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

Часть данных конкретного игрока хранится не на сервере, а на машине самого игрока, в папке MultiplayerClient среди его локальных сохранений. Поэтому инвентари и позиции иногда ведут себя неожиданно после переноса мира: мир переехал, а сторона каждого игрока - нет.

Изменение правил существующего мира#

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

  1. Остановите сервер и дождитесь в консоли строки о финальном сохранении.
  2. Сделайте бэкап всей папки слота. Это не по желанию.
  3. Откройте GameSetupSaveData.json в редакторе, который не переформатирует файл. Найдите значение режима игры - например "StringValue":"Normal" - и отдельные настройки, каждая из которых хранится записью с именем настройки и её значением.
  4. Если вы меняли режим, поменяйте и соответствующее значение "GameType" в GameStateSaveData.json, чтобы файлы не противоречили друг другу.
  5. Запустите сервер и прочитайте лог. Зайдите и убедитесь, что изменение применилось.

Редакторы сохранений от сообщества, например SOTFEdit, оборачивают те же правки в интерфейс, и для большинства изменений это надёжнее ручной правки. В любом случае действуют три предупреждения. Формат внутренний, и Endnight может изменить его любым патчем. Некоторые изменения посреди игры не имеют смысла - переключение на Peaceful не уберёт каннибалов, уже записанных в состояние мира. А сломанная правка делает слот незагружаемым - для этого и нужен шаг 2.

Перенос миров на сервер, с него и между слотами#

Из своей игры на сервер

Мультиплеерный мир, который вы хостили из клиента игры, лежит на вашем ПК здесь:

code
%USERPROFILE%\AppData\LocalLow\Endnight\SonsOfTheForest\Saves\<SteamID64>\Multiplayer\<world id>\

Остановите сервер, загрузите эту папку в Saves/DedicatedServer/Multiplayer/, переименуйте её в свободный номер слота с нулями, например 0000000002, поставьте SaveSlot в 2, а SaveMode в Continue, и запустите. Постройки, прогресс сюжета и мир переедут. Предупредите группу, что по названной выше причине они могут появиться с меньшим, чем уходили.

Одиночные миры

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

С сервера обратно на ПК

Чтобы поиграть в мир с сервера офлайн или передать его кому-то для хостинга, проделайте всё в обратном порядке. Остановите сервер, чтобы слот сохранился, скачайте папку слота и положите её в свою Saves\<SteamID64>\Multiplayer\ с числовым именем папки. Мир появится в списке загрузки игры для хостинга мультиплеера. Это ещё и самый чистый способ закрыть сервер, не потеряв мир: скачайте последний слот до того, как сервер исчезнет, потому что удаление сервера у большинства хостеров удаляет вместе с ним сохранения и бэкапы.

Между слотами на одном сервере

Слоты делают эксперименты дешёвыми. Скопируйте текущий слот в следующий свободный номер, направьте SaveSlot на копию и пробуйте мод, правку или рискованный бой с боссом. Если что-то пойдёт не так, верните SaveSlot обратно. Оригинал не менялся.

загрузить и переименоватькопия для опытовпо расписаниювосстановлениескачать слотСвоя играваш ПК, MultiplayerСлот сервера0000000001Запасной слот0000000002Резервная копиявне машиныИгра офлайндругой ПК
Куда может переезжать мир Sons of the Forest

Время сохранений, бэкапы и откат#

Мир записывается каждые SaveInterval секунд и при чистой остановке. Убитый процесс, вылет или остановка из-за нехватки памяти теряют всё с последнего сохранения. Встроенный механизм каждый раз перезаписывает тот же слот, так что это не бэкап: мир, сохранённый в сломанном состоянии, заменяет хороший.

План бэкапов для этой игры состоит из трёх вещей:

  • Копия папки сохранений по расписанию, хранящаяся вне сервера, - каждую ночь для активной группы. Чаще бессмысленно, если ночью никто не играет.
  • Ручная копия перед любым риском - обновлением игры, правкой сохранения, модом, сюжетным боссом.
  • Восстановление, которое вы действительно выполнили. Один раз восстановите бэкап в запасной слот, загрузите его и пройдитесь по миру. Почему это важнее расписания, объясняют статьи бэкапы, которые действительно восстанавливаются и проверка восстановления до того, как оно понадобится.

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

На RE:NODE бэкапы делаются вручную или по расписанию, хранятся вне машины, которую защищают, и восстанавливаются одной кнопкой; их также можно скачать, что закрывает пункт «держать копию дома». Запись в Schedules может делать бэкап в четыре утра и сразу за ним перезапуск, каждое действие отдельной задачей по порядку. Кнопка Restart отправляет чистую остановку, так что мир сначала сохраняется. Если сервер упирается в лимит памяти, его останавливают и чисто перезапускают, а не уводят в своп, - это как раз случай остановки без сохранения и ещё одна причина снизить SaveInterval до 300 на большом мире. Удаление сервера удаляет и его бэкапы, включая заблокированные, так что скачайте последний перед отменой.

Вайпы и новый старт#

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

SaveMode со значением New заново генерирует текущий слот при каждом запуске. Это опасный способ: забудете вернуть Continue, и следующий перезапуск снова сотрёт мир.

Безопаснее новый слот. Поставьте SaveSlot на неиспользуемый номер с SaveMode New, запустите один раз, чтобы мир сгенерировался, и сразу же верните SaveMode в Continue. Старый мир остаётся нетронутым в своей папке, и вернуться к нему можно, поменяв одно число. Это ещё и единственный чистый способ применить новые правила игры, ведь они читаются при создании мира. Общая картина по разным играм - в статье файлы сохранений игровых серверов.

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

Пользовательские настройки, изменённые в конфиге, не действуют. Они применяются только к новому сохранению. Начните новый слот или отредактируйте GameSetupSaveData.json на копии, для которой сделан бэкап.

После перезапуска мир сбросился. SaveMode стоит в New, изменился SaveSlot, или одно из них задано переопределением в командной строке. Старый слот по-прежнему на диске.

Загруженный мир не загружается, и генерируется новый. Имя папки не совпадает с дополненным нулями номером слота из SaveSlot, или файлы лежат на одну папку глубже. JSON-файлы должны лежать прямо в папке слота.

Сервер не запускается после правки сохранения. JSON повреждён. Восстановите бэкап и повторите правку в редакторе, который не трогает форматирование.

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

Сохранение длится так долго, что игроки это замечают. Большой мир с множеством построек. Держите SaveInterval на значении, которое группа терпит, и перезапускайте сервер ежедневно, чтобы потребление памяти не росло, - см. расписания перезапусков, которые помогают.

FAQ#

Можно ли изменить сложность существующего мира на сервере Sons of the Forest?

Не через dedicatedserver.cfg - он применяет правила только при создании сохранения. Можно отредактировать GameSetupSaveData.json и GameStateSaveData.json в слоте при остановленном сервере и сделанном бэкапе или начать новый слот с нужными правилами.

Какие настройки можно менять, не начиная новый мир?

Всё, кроме GameMode и CustomGameModeSettings: имя, пароль, число игроков, интервал сохранения, скорость часов при простое и два переключателя GameSettings - восстановление деревьев и урон постройкам. Применяются они перезапуском.

Как скачать свой мир с сервера?

Остановите сервер, чтобы слот сохранился, затем скачайте пронумерованную папку слота из Saves/DedicatedServer/Multiplayer/. Положите её в свою Saves\<SteamID64>\Multiplayer\, чтобы хостить мир или играть в него из игры.

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

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

Почему мой конфиг игнорируется?

Либо JSON повреждён, и сервер сообщает об ошибке конфигурации, либо значение переопределяет аргумент командной строки -dedicatedserver.. Значения из командной строки побеждают файл.

Хранит ли сервер собственные бэкапы?

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


Комментарии

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

0/2000