Выделенный сервер Arma Reforger - это бесплатная загрузка через SteamCMD (app id 1874900) с нативными сборками под Linux и Windows, которая целиком настраивается одним JSON-файлом, передаваемым через -config. В этом файле указывается сценарий по его ID, перечисляются моды для загрузки из собственного Workshop от Bohemia, задаются число игроков (до 128), кроссплей и дальности прорисовки, а также хранятся пароли админа и RCON. Серверу нужны UDP 2001 для игры и UDP 17777 для браузера серверов, плюс порт для RCON, если вы им пользуетесь, и реалистично от 6 до 12 ГБ памяти в зависимости от сценария и модов. Остальная часть руководства - это разбор каждого блока этого файла и ошибок, из-за которых сервер не появляется в списке.
Reforger работает на другом движке (Enfusion), чем Arma 3, и почти ничего оттуда не переносится: нет server.cfg, нет папок @mod, нет файлов .bikey, нет Steam Workshop. Если вы пришли из Arma 3, читайте это как про новую игру. Если вам нужна сама Arma 3, смотрите руководство по серверу и модам Arma 3.
Как устроен сервер Reforger#
Сервер загружает один сценарий - Conflict на Everon, Game Master, Combat Ops и так далее или модовый сценарий - и крутит его, пока тот не закончится или сервер не перезапустится. Игроки подключаются с PC (Steam), Xbox и PlayStation, в зависимости от того, какие платформы вы включили.
Три вещи отличают хостинг Reforger от старых игр Bohemia:
- Моды скачиваются сами. Вы перечисляете ID модов в конфиге; сервер при запуске загружает их из Arma Reforger Workshop (собственного сервиса Bohemia, а не Steam), а клиенты игроков скачивают их при входе. Никаких ручных загрузок, никаких файлов ключей.
- Конфиг - это JSON. Он строгий: одна пропущенная запятая или лишняя запятая после последнего элемента, и сервер отказывается запускаться. Проверяйте файл валидатором перед перезапуском.
- Сценарии указываются по ID ресурса - GUID в фигурных скобках, за которым идёт путь, - а не по понятному имени.
Требования и потребление ресурсов#
Bohemia публикует минимальные требования; реальным серверам нужно больше, и выбор сценария важнее числа игроков.
| Конфигурация | RAM | CPU | Примечания |
|---|---|---|---|
| Game Master, небольшая группа | 4-6 ГБ | 2 ядра | Нагрузка зависит от того, что спавнит Game Master |
| Conflict, 32 игрока | 6-8 ГБ | 2-3 ядра | ИИ и постройка баз накапливаются за сессию |
| Conflict, 64+ игрока | 10-12 ГБ | 3-4 ядра | Типичная публичная конфигурация |
| Много модов, любой размер | 12 ГБ+ | 3-4 ядра | Большие наборы модов перевешивают всё остальное |
- CPU. Enfusion использует несколько потоков лучше, чем движок Arma 3, но симуляция всё равно опирается на главный поток, так что частота важна. Ограничьте частоту кадров через
-maxFPS, чтобы сервер не гонял ядро на 100% ради кадров, которые никому не нужны. - Память. Растёт за долгую сессию Conflict по мере постройки баз и накопления ИИ. Плановый перезапуск делает её поведение предсказуемым.
- Диск. Установка сервера занимает десятки гигабайт, и моды добавляют к этому. Закладывайте 30-50 ГБ при умеренном списке модов; быстрое хранилище помогает при долгой первой загрузке модов и загрузке сценария.
Самое дорогое, как и в любой Arma, - это ИИ. Настройка operating.aiLimit ограничивает число ИИ; это самая действенная отдельная ручка для сервера, которому тяжело на второй час. Как понять, какого ресурса не хватает, объясняет статья CPU или RAM для игровых серверов.
Установка и строка запуска#
Сервер скачивается через SteamCMD анонимно:
$ steamcmd +force_install_dir /home/reforger/server +login anonymous \ +app_update 1874900 validate +quit$ cd /home/reforger/server$ ./ArmaReforgerServer -config ./config.json -profile ./profile \ -maxFPS 60Аргументы, которые имеют значение:
| Аргумент | Что делает |
|---|---|
-config | Путь к JSON-конфигурации. Обязателен |
-profile | Папка для логов, настроек и скачанных модов. Держите её вне папки установки |
-maxFPS | Ограничивает частоту кадров сервера. 60 - распространённое разумное значение |
-listScenarios | Выводит доступные ID сценариев, включая сценарии из установленных модов, и завершает работу |
В Windows бинарник называется ArmaReforgerServer.exe. У панельного хостинга те же аргументы собираются из вкладки Startup, а config.json - это файл, который вы правите в файловом менеджере. Про validate и обновления в целом рассказано в статье SteamCMD простыми словами.
config.json: верхний уровень, порты и RCON#
Полный рабочий файл выглядит так. Каждый блок разобран ниже.
{ "bindAddress": "0.0.0.0", "bindPort": 2001, "publicAddress": "", "publicPort": 2001, "a2s": { "address": "0.0.0.0", "port": 17777 }, "rcon": { "address": "0.0.0.0", "port": 19999, "password": "a-long-random-rcon-password", "permission": "admin", "maxClients": 2 }, "game": { "name": "Everon Conflict | EU | Comms", "password": "", "passwordAdmin": "a-different-long-password", "admins": [], "scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf", "maxPlayers": 64, "visible": true, "crossPlatform": true, "supportedPlatforms": ["PLATFORM_PC", "PLATFORM_XBL"], "gameProperties": { "serverMaxViewDistance": 2500, "serverMinGrassDistance": 50, "networkViewDistance": 1500, "disableThirdPerson": false, "fastValidation": true, "battlEye": true }, "mods": [] }, "operating": { "lobbyPlayerSynchronise": true, "playerSaveTime": 120, "aiLimit": -1, "slotReservationTimeout": 60, "joinQueue": { "maxSize": 0 } }}Сетевые ключи:
| Ключ | По умолчанию | Что делает |
|---|---|---|
bindAddress | все интерфейсы | Адрес, на котором слушает игра |
bindPort | 2001 | Игровой порт, UDP |
publicAddress | определяется | Адрес, который сообщается игрокам. Задайте его, если автоопределение ошибается |
publicPort | 2001 | Сообщаемый порт. Отличается от bindPort только при трансляции портов |
a2s.port | 17777 | Steam query (A2S), UDP - то, чем пользуются списки серверов |
rcon.port | не задан | Порт RCON, UDP |
publicAddress заслуживает пояснения: на сервере с обычным публичным адресом его обычно можно оставить пустым, но если браузер показывает ваш сервер с приватным или неверным адресом, явно впишите публичный IP. За NAT publicPort - это внешний порт, а bindPort - внутренний.
RCON в Reforger использует протокол BattlEye RCon поверх UDP, поэтому с ним работают привычные инструменты RCON для Arma. permission - это admin (полный контроль) или monitor (только чтение). maxClients ограничивает число одновременных подключений RCON; массивы blacklist и whitelist позволяют ограничить разрешённые команды. Протокол не шифруется, поэтому обращайтесь с портом так, как описано в статье безопасный RCON: длинный уникальный пароль, по возможности ограничение по адресу источника, а если вы RCON не используете - вообще не включайте его в конфиг.
Блок game: название, сценарий и платформы#
`name`, `password`, `passwordAdmin`. Название в браузере, пароль для входа (пустой для публичного сервера) и пароль, который используется с #login в чате. Делайте админский пароль длинным и не повторяйте пароль RCON.
`admins`. Список идентификаторов игроков, получающих права админа. Принимает идентификатор Bohemia identity игрока, а для игроков Steam - их SteamID64. Identity ID показывается в логе сервера при подключении игрока, и надёжнее всего копировать его оттуда.
`scenarioId`. Загружаемый сценарий в виде ссылки на ресурс:
{ECC61978EDCC2B5A}Missions/23_Campaign.conf Conflict - Everon{59AD59368755F41A}Missions/21_GM_Eden.conf Game Master - EveronЭти два давно не меняются, но с каждым крупным обновлением добавляются новые карты и официальные сценарии, у каждого свой ID. Не копируйте списки из старых постов. Запустите сервер один раз с -listScenarios и используйте то, что он выведет, - в этот вывод входят сценарии из модов в вашем конфиге, и только так можно правильно получить ID модового сценария.
`maxPlayers`. От 1 до 128, по умолчанию 64. Conflict рассчитан на большое число игроков; сессии Game Master и Combat Ops играются лучше в гораздо меньшем составе.
`visible`. Показывать ли сервер в браузере. Ставьте false для закрытого сервера под мероприятие, на который заходят по адресу.
`crossPlatform` и `supportedPlatforms`. При crossPlatform, равном true, могут заходить платформы из списка supportedPlatforms: PLATFORM_PC, PLATFORM_XBL (Xbox) и PLATFORM_PSN (PlayStation). Платформа, которой нет в списке, на ваш сервер не попадёт. Игроки на консолях могут загружать только моды, доступные на их платформе, поэтому список модов, который работает для игроков на PC, может незаметно отсечь консоли; если хотите, чтобы кроссплей что-то значил, проверьте доступность каждого мода по платформам в Workshop.
gameProperties и operating: производительность и поведение#
gameProperties управляет тем, что сервер просит клиентов отрисовывать и симулировать:
| Ключ | По умолчанию | Диапазон / значения | Что делает |
|---|---|---|---|
serverMaxViewDistance | 1600 | 500-10000 | Максимальная дальность обзора, доступная клиентам |
serverMinGrassDistance | 0 | 0, 50-150 | Минимальная дальность прорисовки травы, чтобы её нельзя было выключить ради преимущества |
networkViewDistance | 1500 | 500-5000 | Расстояние, на котором сервер отправляет обновления об объектах |
disableThirdPerson | false | true / false | Принудительный вид от первого лица |
fastValidation | true | true / false | Более быстрая проверка данных клиента. Не выключайте |
battlEye | true | true / false | Античит. Не выключайте на публичных серверах |
Реальную нагрузку на сервер даёт networkViewDistance. Каждый объект в этом радиусе реплицируется каждому игроку, поэтому увеличение этого значения на Conflict-сервере на 64 игрока поднимает и трафик, и нагрузку на CPU. Держите его около значения по умолчанию, если только ваше сообщество не играет в дальние бои на бронетехнике и вертолётах и вы не измерили цену. serverMinGrassDistance примерно на 50 закрывает трюк "выключи траву и увидишь всех, кто лежит в поле", который раздражает на публичных серверах.
operating отвечает за поведение сервера:
| Ключ | По умолчанию | Что делает |
|---|---|---|
lobbyPlayerSynchronise | true | Синхронизировать лобби с игроками в игре |
playerSaveTime | 120 | Секунды между сохранениями состояния игрока |
aiLimit | -1 | Ограничение числа ИИ-персонажей, -1 - без ограничения |
slotReservationTimeout | 60 | Сколько секунд слот держится за отключившимся игроком |
disableAI | false | Полностью отключить ИИ |
joinQueue.maxSize | 0 | Длина очереди на вход, до 50 |
Свежие версии также поддерживают сохранение прогресса сценария, которое настраивается в блоке persistence (интервал автосохранения и идентификатор hive). Он моложе остальной части файла и менялся между релизами, поэтому прежде чем полагаться на него в долгой кампании Conflict, сверьтесь с актуальной документацией Bohemia и в любом случае делайте собственные бэкапы папки профиля.
Как выбрать тип сценария для своей группы#
Сценарий определяет почти всё в сервере - кому он подходит, сколько игроков ему нужно и во что обходится его работа, - поэтому выбирайте его до того, как настраивать что-то ещё.
- Conflict - масштабный персистентный режим: две фракции строят базы, захватывают территорию и снабжают линию фронта. Ему нужен онлайн. Примерно ниже двадцати игроков карта кажется пустой, и одна сторона обычно накатывает как снежный ком. Он же самый тяжёлый по памяти за долгую сессию, потому что накапливаются базы, техника и ИИ.
- Game Master даёт одному или нескольким игрокам управлять сценарием, в реальном времени создавая ИИ, задачи и события для всех остальных. Он подходит организованным группам, которые проводят собственные операции, и даёт самую непредсказуемую нагрузку: Game Master, заспавнивший двести ботов в одном городе, только что устроил серверу худший вечер. Задавайте
aiLimitна серверах Game Master, даже если доверяете своему персоналу. - Combat Ops и другие официальные кооперативные сценарии - короткие структурированные миссии против ИИ для небольших групп. Они лёгкие в работе и не требуют постоянного обслуживания.
- Модовые сценарии бывают от маленьких тренировочных карт до полных переработок. Относитесь к каждому как к новой игре: прочитайте страницу мода, чтобы узнать ожидаемое число игроков и зависимости.
Разумная схема для сообщества - один публичный сервер Conflict и, если есть спрос, небольшой сервер Game Master под паролем для запланированных операций. Запустить оба на одной машине можно с разными портами и папками профиля, но каждому серверу нужна своя память, а один Conflict в пике займёт большую часть тарифа среднего размера.
Моды из Reforger Workshop#
Моды перечисляются в game.mods. Сервер при запуске скачивает каждый в папку профиля; подключающиеся клиенты скачивают тот же набор.
"mods": [ { "modId": "0123456789ABCDEF", "name": "Example Weapons Pack", "version": "1.0.12" }, { "modId": "FEDCBA9876543210", "name": "Example Map" }]Поля:
- `modId` - 16-символьный шестнадцатеричный ID со страницы мода в Workshop (на reforger.armaplatform.com или во внутриигровом Workshop). Это единственное поле, которое идентифицирует мод. ID выше - заглушки.
- `name` - информационное. Оно отображается в логах и помогает людям читать файл.
- `version` необязательно. Без него сервер при каждом запуске берёт последнюю версию. С ним сервер фиксирует эту версию - и это правильный выбор для сервера, где моды не должны меняться у вас под ногами.
- Зависимости подтягиваются автоматически: укажите нужный мод, и требуемые им моды тоже будут загружены.
Обратная сторона автоматических загрузок в том, что незафиксированный мод может обновиться за ночь, сервер подхватит новую версию при следующем перезапуске, и мод сломается. Для любого сервера, от которого зависят люди, фиксируйте версии, обновляйте осознанно и проверяйте после обновления. Статьи что делать, когда обновление мода всё ломает и как держать модовый сервер в чистоте применимы здесь ровно так же, как к любой другой игре.
Модовый сценарий выбирается точно так же, как официальный: добавьте мод, запустите сервер один раз с -listScenarios и скопируйте ID его сценария в scenarioId.
Порты, админы и повседневная работа#
| Порт | Протокол | Назначение |
|---|---|---|
2001 | UDP | Игровой трафик (bindPort) |
17777 | UDP | A2S query - браузер серверов и сайты-мониторинги |
19999 | UDP | RCON, только если настроен |
Всё работает по UDP. Если сервер запущен, но не виден в списке, в большинстве случаев дело в порте A2S; если он виден, но на него нельзя зайти, - в игровом порте или неверном publicAddress. Почему query-порт существует отдельно, объясняет статья порты игровых серверов простыми словами.
Админы входят из чата командой #login, за которой следует passwordAdmin (игроки из списка admins распознаются как админы автоматически). Вошедшие админы получают внутриигровые инструменты админа и команды чата для кика, бана и перезапуска; набор команд расширялся с обновлениями Reforger, поэтому вводите команды с # по официальному списку для вашей версии, а не по старому руководству. RCON даёт тот же контроль удалённо.
Порядок, который держит сервер Reforger в форме:
- Перезапуск по расписанию. Ежедневно, в час, когда никто не играет. Это сбрасывает накопившийся ИИ и рост памяти и подхватывает изменения конфига. Обоснование - в статье расписания перезапусков, которые помогают.
- Обновляйтесь осознанно. После обновления Reforger сервер должен обновиться, прежде чем кто-то сможет зайти, а модам может понадобиться, чтобы авторы выпустили исправления. Обновите сервер, проверьте моды, затем запускайте.
- Делайте backup конфига и профиля.
config.jsonмаленький и ценный. В профиле лежат логи и сохранённый прогресс, если он есть. В панели делайте backup перед каждым обновлением и восстанавливайте одним кликом, если что-то пошло не так. - Читайте лог после каждого изменения. Ошибки JSON, неудачные загрузки модов и неверные ID сценариев прямо указываются при запуске. Найти нужную строку поможет статья как читать консоль.
Решение проблем#
Сервер сразу завершается. Невалидный JSON. Обычная причина - лишняя запятая после последнего элемента списка или объекта. Прогоните файл через JSON-валидатор.
"Scenario not found" или загружается не тот сценарий. scenarioId написан с ошибкой, принадлежит моду, которого нет в списке, или взят из старой версии. Используйте -listScenarios.
Сервера нет в браузере. Порт A2S закрыт или указан неверно, visible равен false или publicAddress сообщает неверный адрес.
Игроки на консолях не могут зайти. crossPlatform равен false, их платформы нет в supportedPlatforms или какой-то мод из списка недоступен на их платформе.
Загрузка мода падает при запуске. Неверный modId, зафиксированная version, которую автор удалил, или временный сбой Workshop. Лог называет мод.
FPS сервера падает после часа Conflict. Накапливаются ИИ и объекты. Задайте aiLimit, проверьте networkViewDistance и настройте перезапуски по расписанию.
У игроков разная дальность обзора. Это ожидаемо - serverMaxViewDistance - потолок, а не цель. Клиенты выбирают значение не выше него.
FAQ#
Сервер Arma Reforger - это то же самое, что сервер Arma 3?
Нет. Другой движок, другие файлы, другая система модов. Reforger использует один config.json, автоматически скачивает моды из Workshop от Bohemia, и в нём нет server.cfg, папок @mod и ключей подписи.
Сколько игроков вмещает сервер Arma Reforger?
До 128, задаётся через maxPlayers. Сможет ли ваш сервер обсчитать столько, зависит от сценария, числа ИИ и CPU; большинство публичных серверов Conflict держат 64 и больше на мощном железе.
Где найти ID сценария?
Запустите сервер с -listScenarios. Он выведет ID всех доступных сценариев, включая сценарии из модов в вашем конфиге. Копируйте строку целиком, с фигурными скобками и путём.
Нужно ли загружать моды на сервер вручную?
Нет. Укажите ID каждого мода в game.mods, и сервер скачает его из Reforger Workshop при запуске. Игроки скачивают те же моды при входе.
Могут ли игроки с PlayStation и Xbox зайти на модовый сервер?
Только если каждый мод на сервере доступен на их платформе, и только при включённом crossPlatform и их платформе в списке supportedPlatforms. Проверьте доступность модов, прежде чем обещать кроссплей.
Нужен ли для хостинга Reforger аккаунт Steam или токен?
Сервер скачивается через SteamCMD анонимно и не требует токена игрового сервера. Моды берутся из Workshop от Bohemia, к которому сервер обращается без вашего аккаунта Steam.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.