MAATRIX GAMES / Блог / Enshrouded: краш сервера при загрузке мира

Enshrouded: краш сервера при загрузке мира

MAATRIX GAMES

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

Сначала определите, какой именно это краш

Прежде чем что-то чинить, важно сузить круг подозреваемых. Краш «при загрузке мира» может означать три разные вещи:

  • Падает сам процесс enshrouded_server.exe сразу после строчки в логе о загрузке savegame — почти всегда это повреждённый файл сохранения или нехватка памяти.
  • Сервер стартует и висит в списке серверов, но не пускает никого — часто это как раз память: процесс жив, но не может выделить нужный объём и подвисает на десятки минут.
  • Сервер загружается нормально, но крашится через минуту-две после того как первый игрок заходит и начинает подгружать чанки — это уже почти наверняка не сейв, а конфликт мода/патчера с новой версией сервера.

Откройте папку ./logs рядом с enshrouded_server.exe и найдите файл с последним по времени логом. Ищите момент, где обрывается вывод — сразу после этой строки обычно и написана (или не написана) причина. Если в логе просто тишина без явной ошибки — переходите к проверке памяти, движок Enshrouded не всегда толком логирует OOM-килы.

Повреждённый файл сохранения

Мир сервера лежит в папке, которая задаётся полем saveDirectory в enshrouded_server.json — по умолчанию это подпапка ./savegame рядом с исполняемым файлом. Внутри — набор файлов сейва конкретного слота. Файл может повредиться из-за:

  • жёсткого выключения хоста или kill -9 процесса сервера во время автосохранения;
  • обновления сервера через SteamCMD пока процесс ещё не был остановлен (частая ошибка в автоматизированных скриптах обновления);
  • обрыва диска или нехватки места на разделе прямо в момент записи сейва.

Проверить гипотезу просто: временно переименуйте папку savegame в savegame_broken, запустите сервер — он создаст чистый новый мир. Если сервер поднялся без проблем, повреждён именно сейв, а не конфиг или установка. Дальше два пути:

  1. Если есть свежий бэкап — восстанавливаете его (раздел ниже).
  2. Если бэкапа нет — можно попробовать откатить сейв на предыдущее автосохранение, если хостер или ваш скрипт делают ротацию нескольких последних копий, а не одну перезаписываемую. Полного «лечения» одного конкретного повреждённого файла без сторонних инструментов для парсинга формата сейва Enshrouded, по сути, нет — разработчики не публикуют официальный repair-тул, так что тут только бэкап.

Совет на будущее: настройте автобэкап так, чтобы хранились не одна, а 5–10 последних копий с интервалом в час — тогда даже если повреждение попало в бэкап, у вас есть более старая версия. Подробно про схему ротации — в статье про автобэкапы игрового сервера.

Поднять сервер Enshrouded за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Нехватка RAM — вторая по частоте причина

Официально Keen Games заявляют, что сервер Enshrouded не должен потреблять больше 6 ГБ памяти, и в простое это ориентировочно 4–4.5 ГБ плюс около 100 МБ на каждого подключённого игрока. Именно от этой цифры отталкивается объём RAM в тарифах хостеров, включая MAATRIX GAMES. Но на практике потребление растёт не от числа игроков, а от того, насколько исследован и застроен мир: свежий сейв с одним персонажем ест сильно меньше, чем мир на полсотни часов игры с раскрытым туманом на полкарты и десятками построек.

Если при старте сервер пытается прогрузить в память большой, сильно исследованный мир, а свободной RAM впритык — процесс либо крашится по нехватке памяти, либо зависает на загрузке, потому что ОС активно уходит в своп. Быстрая проверка:

# Linux — смотреть потребление в реальном времени во время старта
watch -n 1 free -h

# Windows — то же самое через диспетчер задач, вкладка «Производительность»,
# или через PowerShell:
Get-Process enshrouded_server | Select-Object WorkingSet64

Если видите, что доступная память улетает в ноль ровно в момент, когда в логе появляется строка про загрузку savegame — дело в RAM. Ориентировочные рекомендации для планирования:

СценарийRAM
Свежий мир, 2–4 игрока6–8 ГБ
Развитый мир, 8–16 игроков12–16 ГБ
Мир с модами/патчерами+1–2 ГБ к обычной норме

Это именно ориентир, а не измеренный бенчмарк — реальная цифра зависит от того, сколько территории игроки успели раскрыть. Если 6 ГБ регулярно оказывается мало именно на загрузке — проще увеличить тариф, чем гоняться за оптимизацией: у Enshrouded нет тонких настроек лимита памяти, которые можно покрутить в конфиге. Как посчитать нужный объём заранее для любой игры — в статье сколько RAM нужно под игровой сервер.

Конфликт модов или патчеров после обновления

У Enshrouded нет официальной поддержки модов уровня Forge или BepInEx — движок у игры свой, не Unreal и не Unity, поэтому большинство доступных на Nexus Mods модификаций работает через паттчеры и лоадеры, которые правят исполняемый файл или инжектят изменения на лету (часть — вообще клиентские cheat-таблицы под Cheat Engine, к серверу отношения не имеющие). Проблема в том, что такие патчеры жёстко завязаны на конкретную версию enshrouded_server.exe: после апдейта игры смещаются адреса и структуры, патчер либо не запускается, либо запускается и портит память процесса — а крашится это чаще всего именно на загрузке мира, потому что это самый тяжёлый по памяти и логике этап.

Если краш начался сразу после того, как вы обновили сервер или добавили/обновили мод — порядок действий такой:

  1. Остановите сервер, сделайте бэкап savegame на всякий случай.
  2. Полностью уберите папку с модами/патчером (не просто отключите в конфиге — вынесите файлы за пределы директории сервера).
  3. Запустите сервер на чистой установке с тем же сейвом. Если мир загрузился — проблема на 90% в моде, который ещё не обновили под новую версию.
  4. Возвращайте моды по одному, перезапуская сервер после каждого, пока не найдёте виновника.

Держите отдельную тестовую копию сервера (другой порт, другая папка) для проверки модов после каждого патча игры — так вы не роняете боевой мир ради эксперимента.

Проверьте enshrouded_server.json и логи отдельно

Даже когда причина не в сейве и не в модах, стоит перепроверить сам конфиг — синтаксическая ошибка в JSON (лишняя запятая, незакрытая скобка) иногда проявляется именно на этапе применения настроек к загруженному миру, а не сразу при старте. Валидный минимальный конфиг выглядит так:

{
  "name": "My Enshrouded Server",
  "saveDirectory": "./savegame",
  "logDirectory": "./logs",
  "ip": "0.0.0.0",
  "queryPort": 15637,
  "slotCount": 16,
  "voiceChatMode": "Proximity"
}

Частая ошибка — прописать в поле ip конкретный внешний адрес вместо 0.0.0.0. Сервер может стартовать, не забиндить сокет как надо, а следом упасть или подвиснуть при попытке применить сетевые настройки к уже загруженному миру — выглядит это как краш «на загрузке», хотя причина сетевая. Проверьте JSON любым онлайн-валидатором перед тем, как перезапускать сервер — это быстрее, чем вычитывать скобки глазами.

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

Восстановление из бэкапа — пошагово

Если диагностика привела к повреждённому сейву и бэкап есть — процедура простая, но важно не перепутать порядок:

  1. Остановите сервер полностью, не просто перезапустите — иначе восстановленные файлы может перезаписать сам процесс в момент автосохранения.
  2. Скопируйте текущую (сломанную) папку savegame в сторону — на случай, если восстановление не поможет и вы захотите повторить диагностику.
  3. Удалите содержимое savegame и распакуйте туда бэкап целиком, а не отдельные файлы — сейв Enshrouded это набор связанных файлов, частичная замена почти гарантированно даст рассинхрон.
  4. Запустите сервер и дождитесь полной загрузки, прежде чем пускать игроков — проверьте лог на предмет ошибок.
  5. Предупредите игроков заранее, что часть прогресса после момента бэкапа будет потеряна — это неизбежно при откате на резервную копию.

Если бэкапов вообще не настроено — самое время это исправить сразу после того, как сервер снова на ногах. Хостинг MAATRIX GAMES умеет делать автоматические бэкапы по расписанию из панели, без ручных скриптов на стороне сервера — это снимает саму проблему «бэкапа не было» на будущее. Общий алгоритм восстановления с разбором типичных ошибок — в статье восстановление сервера из бэкапа: практика.

Как не попасть в ту же ситуацию снова

Несколько практик, которые закрывают все три причины разом:

  • Никогда не обновляйте сервер через SteamCMD, пока процесс не остановлен полностью — гонка записи сейва и обновления файлов игры — частый источник порчи сохранений.
  • Держите ротацию из нескольких бэкапов с разным временем создания, а не одну перезаписываемую копию.
  • Прежде чем ставить мод/патчер на боевой сервер — проверяйте его на тестовом инстансе после каждого крупного обновления игры.
  • Закладывайте RAM с запасом от заявленного минимума, особенно если планируете долгоживущий мир с активным исследованием карты.

Поднять сервер Enshrouded за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Сервер падает сразу при старте, ещё до строки про загрузку мира — это тоже про сейв?

Нет, это почти всегда про конфиг (enshrouded_server.json) или порты — сейв на этом этапе ещё не читается. Проверьте синтаксис JSON и поле ip.

Можно ли починить повреждённый файл сохранения без бэкапа?

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

Сколько именно RAM нужно, чтобы точно не упереться в память при загрузке?

Официальный минимум — около 6 ГБ, но это для свежего мира. Для развитого мира с 8+ игроками закладывайте 12–16 ГБ — точную цифру заранее не предскажете, она зависит от того, сколько карты уже раскрыто.

После обновления игры моды ломаются всегда?

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

Есть смысл переносить мир на новый сервер, если краши продолжаются?

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