Хостинг и создание собственного сервера в ARMA Reforger | ARMA 4
В данном руководстве описана настройка и создание сервера в игре ARMA Reforger и ARMA 4.
Хостинг сервера – это размещение игрового сервера, доступного по сети для других игроков.
Начиная с Arma Reforger v0.9.5 два очень важных аспекта хостинга публичных серверов:
- Установить и поддерживать значение fastValidation равным true
- Ограничить максимальный FPS сервера с помощью параметра запуска -maxFPS, чтобы сохранить производительность.
Сервер, размещенный игроком
Также известный как Listen Server, Player-Hosted Server – это сервер с локальным клиентом, который тоже играет на нем.
Arma Reforger не позволяет использовать Player-Hosted Server, начиная с версии 0.9.5.
Выделенный сервер
Выделенный сервер – это сервер, на котором не запущен ни один игровой экземпляр; он только обрабатывает игровую информацию и синхронизирует сеть.
Порты
| Протокол | Порт | Описание |
| UDP | 2001 | Игровой порт |
| UDP | 50000..65000 | Порты связи с Steam |
| UDP | 17777 | Протокол Steam Query используется для предоставления Steam информации о состоянии сервера (количество игроков, название сценария и т.д.) |
Параметры запуска
Дополнительную информацию см. в разделе Arma Reforger:Startup Parameters – Hosting и в разделе Configuration ниже.
конфигурация
Server exe использует параметр -config startup для назначения файла конфигурации.
ArmaReforgerServer.exe -config ".\Configs\Campaign_SWCoast.json"
В приведенном выше примере файл Campaign_SWCoast.json должен быть помещен в папку Configs рядом с exe-файлом.
maxFPS
Начиная с версии 0.9.5 настоятельно рекомендуется использовать этот параметр запуска, установленный на значение в диапазоне 60…120; в противном случае сервер может попытаться использовать все доступные ресурсы!
ArmaReforgerServer.exe -maxFPS 60
Прочие
Приведенные ниже параметры запуска являются необязательными, но могут оказаться полезными в некоторых случаях:
· logStats – позволяет записывать в журнал FPS сервера каждые x миллисекунд
· logLevel – устанавливает уровень детализации журнала
· listScenarios – регистрирует пути файлов доступных сценариев {{|.conf}} при запуске.
Файл настроек
Параметры внутри JSON-файла чувствительны к регистру!
Для работы Arma Reforger использует формат конфигурации JSON. Конфигурационный файл выглядит следующим образом:
{
"dedicatedServerId": "",
"region": "EU",
"gameHostBindAddress": "",
"gameHostBindPort": 2001,
"gameHostRegisterBindAddress": "",
"gameHostRegisterPort": 2001,
"adminPassword": "changeme",
"game": {
"name": "Server Name - Mission Name",
"password": "",
"scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"playerCountLimit": 32,
"autoJoinable": false,
"visible": true,
"gameProperties": {
"serverMaxViewDistance": 2500,
"serverMinGrassDistance": 50,
"networkViewDistance": 1000,
"disableThirdPerson": true,
"fastValidation": true,
"battlEye": true,
"missionHeader": {
"m_iPlayerCount": 40,
"m_eEditableGameFlags": 6,
"m_eDefaultGameFlags": 6,
"other": "values"
}
},
"mods": [
{
"modId": "59727DAE364DEADB",
"name": "WeaponSwitching",
"version": "1.0.1"
},
{
"modId": "59727DAE32981C7D",
"name": "Explosive Goats beta",
"version": "0.5.42"
}
]
},
"a2sQueryEnabled": true,
"steamQueryPort": 17777
}
Значения являются строками, если не указано иное.
dedicatedServerId
Используется системой “Избранное”. Если он не указан, бэкенд предоставит новый ID и сохранит его в конфигурационном файле. Администраторам серверов рекомендуется хранить этот ID в безопасности, чтобы сохранить свою базу игроков в случае переноса сервера или аварии конфигурации.
| Common ISO 3166-1 alpha-2 values: | |
| Code | Country |
| US | USA |
| DE | Germany |
| CN | China |
| CZ | Czech Republic |
| FR | France |
| GB | United Kingdom of Great Britain and Northern Ireland |
| RU | Russian Federation |
| JP | Japan |
| AU | Australia |
region
ID / название региона – необходимо, когда сервер регистрирует запущенную игру в Лобби. В этом поле может быть использован код ISO 3166-1 альфа-2. Обычные значения Nitrado:
· “EU-FFM”
· “US-LA”
· “US-MI”
gameHostBindAddress
IP-адрес, к которому будет привязан сокет сервера. В большинстве случаев его следует оставить пустым. Он может быть использован для ограничения подключений к определенному сетевому интерфейсу. Если не указывать или оставить пустым, то используется 0.0.0.0, что разрешает соединения через любой IP-адрес.
IPv6 не поддерживается Arma Reforger v0.9.5.
gameHostBindPort
числовое значение, диапазон 1…65535, по умолчанию: 2001
UDP-порт, к которому будет привязан серверный сокет.
gameHostRegisterBindAddress
IP-адрес, зарегистрированный в бэкенде. Он должен быть установлен на публичный IP-адрес, к которому клиенты могут подключиться, чтобы достичь сервера (либо IP-адрес самого сервера, либо IP-адрес машины, которая будет пересылать данные на сервер). Если этот параметр не указан или пуст, будет сделана попытка автоматически определить IP-адрес, но это часто не удается, и на это не следует полагаться, так как сервер может быть недоступен из публичных сетей.
IPv6 не поддерживается в Arma Reforger v0.9.5.
gameHostRegisterPort
числовое значение, диапазон 1…65535, по умолчанию: 2001
UDP-порт, зарегистрированный в бэкенде. Если сам сервер имеет публичный IP-адрес, это должно быть то же значение, что и в gameHostBindPort. В противном случае это UDP-порт, который перенаправляется на сервер.
adminPassword
Определяет пароль администратора сервера, позволяет администратору сервера входить в систему и управлять сервером, для доступа к нему откройте окно ввода чата, нажав C в лобби или введите Enter ↵ в игре, а затем: #login [пароль администратора]
game
Определите настройки сервера – см. раздел “Игра” ниже.
Можно задать только один сценарий – Arma Reforger не позволяет чередовать миссии, начиная с версии 0.9.5.
a2sQueryEnabled
значение bool, по умолчанию: false
Включить протокол Steam Query
steamQueryPort
числовое значение, диапазон 1…65535, по умолчанию: 17777
Изменить UDP-порт Steam Query, на котором игра прослушивает запросы A2S
game
name
длина 0…100 символов
password
длина 0..x символов
Пароль, необходимый для подключения к серверу.
scenarioId
Здесь задается путь к файлу .conf сценария. См. параметр запуска listScenarios, чтобы перечислить доступные сценарии и получить путь к их .conf-файлу.
gameNumber
числовое значение, диапазон 1..9999
Добавить суффикс к имени сервера, если больше серверов размещено скриптом (обычно в центрах обработки данных) – например, “Имя сервера – 56”.
playerCountLimit
числовое значение, диапазон 1…256, по умолчанию: 127
Устанавливает максимальное количество игроков на сервере.
autojoinable
bool значение, по умолчанию: false
Устанавливает, может ли сессия быть выбрана с помощью функции автоматического присоединения.
visible
bool значение, по умолчанию: false
Устанавливает, может ли сессия быть выбрана с помощью функции автоматического присоединения.
gameProperties
Определите настройки сценария – см. раздел gameProperties ниже.
mods
Список модов, необходимых клиенту. Они будут автоматически загружены и активированы при присоединении.
modID
GUID мода. Его можно получить из опций i.e. Workbench при запуске мода или непосредственно из файла gproj

name
Этот параметр ничего не делает и используется только как своего рода комментарий, с человекочитаемым названием мода.
version
Параметр version mod является необязательным. Если он отсутствует, будет использоваться последняя версия мода.
gameProperties
serverMaxViewDistance
числовое значение, диапазон 500…10000, по умолчанию: 1600
serverMinGrassDistance
числовое значение, диапазон 0 / 50…150, по умолчанию: 0
Минимальное расстояние до травы в метрах. Если установлено значение 0, никакое расстояние не навязывается клиентам.
fastValidation
bool value, по умолчанию: false
Проверка сущностей и компонентов карты, загружаемых на клиент при подключении, чтобы убедиться, что все совпадает с начальным состоянием сервера.
– true (включено) – между клиентами происходит обмен минимальной информацией, необходимой для обеспечения совпадения данных. Когда происходит несовпадение, никакой дополнительной информации не будет, чтобы определить, где состояния клиента и сервера начинают различаться. Все серверы, которые ожидают подключения клиентов через интернет, должны иметь включенную быструю проверку.
– false (отключено) – дополнительные данные для каждого реплицированного объекта и компонента в карте будут передаваться при подключении нового клиента к серверу. При возникновении несоответствия можно указать на конкретную сущность или компонент, где все начинает отличаться. При локальной разработке (т.е. сервер и клиент работают на одной машине) можно отключить быструю проверку, чтобы легче определить источник проблемы.
Всегда держите это значение равным true для публичного сервера!
networkViewDistance
числовое значение, диапазон 500.5000, по умолчанию: 500
Максимальный диапазон сетевого потока реплицированных сущностей.
battlEye
числовое значение, диапазон 500.5000, по умолчанию: 500
Максимальный диапазон сетевого потока реплицированных сущностей.
disableThirdPerson
значение bool, по умолчанию: false
Принуждает клиентов использовать вид от первого лица.
missionHeader
Это свойство перезаписывает SCR_MissionHeaderCampaign сценария.
Template
{
"dedicatedServerId": "",
"region": "",
"gameHostBindAddress": "",
"gameHostBindPort": 0,
"gameHostRegisterBindAddress": "",
"gameHostRegisterPort": 0,
"game": {
"name": "",
"password": "",
"scenarioId": "",
"playerCountLimit": 0,
"visible": true,
"gameProperties": {
"serverMaxViewDistance": 0,
"serverMinGrassDistance": 0,
"networkViewDistance": 0,
"disableThirdPerson": false,
"fastValidation": true,
"battlEye": true
},
"mods": []
}
}
Linux сервер
По умолчанию игровой сервер будет использовать IP-адрес контейнера Docker для регистрации браузера сервера и подключения клиента, что приведет к сбою при попытке подключения клиента.
Чтобы избежать этого, используйте:
· Выполните команду “ipconfig” в cmd, чтобы получить список локальных IP-адресов
· Опция “IP Connect” в браузере сервера и вставьте один из локальных IP-адресов сервера
· Пользовательская конфигурация сервера (файл .json) с параметрами “gameHostRegisterBindAddress” и “gameHostRegisterPort”, установленными на одну из локальных комбинаций IP:Port
Пример:
-config "./My_Config.json" ClientConnectAddress 192.168.39.98
Установка Docker
Эта конфигурация Docker адаптирована для Ubuntu. Другие дистрибутивы, такие как Fedora или Arch Linux, могут хранить свои сертификаты в следующем месте: /etc/pki/ca-trust/ – обязательно отредактируйте конфигурацию соответствующим образом.
Общественный образ Docker доступен на GitHub: https://github.com/acemod/docker-reforger.
1. Установите последнюю ссылку для загрузки Docker:
1. Включите Hyper-V в Windows, если это еще не сделано
2. Назначьте ресурсы HW в Docker/Settings/Resources/Advanced:
1. ЦПУ: 4 cores
2. ОЗУ: 6 GB
2. Загрузите образ Ubuntu 18.04 с помощью пакетной загрузки или powershell cmd: docker pull ubuntu:18.04
3. Запустите образ Ubuntu:
1. смонтировать том с данными сервера
2. выставить UDP-порт клиентского соединения
3. Пример: docker container run -t -d -p 2001:2001/udp -v D:\server_data\linux_packed:/home/packed --name ubuntu_test ubuntu:18.04
4. Подключитесь к консоли bash: docker exec -it ubuntu_test /bin/bash
5. Установите необходимое программное обеспечение:
1. libcurl4 – требуется серверному приложению
2. net-tools – для отладочных целей (позволяет использовать ifconfig и т.д.)
3. Установка:
1. apt-get update
2. apt-get install libcurl4
3. apt-get install net-tools
4. apt-get install libssl1.1
6. Создайте каталог журналов, например mkdir /home/profile
7. Запустите сервер:
1. исполняемый файл сервера нуждается в соответствующих правах на исполнение/доступ:
1. cd server_root_folder
2. chmod +x ArmaReforgerServer
2. Пример: ./ArmaReforgerServer -gproj ./addons/data/ArmaReforger.gproj -config Configs/ServerConfig/Campaign.json -backendlog -nothrow -profile /home/profile





