Arma Reforger: установка модов на сервер
Набрали в воркшопе десяток модов под будущую кампанию, а сервер после рестарта тупо их игнорирует — или того хуже, игроки коннектятся и тут же вылетают с "версия мода не совпадает". В Reforger моды работают совсем не так, как в старой доброй Arma 3 со Steam Workshop и битыми ключами подписи: тут свой воркшоп внутри клиента, GUID вместо числового ID и отдельная логика версий. Разберём по шагам, как правильно подключить моды к серверу и не словить типичные грабли новичков.
Содержание
Где взять modId в воркшопе Reforger
Забудьте про Steam Workshop — у Reforger встроенный воркшоп прямо в клиенте игры (App ID 1874880), отдельный от дедик-сервера (1874900). Заходите в клиент, вкладка Workshop в главном меню, ищете нужный мод по названию или тегу.
На странице мода есть кнопка вроде "Copy Mod ID" (иногда просто иконка копирования рядом с названием) — она копирует в буфер шестнадцатеричный GUID мода, например 5DBBF50E75CFA00F. Это и есть modId, который пойдёт в конфиг сервера. Тот же ID виден в адресе страницы мода на сайте воркшопа (reforger.armaplatform.com) — обычно первый сегмент пути перед названием через дефис.
Важный нюанс: в отличие от scenarioId, где GUID оборачивается в фигурные скобки ({ECC61978EDCC2B5A}), у modId в массиве mods скобки не нужны — только сам hex-идентификатор. Перепутаете формат — сервер либо не распознает запись, либо не найдёт мод при попытке скачать.
Подписываться (subscribe) на мод в клиенте не обязательно для того, чтобы прописать его на сервере — воркшоп Reforger публичный, сервер качает моды сам при старте. Подписка нужна только если вы сами хотите протестировать мод локально перед тем, как выкатывать его на прод.
Добавляем моды в config.json
Моды сервера живут в массиве mods внутри секции game вашего config.json (базовую структуру конфига разбирали в инструкции по подъёму сервера Arma Reforger):
{
"game": {
"name": "Мой Arma Reforger сервер",
"scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"mods": [
{
"modId": "5DBBF50E75CFA00F",
"name": "Framework Mod",
"required": true
},
{
"modId": "59727DAD57C57F4B",
"name": "Custom Weapons Pack",
"required": true
},
{
"modId": "0DAAE1FB78D975DC",
"name": "UI Tweaks (клиентский, опционально)",
"required": false
}
]
}
}
Что означают поля:
- modId — единственное поле, которое реально критично для загрузки, тот самый GUID из воркшопа.
- name — чисто косметическое поле для читаемости конфига и логов, на загрузку не влияет. Но лучше писать реальное название мода — потом проще разбирать логи, когда что-то падает.
- required —
trueозначает, что клиент обязан скачать и активировать мод, иначе не подключится к серверу.false— мод серверный (например, влияет только на логику миссии) и клиенту скачивать его не обязательно.
Порядок записей в массиве — это и порядок загрузки. Если один мод переопределяет конфиги или ассеты другого (частая история с крупными оверхол-модами и фреймворками вроде тех, что меняют базовую логику миссий), зависимый мод должен идти в списке позже того, что он расширяет. С небольшими самостоятельными аддонами (новое оружие, скины, отдельные карты) порядок обычно роли не играет.
Если статья про кастомную миссию из мода, а не про официальный сценарий — scenarioId тоже должен указывать на .conf-файл внутри пакета этого мода, а не на дефолтные кампании. Проверяйте точный путь на странице мода в воркшопе, руками угадывать GUID сценария — плохая идея.
Поднять сервер Arma Reforger за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверСинхронизация версий между сервером и клиентами
Здесь у Reforger отдельная тема. Каждой записи в mods можно (но не обязательно) добавить поле version:
{
"modId": "5DBBF50E75CFA00F",
"name": "Framework Mod",
"version": "1.4.2",
"required": true
}
Если version не указан, сервер при каждом старте пытается скачать актуальную на этот момент версию мода из воркшопа. Звучит удобно, но есть засада: автор мода выкатил апдейт, сервер после рестарта подтянул новую версию, а у части игроков в клиенте закэширована старая — начинаются вылеты с несовпадением версии на попытке коннекта. Клиент в норме сам должен скачать актуальную версию при подключении (Reforger синхронизирует моды похоже на то, как это делает Steam Workshop для других игр), но на медленном канале или при нестабильном воркшопе Bohemia это может занять время либо вовсе не сработать с первого раза.
Практический подход:
- Для повседневного паблик-сервера без обязательств — оставляйте
versionпустым, пусть тянет последнюю версию, это меньше ручной возни. - Для турниров, ивентов или закрытого комьюнити, где важна предсказуемость — фиксируйте
versionявным номером. Тогда обновление мода не прилетит на сервер само по себе, апдейт вы делаете осознанно, когда все готовы, а не в момент случайного рестарта systemd-юнита.
Точный номер версии смотрите на странице мода в воркшопе — там обычно есть история релизов. Не берите цифры из головы или со старых скриншотов, версии у активно обновляемых модов меняются нередко.
Порядок загрузки и зависимости модов
Некоторые моды в Reforger объявляют зависимость от других модов (например, фреймворк-моды, на которых строятся дополнения) — это прописано в метаданных самого мода в воркшопе, и движок в большинстве случаев подтягивает зависимость автоматически при скачивании. Но полагаться на автоматику на 100% не стоит: практика сообщества показывает, что надёжнее явно прописать все зависимости самого мода отдельными записями в mods, причём раньше по списку, чем сам зависимый мод.
Если на странице мода в воркшопе в разделе Dependencies указан другой мод — добавьте его modId в конфиг сам, даже если теоретически сервер должен подтянуть его сам. Лишняя строчка в конфиге не мешает, а вот пропущенная зависимость роняет загрузку мода целиком, причём иногда без явной ошибки в логе — просто мод не активируется, и всё.
Отдельно стоит сказать про совместимость крупных модпаков между собой — два независимых оверхола, которые правят одну и ту же механику (например, баллистику или систему повреждений), почти гарантированно конфликтуют. Тут нет универсального решения, кроме как тестировать связку на девелоперском сервере перед тем, как выкатывать на прод, и следить за тем, что пишут авторы модов в описании про известные конфликты.
Диагностика: логи и типичные ошибки установки
При запуске с флагом -profile (см. команду запуска в базовой инструкции по серверу) логи пишутся в указанную папку профиля. Именно туда смотрим в первую очередь, когда моды не встали.
Частые сообщения и что за ними стоит:
| Симптом | Вероятная причина |
|---|---|
| Сервер зависает на этапе "Downloading mods" при старте | Нет исходящего доступа в интернет с VPS до воркшопа Bohemia, либо забит фаервол, либо кончилось место на диске |
AddonManager: Failed to download addon <id> в логе | Неверный modId (опечатка, скопировали название вместо ID) либо автор снял мод с воркшопа |
| Игрок вылетает сразу при подключении с ошибкой несовпадения версии | Клиент и сервер тянут разные версии мода — см. раздел про version выше |
| Мод скачался, но эффекта нет (миссия не подхватывает контент мода) | Пропущена зависимость мода либо неверный порядок в массиве mods |
| Сервер стартует, но конкретная миссия/сценарий не грузится | scenarioId указывает не на тот .conf внутри пакета мода — сверьте путь на странице мода |
Если непонятно, где именно затык — временно оставьте в mods один-единственный мод, перезапустите сервер и проверьте лог. Затем добавляйте моды по одному и повторяйте рестарт. Долго, зато однозначно покажет, какая именно запись в конфиге ломает загрузку — гораздо быстрее, чем гадать, глядя на модпак из пятнадцати позиций разом.
Отдельно: если сервер вообще перестал появляться в браузере серверов после добавления модов — это не всегда про моды напрямую, иногда параллельно всплывает проблема с портами или видимостью, разобранная в статье про сервер, не отображающийся в списке. А если сервер валится в крэш конкретно после подключения модов — гляньте разбор крашей плагинов и карт, там частая причина — именно конфликтующие или битые аддоны.
Автообновление модов и обслуживание
Раз сервер сам тянет моды при каждом старте (если version не зафиксирован), самый простой способ обновить весь модпак разом — штатный рестарт сервиса:
sudo systemctl restart reforger
Никаких дополнительных команд SteamCMD для модов, в отличие от Arma 3, не требуется — это не аддон в стиле Steam Workshop с отдельной закачкой по App ID, вся логика внутри самого движка сервера. Если хотите, чтобы сервер сам перезапускался по расписанию и подхватывал свежие версии модов ночью, когда онлайна нет — общий подход с systemd-таймером или cron-обёрткой над рестартом сервиса описан в статье про автообновление модов на сервере, сама механика применима и к Reforger, разница только в команде рестарта.
Если модпак закреплён версиями (version прописан явно у каждого мода) — обновление становится осознанным действием: правите номера версий в config.json, коммитите изменения куда у вас принято хранить конфиг, и только потом рестартуете сервис. Так вы не поймаете сюрприз в духе "автор мода выкатил патч в три часа ночи, а у меня турнир утром".
Поднять сервер Arma Reforger за пару минут
Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.
Создать серверЧастые вопросы
Нужно ли подписываться на мод в воркшопе, чтобы сервер его подхватил?
Нет, подписка в клиенте не нужна для сервера — достаточно правильного modId в config.json, сервер качает моды сам напрямую из воркшопа.
Можно ли использовать моды из Steam Workshop, как в Arma 3?
Нет, Reforger не использует Steam Workshop вообще — у него полностью отдельная система модов с собственным воркшопом внутри клиента и GUID вместо числовых ID.
Сколько модов можно поставить на сервер?
Официального жёсткого лимита нет, но чем больше и тяжелее моды, тем дольше сервер стартует и тем больше RAM и диска требуется — на паблик-серверах разумно держать список компактным и проверенным, а не тащить всё подряд.
Что будет, если у мода в воркшопе поменялся GUID после переиздания автором?
Старая запись в config.json перестанет находить мод — придётся зайти на новую страницу мода и скопировать актуальный modId заново, автоматической миграции тут нет.
Нужны ли ключи подписи для модов, как .bikey в Arma 3?
Нет, в Reforger отдельной системы подписи модов через ключи не предусмотрено — вся проверка целостности идёт через сам воркшоп и его GUID.
Можно ли держать разные наборы модов на разных сценариях одного сервера?
Нет, набор mods общий для всего конфига сервера и относится к текущему запуску — под разные модпаки под разные ивенты проще держать отдельные config.json и переключаться между ними при рестарте.