Stationeers: установка модов на сервер
Ванильный Stationeers — уже сложная игра, но рано или поздно хочется того, чего в базовой версии нет: нового оборудования, упрощённой логистики труб или готового набора IC10-скриптов без ручного кодинга с нуля. Проблема в том, что моды здесь ставятся не так, как в условном Minecraft одним архивом в папку — на dedicated-сервере это связка Workshop ID, XML-конфига и (для части модов) отдельного лоадера поверх BepInEx. Разберём по шагам, как подписаться на мод, довести его до сервера и не сломать при этом уже идущий сейв. Если сервер ещё не поднят — сначала пошаговая инструкция по установке сервера Stationeers: там про SteamCMD, флаги запуска и структуру папки сервера, на которую мы будем опираться ниже.
Содержание
Как устроены моды в Stationeers: два разных мира
Прежде чем лезть в конфиги, стоит понять, что под словом "мод" в Stationeers скрываются фактически два разных механизма, и путать их — источник половины проблем на форумах.
- Контент-моды через Steam Workshop — новые предметы, структуры, рецепты, текстуры, наборы деталей. Технически это XML-описания и ассеты, которые игра подгружает через собственный ModConfig.xml на сервере и клиенте. Разработчики (и Workshop-страница игры) сами предоставляют именно этот путь.
- Код-моды через BepInEx — полноценные C#-сборки, которые патчат логику игры через Harmony (то же семейство инструментов, что используется в моддинге ряда других Unity-игр через BepInEx). Официальной поддержки у Stationeers для них нет, но сообщество давно закрыло эту нишу — самый популярный лоадер сейчас называется StationeersLaunchPad.
| Контент-моды (Workshop) | Код-моды (BepInEx) | |
|---|---|---|
| Что меняют | предметы, структуры, рецепты, текстуры | логику, механики, поведение систем |
| Формат | XML + ассеты | скомпилированные DLL-сборки |
| Конфиг на сервере | ModConfig.xml | modconfig.xml + BepInEx/plugins (генерируется лоадером) |
| Поддержка разработчиков | официальная, через Workshop | неофициальная, силами сообщества |
| Риск при обновлении игры | ломается реже (в основном данные) | ломается чаще (правки в C#-коде игры) |
Оба типа модов можно использовать одновременно на одном сервере — они не конфликтуют по механизму подключения, но каждый требует своей настройки, и ниже мы пройдём по обеим.
Находим ID мода и скачиваем его через SteamCMD
Для сервера (в отличие от клиента) подписка через Steam-клиент не обязательна — проще и надёжнее стянуть мод напрямую через SteamCMD, тем же способом, каким качали сам сервер.
Сначала находим числовой Published File ID мода:
- Открываем страницу мода в Steam Workshop (
steamcommunity.com/sharedfiles/filedetails/?id=...). - Число после
?id=в адресной строке — это и есть искомый ID, обычно 9-10 цифр.
Скачиваем контент мода на сервер. Обратите внимание: Workshop-элементы Stationeers привязаны к app ID основной игры (544550), а не к app ID dedicated-сервера (600760, который мы использовали при установке самого сервера):
steamcmd +login anonymous \
+force_install_dir ~/stationeers-server \
+workshop_download_item 544550 3570726509 \
+quit
Мод скачается в ~/stationeers-server/steamapps/workshop/content/544550/3570726509/. Дальше содержимое этой папки нужно перенести в мод-директорию самого сервера:
mkdir -p ~/stationeers-server/rocketstation_DedicatedServer_Data/StreamingAssets/mods
cp -r ~/stationeers-server/steamapps/workshop/content/544550/3570726509 \
~/stationeers-server/rocketstation_DedicatedServer_Data/StreamingAssets/mods/
Папка StreamingAssets/mods в свежей установке сервера не создаётся автоматически — её приходится завести руками при первой установке мода. Имя вложенной папки должно совпадать с Workshop ID (3570726509 в примере) — сервер ищет контент именно по этому имени, а не по названию мода.
Поднять сервер Stationeers за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверНастройка ModConfig.xml
Файл ModConfig.xml живёт в корне сервера — рядом с исполняемым файлом rocketstation_DedicatedServer.x86_64, а не внутри _Data. Если его ещё нет, создаём вручную:
<?xml version="1.0" encoding="utf-8"?>
<ModConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Mods>
<unsignedLong>1</unsignedLong>
<unsignedLong>1001</unsignedLong>
</Mods>
<DisabledMods>
</DisabledMods>
<LocalMods>
<LocalMod>
<folder>3570726509</folder>
<modID>1001</modID>
</LocalMod>
</LocalMods>
</ModConfig>
Что здесь происходит:
<Mods>— список внутренних ID модов, которые сервер должен загрузить.1— зарезервированное значение под базовый контент игры, трогать его не нужно. Собственные моды нумеруются начиная с1001и далее по возрастанию (1002,1003...) — это внутренняя нумерация ModConfig.xml, никак не связанная с реальным Workshop ID.<LocalMods>— сопоставление внутреннегоmodIDс реальной папкой мода на диске.folder— это как раз то самое имя папки, совпадающее с Workshop ID (3570726509), которую мы скопировали на предыдущем шаге.<DisabledMods>— список модов, которые физически лежат на сервере, но временно выключены; удобно, когда нужно быстро откатиться после спорного обновления мода, не удаляя файлы.
Для каждого следующего мода добавляйте новую строку <unsignedLong> с очередным внутренним ID и свой блок <LocalMod> с соответствующей парой folder/modID. Порядок элементов в <Mods> — это ещё и порядок загрузки: моды ниже по списку перекрывают правки тех, что выше, так что общие оверхолы логично ставить в начало списка, а точечные правки — в конец.
Сервер перечитывает ModConfig.xml только при старте — на лету список не обновляется, поэтому перед правкой файла сервер обязательно останавливаем, а после — перезапускаем.
Код-моды через BepInEx и StationeersLaunchPad
Если нужный мод — не набор XML-данных, а C#-сборка (меняет игровую логику, а не просто добавляет предметы), путь через ModConfig.xml не подойдёт: такие моды идут через BepInEx — тот же принцип, что и в моддинге Valheim или Rust, только для Stationeers эту связку собирает и поддерживает сообщество, а не разработчики игры.
Базовый порядок действий:
- Установите BepInEx (актуальная 5.4.x на момент написания) в папку dedicated-сервера — распаковывается рядом с
rocketstation_DedicatedServer.x86_64. - Установите StationeersLaunchPad — он идёт как плагин BepInEx, файлы кладутся в
BepInEx/plugins. - На своей клиентской машине с уже настроенным LaunchPad откройте окно загрузки игры (клик по строке загрузки внизу экрана при старте) и нажмите Export Mod Package — соберётся zip с включёнными модами и конфигом.
- Распакуйте этот zip в папку dedicated-сервера — на выходе появятся
modconfig.xml(в нижнем регистре — это отдельный файл от классическогоModConfig.xml, они не пересекаются) и папкаmodsрядом с исполняемым файлом сервера. - Перезапустите сервер.
Такой способ удобнее ручной правки XML тем, что список модов и их порядок собираются один раз в игровом клиенте, а не вручную построчно — особенно ощутимо на сборках из полутора десятков модов и больше. Минус — лишний слой (BepInEx + лоадер), который тоже может отставать от новой версии игры после патча.
Кое-где в сторонних гайдах встречается параметр запуска вида -mod="id1,id2" как альтернатива конфигу. Официально он нигде не задокументирован и на части сборок сервера не срабатывает — не стоит полагаться на него вместо ModConfig.xml/modconfig.xml.
Синхронизация версий и порядка модов с клиентами
Самая частая причина, по которой игроки не могут зайти на модифицированный сервер, — не баг, а банальное рассогласование списков.
- Список модов должен совпадать буквально. Если на сервере включены три мода, а у игрока в игровом меню Mods подписаны и активны только два (или те же три, но в другом порядке) — подключение либо не пройдёт, либо пройдёт с расхождениями по контенту.
- Порядок важен так же, как и состав. Как и в
ModConfig.xmlна сервере, в клиентском меню Mods порядок модов определяет, какие правки перекрывают какие — держите один и тот же порядок везде, а не только один и тот же набор. - Версия игры должна совпадать у сервера и клиентов — это касается и без модов, но с ними цена рассинхрона выше: устаревший клиент может просто не знать о новых предметах или структурах из мода, актуального под свежий патч.
- Клиентам не нужно скачивать контент-моды вручную с вашего сервера — обычная практика в сообществе Stationeers: администратор публикует список Workshop ID в описании сервера или в Discord, а игроки сами подписываются на те же моды через Steam Workshop у себя. Автораздачи модов при коннекте, как в некоторых других играх, тут можно не ждать — планируйте на это отдельное объявление для игроков перед запуском модифицированного сейва.
Типичные ошибки и диагностика
- Сервер не стартует после добавления мода. Первым делом — в лог. Чаще всего причина в опечатке: имя папки в
<folder>не совпадает с реальным названием директории мода на диске, либо забыли продублировать внутренний ID в обеих секциях (<Mods>и<LocalMods>). Если после правки конфига сервер отказывается подниматься — см. общий разбор в статье «Stationeers не запускается», там частая база причин, не только по модам. - Мод скачался, но сервер его не видит. Проверьте, что содержимое из
steamapps/workshop/content/544550/<ID>/действительно скопировано вStreamingAssets/mods/, а не осталось только в папке SteamCMD — сам факт скачивания черезworkshop_download_itemничего не переносит в игровую директорию автоматически, это отдельный шаг. - После добавления мода ломаются старые сохранения. Контент-моды, которые вводят новые предметы или структуры, при удалении могут оставить в сейве "осиротевшие" ссылки на несуществующий контент — сохранение либо откажется грузиться, либо покажет заглушки вместо пропавших объектов. Перед экспериментами с новым модом на боевом сейве сделайте бэкап — как описано в статье про восстановление и проблемы с сохранением Stationeers.
- Мод работал, а после обновления игры перестал. Контент-моды переживают патчи лучше код-модов, но не всегда: если структура XML-данных в игре поменялась, старый мод может просто не подхватиться. Держите привычку проверять список модов на тестовом сейве после каждого крупного обновления, прежде чем катить изменения на сервер, где играют люди — тот же принцип разобран в статье про автообновление модов на сервере.
- Игроки видят разный контент друг у друга. Почти всегда — рассинхрон списка или порядка модов между клиентами, реже — разные версии одного и того же мода (автор выпустил обновление, а часть игроков ещё не переподписалась). Попросите всех проверить список активных модов в игровом меню Mods и порядок в нём.
Поднять сервер Stationeers за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Нужно ли серверу иметь купленную копию игры для скачивания модов?
Нет, workshop_download_item через анонимный вход SteamCMD работает для публичных Workshop-элементов Stationeers так же, как и скачивание самого dedicated-сервера — покупать игру на аккаунт для сервера не требуется.
Можно ли добавить мод без перезапуска сервера?
Нет, и ModConfig.xml, и modconfig.xml от StationeersLaunchPad читаются только при старте сервера — любое изменение требует остановки и повторного запуска процесса.
Чем контент-мод отличается от код-мода на практике?
Контент-мод — это новые предметы, структуры или рецепты в виде данных (XML), а код-мод меняет саму логику игры через C#-сборку и BepInEx. Первые ставятся через ModConfig.xml и Workshop, вторые — через BepInEx и StationeersLaunchPad.
Что делать, если после удаления мода сейв не грузится?
Восстановите мод обратно (проще всего — если делали бэкап до эксперимента) или проверьте лог сервера на упоминание конкретного отсутствующего ID/предмета — иногда достаточно временно вернуть только один недостающий мод, а не откатывать весь список.
Работают ли одновременно контент-моды и код-моды через BepInEx?
Да, механизмы независимы: ModConfig.xml отвечает за Workshop-контент, BepInEx/StationeersLaunchPad — за код-моды, и они не конфликтуют между собой на уровне подключения, хотя логику каждого мода всё равно стоит проверять по отдельности.