Решение конфликтов модов и крашей сервера в Arma Reforger

Техническое руководство по устранению крашей и конфликтов модификаций на серверах Arma Reforger. Научитесь читать логи движка Enfusion и оптимизировать иерархию JSON.

20.05.2026 Русский

Решение конфликтов модов и крашей сервера в Arma Reforger

Переход серии Arma на новый движок Enfusion Engine кардинально изменил механику работы с модификациями. В Arma Reforger моды скачиваются и обновляются напрямую через встроенную мастерскую (Bohemia Workshop), а управление ими осуществляется через JSON-конфигурации. Однако архитектура нового движка крайне чувствительна к ошибкам в коде аддонов. Один некорректный скрипт или конфликт между двумя тяжелыми модификациями на технику или оружие может привести к тому, что server уйдет в бесконечный цикл перезагрузки или будет намертво зависать при запуске сценариев (Conflict или Combat Operations).

В этой статье мы разберем, как профессионально читать логи сервера (console.log), выявлять моды, ломающие сетевую репликацию, и правильно выстраивать иерархию загрузки аддонов в панели управления хостингом.

Часть 1: Где искать и как читать console.log?

Когда сервер Arma Reforger аварийно завершает работу, panel хостинга фиксирует краш, но не объясняет его причину. Настоящий ответ всегда кроется в текстовых логах сервера. Через встроенный файловый менеджер или SFTP перейдите в папку с профилем сервера (обычно это путь profile/logs/ или корень сервера) и найдите самый свежий файл console.log или application.log.

Прокрутите файл в самый низ — именно там, перед системной строкой закрытия процесса, будут находиться критические ошибки (Errors) и предупреждения (Warnings). В движке Enfusion они имеют четкую классификацию.


Часть 2: Главные типы ошибок репликации и скриптов

1. Ошибки репликации (Replication Token / Node Errors)

Сетевой код Enfusion Engine построен на системе репликации (Replication) — жестком соглашении между сервером и клиентом о том, какие свойства объектов передаются по сети. Если один мод пытается изменить свойства автомобиля (например, добавляет броню), а другой мод переписывает физику колес этой же машины, на сервере ломается сетевой токен.

В логах это выглядит следующим образом:

[Replication] ERROR: Component 'SCR_VehicleWeaponComponent' has mismatched replication layout!
[Server] CRASH: REPL_RECONCILE_FAILED for entity: Vehicle_Ural4320_RHS

Как прочитать: Движок прямо указывает на конфликт в компоненте оружия техники (SCR_VehicleWeaponComponent) внутри сущности Урала от модификации RHS. Это означает, что два установленных мода одновременно пытаются управлять стрельбой или турелью этой машины.

2. Скриптовые исключения (Script Runtime Exceptions)

Язык программирования Enforce Script, используемый в Reforger, строго типизирован. Если автор мода допустил ошибку в логике (например, обратился к объекту, который еще не успел заспавниться на сервере), движок останавливает выполнение всего игрового режима.

(E) Script: Runtime exception: 'Null pointer' access
(E) Script: Function: 'BaseGameMode.OnPlayerSpawned()' at MyCoolMod/Scripts/Game/GameMode/OnPlayerSpawn.c:42

Как прочитать: Произошел вылет из-за обращения к несуществующему объекту (Null pointer) в функции спавна игрока. Лог указывает точный путь к файлу внутри мода: папка MyCoolMod, строка 42. Этот аддон необходимо немедленно отключить или обновить.


Часть 3: Правильная настройка порядка загрузки (Иерархия JSON)

В отличие от Arma 3, где порядок загрузки определялся строкой запуска, в Arma Reforger сервер считывает моды из массива mods в файле config.json. Сервер загружает их строго сверху вниз. Если тяжелый мод требует для своей работы другой базовый мод, базовый должен находиться в списке выше.

Пример правильной структуры иерархии в config.json:

"mods": [
    {
        "modId": "595F284F4E402BF4",
        "name": "RHS_Status_Quo_Core",
        "version": "1.0.5"
    },
    {
        "modId": "5A3B189C4F201AA2",
        "name": "RHS_Extra_Vehicles_Extension",
        "version": "1.0.2"
    },
    {
        "modId": "5C2A449B8D105FF4",
        "name": "Server_Admin_Tools",
        "version": "2.1.0"
    }
]

Универсальные правила построения списка модов:

  1. Ядра и Фреймворки (Core Mods): Всегда ставьте глобальные модификации (такие как RHS Status Quo, глобальные паки карт или скриптовые библиотеки) в самый верх списка. Они создают базовые классы предметов.
  2. Расширения и Дополнения (Sub-mods / Addons): Моды, которые добавляют кастомные камуфляжи, прицелы или конкретные машины для крупных паков, должны идти строго после своих родительских ядер.
  3. Серверные утилиты и Админки: Плагины на логирование, админ-панели и управление правами ставьте в самый конец списка, чтобы они могли инициализироваться, когда игровой мир и все сущности уже созданы сервером.

Пошаговый чек-лист локализации скрытого конфликта

Если сервер крашится без явного указания конкретного мода в логах, используйте метод исключения (Метод деления пополам):

  1. Сделайте резервную копию вашего текущего файла config.json.
  2. Отключите ровно половину установленных модов в списке (просто удалите их блоки из JSON или закомментируйте).
  3. Попробуйте запустить сценарий Conflict.
    • Если сервер запустился успешно — проблема сидит в той половине модов, которую вы отключили.
    • Если сервер снова крашнулся — виновник находится среди оставшихся активных модов.
  4. Повторяйте процедуру деления списка пополам, пока не локализуете один конкретный modId, вызывающий сбой.
Симптом краша Частая техническая причина Метод устранения проблемы
Сервер замирает на этапе [GameMode] Spawn entities... Конфликт кастомных точек спавна (Spawn Points) в сценарии или карте. Проверить, не установлены ли одновременно две разные карты-модификации, переписывающие один и тот же регион (например, Эверон).
Игроков кикает с ошибкой Connection Timeout / Replication Loss Тяжелый мод шлет слишком много неоптимизированных сетевых RPC-сообщений. Удалить моды на детализированную прорисовку мелких объектов интерьера или кастомную одежду со сложными скриптами анимации.
Бесконечная загрузка модов сервером при рестарте В config.json указана устаревшая версия мода, которой больше нет в Bohemia Workshop. Удалить значение в поле "version" (оставить строку пустой: ""). Сервер автоматически скачает самую последнюю актуальную версию из мастерской.

Совет для администратора: После каждого крупного обновления самой игры Arma Reforger от разработчиков, Bohemia Interactive часто меняет внутренние API-классы движка Enfusion. Настоятельно рекомендуется временно отключать все геймплейные скриптовые моды в первые 24–48 часов после патча, пока авторы аддонов не выпустят свои обновления совместимости.

Похожие статьи

Оптимизация серверной производительности в Arma Reforger: лимиты ИИ и чистка карты

Техническое руководство по оптимизации выделенных серверов Arma Reforger посредством настройки лимитов спавна ботов ИИ и правил сборщика мусора в файле config.json.

Читать далее

Настройка сетевой репликации (Replication Layer) и борьба с задержками в Arma Reforger

Техническое руководство по настройке сетевого слоя репликации (Replication Layer) на серверах Arma Reforger. Настройка пропускной способности, очереди пакетов и радиуса стриминга.

Читать далее

Путь к сражению: Как найти и войти на ваш сервер Arma Reforger

Подробная инструкция по поиску вашего игрового сервера: от использования встроенного браузера с фильтрами до прямого подключения по IP-адресу.

Читать далее