Sons of the Forest: краш сервера при загрузке мира
На экране «Loading world», полоса ползёт — и вдруг тишина: консоль сервера замерла, а SonsOfTheForestDS.exe пропал из списка процессов. Или ещё неприятнее — сервер вроде бы поднялся, но роняется в момент, когда первый игрок пытается зайти в уже существующий мир. Краш именно на загрузке — отдельная категория проблем: либо не грузится конкретный файл сохранения, либо сервер физически не тянет объём мира при старте. Разберём по порядку, как сузить круг подозреваемых и вернуть сервер в строй, не гадая вслепую.
Содержание
Как отличить краш на загрузке от прочих падений
Прежде чем чинить что-то наугад, разберитесь, где именно происходит обрыв. На Windows-сервере (это основной и наиболее протестированный путь для Sons of the Forest — сервер официально нативен только под Windows) есть два места, куда стоит заглянуть:
- Журнал событий Windows — раздел «Приложения» (Application). Ищите записи с источником
Application Errorи Event ID 1000 в момент краша, там будет указан упавший модуль:
Get-EventLog -LogName Application -Newest 20 | Where-Object {$_.Source -eq "Application Error"}
- Лог самого процесса — если сервер запущен как служба через NSSM (см. статью как поднять сервер Sons of the Forest), настройте перехват stdout/stderr в файл, иначе вывод консоли просто теряется при падении:
nssm set SonsOfTheForestServer AppStdout C:\sotf-server\logs\stdout.log
nssm set SonsOfTheForestServer AppStderr C:\sotf-server\logs\stderr.log
Дальше смотрите на тайминг. Если сервер падает через несколько секунд после запуска, ещё до сообщения о готовности принимать подключения — дело почти наверняка в самом файле сохранения или в конфликте на старте (мод, битый конфиг). Если сервер стартует и живёт нормально, а падает именно при заходе игрока в мир — чаще это память: движок подгружает состояние построек и объектов вокруг точки появления игрока, и именно в этот момент случается пиковый расход RAM. Общий подход к чтению логов и краш-репортов на игровых серверах — в отдельном материале: логи и краш-репорты — как читать и искать причину.
Повреждённый файл сохранения
Самая частая причина краша именно на этапе загрузки. Сохранения дедик-сервера лежат в профиле пользователя, от которого запущен процесс:
%appdata%\..\LocalLow\Endnight\SonsOfTheForest\Saves\Server\
Внутри — папки с номерами, соответствующими полю SaveSlot из dedicatedserver.cfg. Битый сейв — классика после жёсткого завершения процесса: обрыв питания хоста, принудительный taskkill, падение по OOM (об этом ниже) прямо в момент записи. Игра не успевает дописать файл целиком, и при следующей загрузке движок падает на десериализации данных мира.
Проверить гипотезу просто: скопируйте папку нужного слота на свой ПК, положите в аналогичный путь клиентской версии игры (%appdata%\..\LocalLow\Endnight\SonsOfTheForest\Saves\) и попробуйте открыть мир в одиночной игре. Если краш повторяется даже в клиенте — файл действительно повреждён, дело не в серверном окружении, конфигах или модах.
Важный нюанс: в отличие от некоторых других выживалок, дедик-сервер Sons of the Forest сам по себе не хранит отдельную предыдущую версию сохранения (никакого .old-файла из коробки нет) — если своего бэкапа не настроено, откатываться будет не на что, кроме резервной копии хостинга. Поэтому регулярный внешний бэкап папки Saves\Server\ — не опция, а обязательный минимум для любого сервера, где прогресс игроков вам дорог.
Поднять сервер Sons of the Forest за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверНехватка RAM при подгрузке мира
Sons of the Forest держит в памяти состояние всех построек, срубленных деревьев и убитых NPC в загруженных зонах — чем дольше живёт мир и активнее в нём строят, тем выше базовое потребление даже без пиковой нагрузки от онлайна. Официальный минимум — от 4 ГБ RAM для игры на 2-4 человек, но именно в момент загрузки (когда сервер разом десериализует весь накопленный мир) расход памяти скачет заметно выше среднего эксплуатационного уровня.
| Ситуация | Рекомендация по RAM |
|---|---|
| Свежий мир, 2-4 игрока | от 4 ГБ (минимум игры) |
| Активный мир, 6-8 игроков, много построек | 6-8 ГБ с запасом |
| Долгоживущий мир, десятки часов стройки | закладывайте апгрейд тарифа заранее, не ждите краша |
| Сервер с модами через BepInEx | +20-30% к базовой планке сверху |
Как проверить, что причина краша именно в памяти:
- На Windows — диспетчер задач в момент запуска сервера, либо через PowerShell:
Get-CimInstance Win32_OperatingSystem | Select-Object FreePhysicalMemory
- Если сервер поднят через Linux/Proton (нюансы такого варианта разобраны в статье про установку) — стандартная связка:
free -h
dmesg | grep -i "out of memory"
Если в dmesg находится запись про OOM Killer, убивший процесс сервера (или в Windows — приложение просто исчезает без записи в Event Viewer, что тоже характерно для нехватки памяти при некоторых конфигурациях), — вот и причина. Сервер не «падает» сам, его останавливает система, когда памяти физически не хватило на подгрузку зон. Общий подход к диагностике нехватки памяти на игровых серверах, применимый не только к Sons of the Forest, разобран отдельно: память сервера заканчивается — общий подход к диагностике.
Конфликт модов через BepInEx после обновления
Официальной поддержки модов Endnight Games не предоставляет, но у Sons of the Forest есть активная модовая сцена на базе BepInEx — плагины (.dll) кладутся в папку BepInEx/plugins/ рядом с сервером и подхватываются при старте. После крупного патча игры один или несколько модов, рассчитанных на предыдущую версию, могут начать конфликтовать именно на этапе инициализации мира — отсюда краш ровно на загрузке.
Смотрите BepInEx/LogOutput.log — там, в отличие от общего лога сервера, обычно виден стектрейс с именем конкретной сборки-виновника. Быстрый способ локализовать проблемный мод — бисекция:
- Остановите сервер (
nssm stop SonsOfTheForestServer), скопируйтеBepInEx/pluginsв сторону как бэкап. - Оставьте только моды, без которых сервер не имеет смысла запускать, уберите остальное.
- Запустите сервер — если мир грузится, возвращайте моды пачками по 2-3, перезапуская сервер между пачками.
- Как только краш вернулся — сужайте последнюю пачку до одного мода.
Особенно часто конфликтуют моды, которые правят одну и ту же систему одновременно — например, два разных мода на управление инвентарём или стройкой. Проверяйте страницу мода на Thunderstore на предмет свежего обновления под текущую версию игры — это первое, с чего стоит начинать после каждого крупного патча Sons of the Forest.
Несовместимость версий после патча
Отдельная причина, близкая к модовой, но не связанная с плагинами напрямую. Sons of the Forest обновляется через SteamCMD (app id 2465200), и если сервер обновился автоматически, а клиенты игроков ещё сидят на старой версии (или наоборот — сервер откатили вручную флагом -beta на старую ветку), при попытке загрузить мир, уже пересохранённый новой версией движка, может вылезти исключение несовместимости формата.
Что делать:
- Сверьте версию сервера и клиента — они должны совпадать, номер виден в главном меню игры и в выводе SteamCMD при апдейте.
- После каждого крупного патча игры перевалидируйте файлы сервера — недокачанные ресурсы после обновления сами по себе иногда роняют сервер на загрузке:
steamcmd.exe +force_install_dir C:\sotf-server +login anonymous +app_update 2465200 validate +quit
- Если откатываете сервер на старую ветку через
-beta, а мир уже пересохранён новой версией — вперёд без отката не поедет, конвертация формата обычно необратима в одну сторону. Перед любым откатом делайте полный бэкапSaves\Server\.
Единого способа «зафиксировать версию раз и навсегда» тут нет — надёжнее держать обновление сервера под ручным контролем, а не на автопилоте, и обновлять его синхронно с тем, когда обновились клиенты у всей группы игроков.
Восстановление сейва из бэкапа
Если причина найдена (или не найдена, но сейв гарантированно битый), а рабочей резервной копии .old из коробки нет — откат делается вручную из бэкапа хостинга или собственного расписания копирования:
- Остановите сервер, чтобы исключить параллельную запись:
nssm stop SonsOfTheForestServer
- Отложите повреждённую версию сейва в сторону, не удаляя сразу — иногда часть данных ещё можно достать вручную:
Move-Item "C:\...\Saves\Server\1" "C:\...\Saves\Server\1-broken"
- Скопируйте последнюю рабочую резервную копию на место освободившейся папки слота.
- Запустите сервер и сразу проверьте лог на предмет повторного краша:
nssm start SonsOfTheForestServer
Если своего бэкапа нет вообще — единственный вариант восстановления через панель хостинга, если провайдер делает снапшоты диска на своей стороне. Подробный разбор практики восстановления игровых серверов из бэкапа, с типичными граблями и нюансами — в отдельной статье: восстановление сервера из бэкапа — практика. Если бэкапа нет и восстановить нечего — крайний вариант — сменить SaveSlot в dedicatedserver.cfg и поднять новый мир, сохранив битую папку на случай, если позже найдётся способ вытащить из неё хотя бы часть данных.
Поднять сервер Sons of the Forest за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Сервер падает не всегда, а через раз на одном и том же мире — с чего начинать?
С логов и точного тайминга падения: нестабильный краш «через раз» чаще указывает на память или сетевую синхронизацию при заходе игрока, а не на однозначно битый файл — стабильно битый сейв обычно роняет сервер каждый раз в одной точке.
Можно ли открыть файлы сохранения вручную, чтобы понять, что там повреждено?
Формат бинарный и официально не документирован, разбирать его в редакторе смысла нет. Практичнее — тестовая загрузка того же сейва в одиночной игре на клиенте: если падает и там, дело точно в файле.
После восстановления из бэкапа сервер всё равно падает на первом же сохранении — что не так?
Проверьте, не был ли сам бэкап сделан в момент похожего сбоя (тогда он тоже частично битый), и убедитесь, что версия сервера совпадает с той, на которой бэкап создавался — расхождение версий иногда ломает совместимость формата сейва.
Обязательно ли переходить на Windows VPS, если краши на загрузке случаются на Linux через Proton?
Не обязательно, но стоит иметь в виду: часть сообщений о нестабильности именно на загрузке мира в комьюнити связана с Proton-специфичными багами, а не с самой игрой — если стабильность 24/7 критична, нативный Windows-сервер убирает этот класс причин полностью.
Нужно ли останавливать сервер перед каждым ручным бэкапом сейва?
Да, крайне желательно — копирование файлов во время активной записи (например, в момент автосохранения) может дать повреждённую копию, которая потом сама не подойдёт для отката.