Хостинг и создание собственного сервера в 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.

Выделенный сервер

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

Порты

ПротоколПортОписание
UDP2001Игровой порт
UDP50000..65000Порты связи с Steam
UDP17777Протокол 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:
CodeCountry
USUSA
DEGermany
CNChina
CZCzech Republic
FRFrance
GBUnited Kingdom of Great Britain and Northern Ireland
RURussian Federation
JPJapan
AUAustralia
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