MAATRIX GAMES / Блог / Sons of the Forest: установка модов на сервер

Sons of the Forest: установка модов на сервер

MAATRIX GAMES

Ванильный Sons of the Forest — уже неплохой выживач, но рано или поздно упираешься в лимиты: хочется больше слотов на карте, нормальный ESP для админа, летающую камеру для облёта базы или просто честный зум без бинокля. Официального Steam Workshop у игры нет, поэтому все моды ставятся руками через модлоадер BepInEx — и на сервере эта установка отличается от клиентской в паре важных мест. Разберём по шагам, откуда брать рабочие моды, как их закинуть на dedicated-сервер и почему сервер иногда падает после апдейта, даже если конфиг не трогали.

Где брать моды: Thunderstore, а не случайные архивы

Для Sons of the Forest, как и для Valheim, Risk of Rain 2 и десятка других игр на BepInEx, основной репозиторий модов — Thunderstore (thunderstore.io/c/sons-of-the-forest/). Это не официальный ресурс от Endnight Games, но фактический стандарт комьюнити: у каждого мода видна версия, зависимости, дата последнего обновления и количество загрузок, что заметно снижает риск словить заброшенный или битый билд.

Почему не стоит тащить моды с случайных форумов и файлообменников:

  • Нет проверки версии — велик шанс скачать сборку под старый патч игры, которая просто крашит сервер при загрузке.
  • Нет явных зависимостей — многие моды требуют конкретную версию BepInEx или другой мод-библиотеку (например, общий фреймворк для UI), и без этого молча не грузятся.
  • Выше риск словить что-то лишнее в архиве — не то чтобы моды под BepInEx часто бывают вредоносными, но Thunderstore хотя бы даёт публичную историю автора и отзывы.

На старте отсортируйте каталог по most-downloaded или last-updated — это быстро покажет, что реально живое и поддерживается под текущую версию игры, а что не обновлялось год.

Устанавливаем BepInEx — модлоадер для Sons of the Forest

BepInEx — это не мод в привычном смысле, а инжектор, который перехватывает загрузку игры и даёт модам зацепиться за её код. Без него плагины (DLL-файлы) просто лежат мёртвым грузом.

Если сервер уже поднят через SteamCMD (app id 2465200) и стоит в C:\sotf-server\, порядок такой:

  1. Скачиваем с Thunderstore пакет BepInExPack Sons Of The Forest — архив с готовой структурой папок под эту игру.
  2. Распаковываем содержимое архива прямо в корень папки сервера, туда же, где лежит SonsOfTheForestDS.exe. После распаковки в C:\sotf-server\ должны появиться:
C:\sotf-server\
├── SonsOfTheForestDS.exe
├── dedicatedserver.cfg
├── winhttp.dll
├── doorstop_config.ini
└── BepInEx\
    ├── core\
    ├── config\
    └── plugins\
  1. Файл winhttp.dll — это и есть сам инжектор загрузки (Doorstop), именно он подхватывает BepInEx при старте .exe. Если его нет в корне — моды грузиться не будут вообще, даже если папка BepInEx\plugins\ забита файлами.
  2. Запускаем сервер один раз, чтобы BepInEx создал базовую структуру конфигов внутри BepInEx\config\. В первом логе (BepInEx\LogOutput.log) должна появиться строка с версией BepInEx и списком загруженных сборок — это подтверждение, что инжектор реально встал.

Если сервер работает как служба через NSSM (как в статье про установку сервера Sons of the Forest), после распаковки BepInEx достаточно перезапустить службу — nssm restart SonsOfTheForestServer — отдельной регистрации инжектора не требуется, он подхватывается через winhttp.dll на каждом старте .exe.

Поднять сервер Sons of the Forest за пару минут

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

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

Ставим сами моды: папка plugins и что в ней должно лежать

Когда BepInEx стоит и подтверждён логом, добавление модов — самая простая часть:

  • Скачанный с Thunderstore архив мода распаковываем.
  • Внутри обычно лежит DLL-файл (иногда несколько) и папка с ассетами или конфигом — всё это копируется в C:\sotf-server\BepInEx\plugins\, каждый мод желательно в своей подпапке с понятным именем, чтобы потом не гадать, что откуда.
  • Некоторые моды кладут отдельный .cfg в BepInEx\config\ при первом запуске — там настраиваются хоткеи, лимиты и включение/отключение отдельных фич мода.

Пример структуры с парой популярных категорий модов (админ-тулза и облёт камерой):

BepInEx\plugins\
├── AdminTools\
│   └── AdminTools.dll
├── SonsFlightMod\
│   └── SonsFlightMod.dll
└── SimpleZoom\
    └── SimpleZoom.dll

После добавления новых DLL — снова просто рестарт процесса сервера. Никакой отдельной "компиляции" или регистрации не нужно, BepInEx сканирует папку plugins при каждом старте и грузит всё, что там лежит и совместимо по версии.

Админ-тулзы (вроде тех, что дают телепорт, спавн предметов, полный ESP и список подключённых игроков) обычно server-side — то есть работают через консоль сервера или админ-меню в игре и не требуют, чтобы клиенты что-то ставили. А вот визуальные и геймплейные моды (зум, полёт, изменение баланса урона) почти всегда требуют совпадающей версии и на сервере, и у каждого игрока — это разберём отдельно.

Синхронизация версий клиент-сервер — самое частое место граблей

Это то место, где 90% проблем с модами на Sons of the Forest на самом деле не баг мода, а рассинхрон версий между сервером и клиентами.

Правила, которые стоит просто взять за привычку:

  • Версия BepInEx на сервере и у всех клиентов должна совпадать. Не обязательно версия в версию, но крупные релизы (например, переход с BepInEx 5.x на 6.x, если и когда он случится) несовместимы между собой — клиент со старым BepInEx просто не сможет подключиться к серверу с новым, или наоборот.
  • Версия каждого геймплейного мода — тоже. Если на сервере стоит SimpleZoom версии 1.2, а у игрока версии 1.0, чаще всего это либо тихий конфликт (мод не активируется), либо явный краш при коннекте с ошибкой несовпадения хэша сборки в логе.
  • Server-side-only моды клиентам ставить не нужно — и не стоит, лишние DLL на клиенте иногда конфликтуют с другими установленными модами без всякой пользы.
  • Перед раздачей модпака игрокам — соберите архив именно из содержимого вашей папки BepInEx\plugins\ с сервера и разошлите его как есть, а не собирайте у каждого игрока моды вручную по отдельности. Это исключает человеческий фактор — самую частую причину "у меня не заходит, а у друга работает".

Для регулярно обновляемого сервера полезно завести отдельный текстовый файл с версией каждого установленного мода — банальный mods-version.txt рядом с папкой BepInEx, куда вписываете версию при каждом обновлении. Звучит как лишняя бюрократия, пока не потратите час на дебаг рассинхрона, который решался бы сверкой одной строчки.

Мод-менеджеры: когда r2modman ускоряет жизнь, а когда мешает

На клиентской стороне для Sons of the Forest часто используют r2modman или Thunderstore Mod Manager — оболочки, которые сами качают моды с Thunderstore, разруливают зависимости и позволяют переключаться между профилями модпаков одной кнопкой.

Для игрока это действительно удобно: выбрал профиль, нажал "Start modded", менеджер сам подтянул нужные версии. Но на сервере такой менеджер обычно не нужен и не имеет смысла — сервер это headless-процесс без GUI, а сама раскладка модов в BepInEx\plugins\ делается один раз и меняется редко. Ставить туда GUI-менеджер, рассчитанный на десктопный запуск игры, — лишняя сущность.

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

  1. Собираете и тестируете модпак локально через r2modman на своей машине — это быстрее, чем руками копировать DLL по одному и проверять на живом сервере.
  2. Когда набор модов стабилен и подтверждён, находите папку профиля r2modman (обычно что-то вроде %appdata%\r2modmanPlus-local\SonsOfTheForest\profiles\<имя профиля>\BepInEx\plugins\) и копируете содержимое plugins целиком на сервер.
  3. На клиентах для игроков, которые тоже используют r2modman, достаточно поделиться экспортированным профилем — менеджер умеет экспортировать список модов с версиями в один файл-код, который импортируется в пару кликов.

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

Типичные ошибки и что делать, если сервер не стартует после установки модов

Список того, что реально ловится в логах BepInEx\LogOutput.log чаще всего:

  • Сервер вообще не создаёт папку BepInEx или лог пустой. Почти всегда — winhttp.dll не оказался в корне рядом с .exe, либо антивирус на VPS его удалил как подозрительный файл (типичная ложноположительная реакция на инжекторы кода). Проверьте карантин антивируса и добавьте папку сервера в исключения.
  • В логе есть ошибка вида "TypeLoadException" или "MissingMethodException" у конкретного мода. Это почти всегда несовместимость версии мода с текущей версией игры после патча — разработчик мода ещё не выпустил обновление. Временное решение — откатить именно этот мод на версию, под которую он точно тестировался, если такая доступна в архиве Thunderstore, либо временно убрать его из plugins.
  • Сервер стартует, но игроки не могут зайти с ошибкой рассинхрона. См. раздел про синхронизацию версий выше — в 9 случаях из 10 дело именно в этом, а не в самом сервере.
  • После апдейта игры сервер вообще перестал запускаться, даже без модов. Первым делом валидируйте файлы сервера через SteamCMD (+app_update 2465200 validate), затем проверяйте BepInEx — он тоже иногда требует обновления под новую версию игры, отдельно от самих модов. Если баг воспроизводится стабильно, стоит свериться с материалом про краш при загрузке мира — там разобраны похожие сценарии и для не связанных с модами случаев.
  • Один мод конфликтует с другим, оба меняют одну и ту же механику (например, два разных мода на баланс урона). Решается методом исключения: временно оставляете по одному моду и добавляете по очереди, пока не найдёте конфликтную пару — долго, но надёжно.

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

Поднять сервер Sons of the Forest за пару минут

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

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

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

Ломает ли BepInEx достижения Steam или защиту от читов?

Sons of the Forest не использует серверный анти-чит вроде EAC, поэтому BepInEx сам по себе ничего не блокирует. Учтите только, что часть модов может конфликтовать со списком достижений, если сильно меняет игровую логику — для чистого прохождения без модов лучше держать отдельный сейв-слот.

Можно ли ставить моды только на сервер, без модов у игроков?

Да, для server-side-only модов (админ-панели, изменение спавна ресурсов, серверные команды) это стандартная практика. Геймплейные и визуальные моды (зум, полёт, HUD) требуют совпадающей версии у клиента.

Что делать, если после обновления игры BepInEx перестал грузиться совсем?

Скачайте свежий BepInExPack Sons Of The Forest с Thunderstore и полностью замените содержимое BepInEx\core\ — обычно проблема именно в устаревшем core-модуле инжектора, а не в конфигурации.

Нужно ли переустанавливать моды при смене SaveSlot в конфиге?

Нет, моды привязаны к папке BepInEx\plugins\ сервера целиком, а не к конкретному слоту сохранения — при смене слота моды продолжают работать так же.

Сколько модов реально можно поставить без потери стабильности?

Жёсткого лимита нет, но чем больше модов меняют одну и ту же систему (например, несколько модов на баланс или спавн), тем выше шанс конфликта. На практике комьюнити-сборки редко превышают 15-20 модов одновременно именно из-за риска конфликтов, а не технического ограничения.