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