Server Config – Arma Reforger

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Remove hidden JSON/HTML)
(Add RCON and VONCanTransmitCrossFaction, Remove 0.9.8 → 0.9.9 warning table)
Line 1: Line 1:
<div class="float-right" style="font-size: 0.9em">
{{TOC|side}}
{{Feature|warning|
{{armaR}} uses {{Link|https://en.wikipedia.org/wiki/JSON|JSON}} configuration format to run. {{Link|#Template}} and {{Link|#Example}} are available at the bottom of this page.
'''0.9.8 - 0.9.9 warning:'''
 
The 0.9.8.73 patch renamed the following entries:


{{{!}} class{{=}}"wikitable"
! New
! rowspan{{=}}"8" {{!}} replaces
! Current
{{!}}-
{{!}} {{hl|{{Link|#bindAddress|"bindAddress"}}}} {{!}}{{!}} {{hl|{{Link|#gameHostBindAddress|"gameHostBindAddress"}}}}
{{!}}-
{{!}} {{hl|{{Link|#bindPort|"bindPort"}}}} {{!}}{{!}} {{hl|{{Link|#gameHostBindPort|"gameHostBindPort"}}}}
{{!}}-
{{!}} {{hl|{{Link|#publicAddress|"publicAddress"}}}} {{!}}{{!}} {{hl|{{Link|#gameHostRegisterBindAddress|"gameHostRegisterBindAddress"}}}}
{{!}}-
{{!}} {{hl|{{Link|#publicPort|"publicPort"}}}} {{!}}{{!}} {{hl|{{Link|#gameHostRegisterPort|"gameHostRegisterPort"}}}}
{{!}}-
{{!}} {{hl|{{Link|#maxPlayers|"maxPlayers"}}}} {{!}}{{!}} {{hl|{{Link|#playerCountLimit|"playerCountLimit"}}}}
{{!}}-
{{!}} {{hl|{{Link|#supportedPlatforms|"supportedPlatforms"}}}} {{!}}{{!}} {{hl|{{Link|#supportedGameClientTypes|"supportedGameClientTypes"}}}}
{{!}}-
{{!}} {{hl|{{Link|#passwordAdmin|"passwordAdmin"}}}} {{!}}{{!}} {{hl|{{Link|#adminPassword|"adminPassword"}}}}<br>It is now located in the {{Link|#game_2|game}} section (the same as {{hl|{{Link|#password}}}})
{{!}}}


Both old and new names will work until the '''0.9.9''' patch where only the new names will exist.<br>
Do '''NOT''' have old and new versions coexist, as behaviour/preference is not guaranteed in this situation.
'''Experimental branch users:''' the 0.9.9.31 patch removed this backward compatibility<br>Only the new naming will work from this point.
}}
</div>
{{Feature|important|
{{Feature|important|
Two '''very important''' aspects of dedicated server public hosting:
Two '''very important''' aspects of dedicated server public hosting:
* Keep {{Link|#fastValidation}} to {{hl|true}}
* Keep {{Link|#fastValidation}} to {{hl|true}}
* Limit max FPS with the {{hl|[[Arma Reforger:Startup Parameters#maxFPS|-maxFPS]]}} startup parameter in order to save performance
* Limit max FPS with the {{hl|{{Link|Arma Reforger:Startup Parameters#maxFPS|-maxFPS}}}} startup parameter in order to save performance
}}
}}
{{armaR}} uses {{Link|https://en.wikipedia.org/wiki/JSON|JSON}} configuration format to run. {{Link|#Template}} and {{Link|#Example}} are available at the bottom of this page.
{{Feature|informative|
{{Feature|informative|
* Parameters inside the JSON file are case-sensitive!
* Parameters inside the JSON file are case-sensitive!
* Values are strings, unless mentioned otherwise.
* Values are strings, unless mentioned otherwise.
* For Community config generators, see the following:
** {{Link|https://arscfg.johandejong.dev/}}
** {{Link|https://armareforger.se/server-generator/}}
** {{Link|https://scg.armaplatform.io/}}
}}
}}




== Root ==


Community server config generators:
=== bindAddress ===
* https://arscfg.johandejong.dev/
* https://armareforger.se/server-generator/
* https://scg.armaplatform.io/


{{Clear}}
{{TOC|side}}
=== Root ===
==== gameHostBindAddress ====
{{ArgTitle|4|bindAddress|{{GVI|armaR|0.9.9|size= 0.75}}}}
IP address to which the server socket will be bound. In most cases, this should be left empty.
IP address to which the server socket will be bound. In most cases, this should be left empty.
It can be used to restrict connections to particular network interface. When left out or empty, {{hl|0.0.0.0}} is used, which allows connections through any IP address.
It can be used to restrict connections to particular network interface. When left out or empty, {{hl|0.0.0.0}} is used, which allows connections through any IP address.
{{Feature|important|IP'''v6''' is '''not''' supported by {{armaR}} v0.9.8.}}
{{Feature|important|IP'''v6''' is '''not''' supported by {{armaR}} v0.9.8.}}


==== gameHostBindPort ====
''was '''gameHostBindAddress''' before 0.9.8.73''
{{ArgTitle|4|bindPort|{{GVI|armaR|0.9.9|size= 0.75}}}}
 
=== bindPort ===
 
number value, range 1..65535, default: 2001
number value, range 1..65535, default: 2001


UDP port to which the server socket will be bound.
UDP port to which the server socket will be bound.


==== gameHostRegisterBindAddress ====
''was '''gameHostBindPort''' before 0.9.8.73''
{{ArgTitle|4|publicAddress|{{GVI|armaR|0.9.9|size= 0.75}}}}
 
=== publicAddress ===
 
IP address registered in backend.
IP address registered in backend.
This should be set to the public IP address to which clients can connect in order to reach the server (either IP of the server itself or IP of the machine that will forward data to the server).
This should be set to the public IP address to which clients can connect in order to reach the server (either IP of the server itself or IP of the machine that will forward data to the server).
Line 77: Line 43:
{{Feature|important|IP'''v6''' is '''not''' supported by {{armaR}} v0.9.8.}}
{{Feature|important|IP'''v6''' is '''not''' supported by {{armaR}} v0.9.8.}}


==== gameHostRegisterPort ====
''was '''gameHostRegisterBindAddress''' before 0.9.8.73''
{{ArgTitle|4|publicPort|{{GVI|armaR|0.9.9|size= 0.75}}}}
 
=== publicPort ===
 
number value, range 1..65535, default: 2001
number value, range 1..65535, default: 2001


UDP port registered in backend. If the server itself has a public IP address, this should be the same value as in {{hl|gameHostBindPort}}. Otherwise, this is the UDP port that is forwarded to the server.
UDP port registered in backend. If the server itself has a public IP address, this should be the same value as in {{hl|gameHostBindPort}}. Otherwise, this is the UDP port that is forwarded to the server.


==== adminPassword ====
''was '''gameHostRegisterPort''' before 0.9.8.73''
Defines the server's admin password, allows a server administrator to login and control the server, to access this either open the chat input box by pressing {{Controls|C}} in the lobby or {{Controls|enter}} in-game followed by: {{hl|#login [the admin password]}}
 
{{Feature|informative|'''0.9.9''' will move this setting to {{Link|#game 2|game}} as {{Link|#passwordAdmin}}.}}
=== a2sQueryEnabled ===


==== a2sQueryEnabled ====
bool value, default: false
bool value, default: false


Enable Steam Query protocol.
Enable Steam Query protocol.


==== steamQueryPort ====
=== steamQueryPort ===
 
number value, range 1..65535, default: 17777
number value, range 1..65535, default: 17777


{{ArgTitle|4|a2s|{{GVI|armaR|0.9.9}}}}
{{ArgTitle|3|a2s|{{GVI|armaR|0.9.9}}}}
 
''0.9.9.31''
''0.9.9.31''


Steam Query protocol definition - see the [[#a2s 2|a2s]] section below.
Steam Query protocol definition - see the {{Link|#a2s 2|a2s}} section below.
{{Feature|informative|Before {{GVI|armaR|0.9.9|size= 0.75}}, a2s settings were:
{{Feature|informative|Before {{GVI|armaR|0.9.9|size= 0.75}}, a2s settings were:
* {{hl|a2sQueryEnabled}} - bool value, default: false
* {{hl|a2sQueryEnabled}} - bool value, default: false
Line 104: Line 73:
}}
}}


==== game ====
{{ArgTitle|3|rcon|{{GVI|armaR|1.0.0}}}}
Define the server's settings - see the [[#game 2|game]] section below.
 
The RCON Protocol is a TCP/IP-based communication protocol that allows console commands to be issued to the server via a '''R'''emote '''CON'''sole, or RCON - see the {{Link|#rcon 2|rcon}} section below.
 
=== game ===
 
Define the server's settings - see the {{Link|#game 2|game}} section below.
{{Feature|important|Only '''one''' scenario can be defined - {{armaR}} does '''not''' allow for mission rotation as of v0.9.8.}}
{{Feature|important|Only '''one''' scenario can be defined - {{armaR}} does '''not''' allow for mission rotation as of v0.9.8.}}


{{ArgTitle|4|operating|{{GVI|armaR|0.9.7}}}}
{{ArgTitle|3|operating|{{GVI|armaR|0.9.7}}}}
 
Define various server settings - see the {{Link|#operating 2|operating}} section below.
Define various server settings - see the {{Link|#operating 2|operating}} section below.


{{ArgTitle|3|a2s|{{GVI|armaR|0.9.9}}}}
 
{{ArgTitle|2|a2s|{{GVI|armaR|0.9.9}}}}


''0.9.9.31''
''0.9.9.31''


==== address ====
=== address ===
 
required
required


IP address to which A2S socket will be bound. It can be used to restrict A2S queries to a particular network interface.
IP address to which A2S socket will be bound. It can be used to restrict A2S queries to a particular network interface.


==== port ====
=== port ===
 
number value, range 1..65535, default: 17777
number value, range 1..65535, default: 17777


Change Steam Query UDP port on which game listens to A2S requests
Change Steam Query UDP port on which game listens to A2S requests


=== game ===


==== name ====
{{ArgTitle|2|rcon|{{GVI|armaR|1.0.0}}}}
 
=== address ===
 
required
 
IP address to which the RCON socket will be bound. It can be used to restrict connection to a particular network interface.
 
=== port ===
 
number value, range 1..65535, default 19999
 
RCON protocol port on which the game listens
 
=== password ===
 
string
 
{{Feature|important|Does '''not''' support spaces.}}
 
=== permission ===
 
string,
 
Permission for all RCON clients. The admin can perform any command while the monitor can perform only commands which don't change the server's state.
 
=== blacklist ===
 
array value, default []
 
A list of commands excluded from execution.
 
=== whitelist ===
 
array value, default []
 
If defined, it specifies the list of commands that can be executed, and no other command is allowed.
 
 
== game ==
 
=== name ===
 
length 0..100 characters
length 0..100 characters


==== password ====
=== password ===
 
length 0..x characters
length 0..x characters


Password required to join the server.
Password required to join the server.


{{ArgTitle|4|passwordAdmin|{{GVI|armaR|0.9.9}}}}
=== passwordAdmin ===
 
length: 0..x characters
length: 0..x characters


Defines the server's admin password, allows a server administrator to login and control the server, to access this either open the chat input box by pressing {{Controls|C}} in the lobby or {{Controls|enter}} in-game followed by: {{hl|#login [the admin password]}}
Defines the server's admin password, allows a server administrator to login and control the server, to access this either open the chat input box by pressing {{Controls|C}} in the lobby or {{Controls|enter}} in-game followed by: {{hl|#login [the admin password]}}
{{Feature|important|This password does not support spaces in it.}}
{{Feature|important|This password does not support spaces in it.}}
{{Feature|informative|'''0.9.9''' will move this setting from {{Link|#Configuration File}}/{{Link|#passwordAdmin}}.}}


''was root/passwordAdmin before 0.9.8.73''
{{ArgTitle|3|admins|{{GVI|armaR|0.9.9}}}}


{{ArgTitle|4|admins|{{GVI|armaR|0.9.9}}}}
''0.9.9.31''
''0.9.9.31''


Line 150: Line 172:
List players as server admins - they can be checked in script using <enforce inline>BackendApi.IsListedServerAdmin(int playerId)</enforce> regardless of their logged-in state.
List players as server admins - they can be checked in script using <enforce inline>BackendApi.IsListedServerAdmin(int playerId)</enforce> regardless of their logged-in state.


In a next version this will allow listed users to {{hl|#login}} without a password.<br>
In a next version this will allow listed users to {{hl|#login}} without a password.
 
=== scenarioId ===


==== scenarioId ====
The scenario's {{hl|.conf}} file path is defined here.
The scenario's {{hl|.conf}} file path is defined here.
See the [[Arma Reforger:Startup Parameters#listScenarios|listScenarios]] startup parameter to list available scenarios and obtain their {{hl|.conf}} file path.
See the {{Link|Arma Reforger:Startup Parameters#listScenarios|listScenarios}} startup parameter to list available scenarios and obtain their {{hl|.conf}} file path.


: {{GVI|armaR|0.9.9|size= 0.75}} <spoiler text="Show Official Scenarios">
: {{GVI|armaR|0.9.9|size= 0.75}} <spoiler text="Show Official Scenarios (0.9.9)">
  : {ECC61978EDCC2B5A}Missions/23_Campaign.conf (Conflict - Everon)
  : {ECC61978EDCC2B5A}Missions/23_Campaign.conf (Conflict - Everon)
  : {59AD59368755F41A}Missions/21_GM_Eden.conf (Game Master - Everon)
  : {59AD59368755F41A}Missions/21_GM_Eden.conf (Game Master - Everon)
Line 166: Line 189:
  : {C41618FD18E9D714}Missions/23_Campaign_Arland.conf (Conflict - Arland)
  : {C41618FD18E9D714}Missions/23_Campaign_Arland.conf (Conflict - Arland)
</spoiler>
</spoiler>
: {{GVI|armaR|1.0.0|size= 0.75}} <spoiler text="Show Official Scenarios (1.0.0)">
: {ECC61978EDCC2B5A}Missions/23_Campaign.conf (Conflict - Everon)
: {59AD59368755F41A}Missions/21_GM_Eden.conf (Game Master - Everon)
: {94FDA7451242150B}Missions/103_Arland_Tutorial.conf (Training)
: {2BBBE828037C6F4B}Missions/22_GM_Arland.conf (Game Master - Arland)
: {C700DB41F0C546E1}Missions/23_Campaign_NorthCentral.conf (Conflict - Northern Everon)
: {28802845ADA64D52}Missions/23_Campaign_SWCoast.conf (Conflict - Southern Everon)
: {DAA03C6E6099D50F}Missions/24_CombatOps.conf (Combat Ops - Arland)
: {C41618FD18E9D714}Missions/23_Campaign_Arland.conf (Conflict - Arland)
</spoiler>
=== maxPlayers ===


==== playerCountLimit ====
{{ArgTitle|4|maxPlayers|{{GVI|armaR|0.9.9|size= 0.75}}}}
number value, range 1..256, default: 64
number value, range 1..256, default: 64


Set the maximum amount of players on the server.
Set the maximum amount of players on the server.


==== visible ====
''was '''playerCountLimit''' before 0.9.8.73''
 
=== visible ===
 
bool value, default: true (since 0.9.8.73)
bool value, default: true (since 0.9.8.73)


Set the visibility of the server in the Server Browser.
Set the visibility of the server in the Server Browser.


{{ArgTitle|4|crossPlatform|{{GVI|armaR|0.9.9}}}}
{{ArgTitle|3|crossPlatform|{{GVI|armaR|0.9.9}}}}
 
bool value, default: false
bool value, default: false


If set to true, automatically adds {{hl|"PLATFORM_PC"}} and {{hl|"PLATFORM_XBL"}} to {{Link|#supportedGameClientTypes}} if they are missing; does nothing if set to false.
If set to true, automatically adds {{hl|"PLATFORM_PC"}} and {{hl|"PLATFORM_XBL"}} to {{Link|#supportedGameClientTypes}} if they are missing; does nothing if set to false.


==== supportedGameClientTypes ====
=== supportedPlatforms ===
{{ArgTitle|4|supportedPlatforms|{{GVI|armaR|0.9.9|size= 0.75}}}}
 
array value, default: ["PLATFORM_PC"]
array value, default: ["PLATFORM_PC"]


Line 203: Line 240:
|}
|}


==== gameProperties ====
''was '''supportedGameClientTypes''' before 0.9.8.73''
Define the scenario's settings - see the [[#gameProperties 2|gameProperties]] section below.
 
=== gameProperties ===
 
Define the scenario's settings - see the {{Link|#gameProperties 2|gameProperties}} section below.
 
=== mods ===


==== mods ====
The list of mods required by the client that will automatically be downloaded and activated on join.
The list of mods required by the client. They will automatically be downloaded and activated on join. List of mods can be created by activating wanted mods in in-game '''Workshop''' and then, via '''Mod manager,''' result can be converted to ready to be used string after navigating to '''JSON''' tab and then clicking on '''Copy to clipboard''' button.
It can be created by activating wanted mods in the {{Link|Arma Reforger:Workshop|Workshop}} and then, via the '''Mod manager''', result can be converted to ready to be used string after navigating to '''JSON''' tab and then clicking on the '''Copy to clipboard''' button.


[[File:armareforger-server-hosting-mod-list.png|906x906px]]
[[File:armareforger-server-hosting-mod-list.png|906x906px]]


===== modID =====
==== modID ====
GUID of the mod. Single GUID can be obtained from Workshop webpage  
GUID of the mod. Single GUID can be obtained from Workshop webpage  


Line 218: Line 260:
Alternatively you can grab it from Workbench options when mod is running or directly from gproj file
Alternatively you can grab it from Workbench options when mod is running or directly from gproj file


[[Image:armareforger-server-hosting-guid.png|1200px]]
[[File:armareforger-server-hosting-guid.png|1200px]]


===== name =====
==== name ====
This parameter doesn't do anything and is only used as sort of comment, with human readable name of the mod.
This parameter doesn't do anything and is only used as sort of comment, with human readable name of the mod.


===== version =====
==== version ====
{{Feature|informative|The {{hl|version}} mod parameter is optional. If it missing, the latest mod version will be used.}}
{{Feature|informative|The {{hl|version}} mod parameter is optional. If it missing, the latest mod version will be used.}}


=== gameProperties ===


==== serverMaxViewDistance ====
== gameProperties ==
 
=== serverMaxViewDistance ===
 
number value, range 500..10000, default: 1600
number value, range 500..10000, default: 1600


==== serverMinGrassDistance ====
=== serverMinGrassDistance ===
 
number value, range 0 / 50..150, default: 0
number value, range 0 / 50..150, default: 0


Minimum grass distance in meters. If set to 0 no distance is forced upon clients.
Minimum grass distance in meters. If set to 0 no distance is forced upon clients.


==== fastValidation ====
=== fastValidation ===
 
bool value, default: true (since 0.9.6)
bool value, default: true (since 0.9.6)


Line 248: Line 294:
{{Feature|warning|'''Always''' set this value to {{hl|true}} for a public server!}}
{{Feature|warning|'''Always''' set this value to {{hl|true}} for a public server!}}


==== networkViewDistance ====
=== networkViewDistance ===
 
number value, range 500..5000, default: 1500
number value, range 500..5000, default: 1500


Maximum network streaming range of replicated entities.
Maximum network streaming range of replicated entities.


==== battlEye ====
=== battlEye ===
 
bool value, default: true (since 0.9.8.73)
bool value, default: true (since 0.9.8.73)


true to enable BattlEye, false to disable it.
true to enable BattlEye, false to disable it.


==== disableThirdPerson ====
=== disableThirdPerson ===
 
bool value, default: false
bool value, default: false


Force clients to use the first-person view.
Force clients to use the first-person view.


==== VONDisableUI ====
=== VONDisableUI ===
 
bool value, default: false
bool value, default: false


Force clients to not have VON (Voice Over Network) UI.
Force clients to not have VON (Voice Over Network) UI.


==== VONDisableDirectSpeechUI ====
=== VONDisableDirectSpeechUI ===
 
bool value, default: false
bool value, default: false


Force clients to not have VON (Voice Over Network) Direct Speech UI.
Force clients to not have VON (Voice Over Network) Direct Speech UI.


==== missionHeader ====
{{ArgTitle|3|VONCanTransmitCrossFaction|{{GVI|armaR|1.0.0}}}}
 
bool value, default: false
 
Option to allow players to transmit on other factions radios. true is allow to communicate, false is listen-only
 
=== missionHeader ===


This property overwrites the scenario's {{Link/Enfusion|armaR|SCR_MissionHeaderCampaign}}.
This property overwrites the scenario's {{Link/Enfusion|armaR|SCR_MissionHeaderCampaign}}.


{{ArgTitle|3|operating|{{GVI|armaR|0.9.7}}}}


==== lobbyPlayerSynchronise ====
{{ArgTitle|2|operating|{{GVI|armaR|0.9.7}}}}
 
=== lobbyPlayerSynchronise ===
 
bool value, default: true (since 0.9.8.73)
bool value, default: true (since 0.9.8.73)


If enabled, the list of player identities present on server is sent to the GameAPI along with the server's heartbeat.
If enabled, the list of player identities present on server is sent to the GameAPI along with the server's heartbeat.
{{Feature|informative|This setting fixes the discrepancy between the real and reported number of players on the server.}}
{{Feature|informative|This setting fixes the discrepancy between the real and reported number of players on the server.}}
<!--
 
{{ArgTitle|4|disableCrashReporter|{{GVI|armaR|0.9.8}}}}
{{ArgTitle|3|disableCrashReporter|{{GVI|armaR|0.9.8}}}}
 
bool value, default: false
bool value, default: false


If enabled, the automatic server-side [[Arma Reforger:Crash Report|Crash Report]] is disabled. Has the same effect as {{Link|Arma Reforger:Startup Parameters#disableCrashReporter|-disableCrashReporter}}.
If enabled, the automatic server-side {{Link|Arma Reforger:Crash Report|Crash Report}} is disabled. Has the same effect as {{Link|Arma Reforger:Startup Parameters#disableCrashReporter|-disableCrashReporter}}.
 
{{ArgTitle|3|disableServerShutdown|{{GVI|armaR|0.9.8}}}}


{{ArgTitle|4|disableServerShutdown|{{GVI|armaR|0.9.8}}}}
bool value, default: false
bool value, default: false


If enabled, the server will not automatically shutdown if connection to backend is lost.
If enabled, the server will not automatically shutdown if connection to backend is lost.
Related to room requests errors - other causes like corrupted config will still shutdown the server.
Related to room requests errors - other causes like corrupted config will still shutdown the server.
-->
 
{{ArgTitle|4|playerSaveTime|{{GVI|armaR|0.9.8}}}}
{{ArgTitle|3|playerSaveTime|{{GVI|armaR|0.9.8}}}}
 
number value, default: 120
number value, default: 120


Default period in seconds for saving players for both Online and Local storage (player save can still be requested on demand).
Default period in seconds for saving players for both Online and Local storage (player save can still be requested on demand).


{{ArgTitle|4|aiLimit|{{GVI|armaR|0.9.8}}}}
{{ArgTitle|3|aiLimit|{{GVI|armaR|0.9.8}}}}
 
''0.9.8.64''
''0.9.8.64''


Line 312: Line 375:
This param is overridden by the {{Link|Arma Reforger:Startup Parameters#AILimit|-aiLimit}} startup parameter.
This param is overridden by the {{Link|Arma Reforger:Startup Parameters#AILimit|-aiLimit}} startup parameter.


{{ArgTitle|4|slotReservationTimeout|{{GVI|armaR|0.9.9}}}}
{{ArgTitle|3|slotReservationTimeout|{{GVI|armaR|0.9.9}}}}
 
''0.9.9.31''
''0.9.9.31''


Line 328: Line 392:
{{Feature|informative|Reservation works only for '''replication''' kicks.}}
{{Feature|informative|Reservation works only for '''replication''' kicks.}}


=== Template ===
 
== Template ==


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
Line 336: Line 401:
"publicAddress": "",
"publicAddress": "",
"publicPort": 0,
"publicPort": 0,
"a2s": {
"address": ""
"port": 0
},
"rcon": {
"address": "",
"port": 0,
"password": "",
"permission": "monitor",
"blacklist": [],
"whitelist": []
}
"game": {
"game": {
"name": "",
"name": "",
Line 351: Line 428:
"battlEye": true,
"battlEye": true,
"VONDisableUI": false,
"VONDisableUI": false,
"VONDisableDirectSpeechUI": false
"VONDisableDirectSpeechUI": false,
"VONCanTransmitCrossFaction": false
},
},
"mods": []
"mods": []
Line 358: Line 436:
</syntaxhighlight>
</syntaxhighlight>


=== Example ===
 
== Example ==


<spoiler text="Show Example Configuration">
<spoiler text="Show Example Configuration">
Line 370: Line 449:
"address": "192.168.9.10",
"address": "192.168.9.10",
"port": 17777
"port": 17777
},
"rcon": {
"address": "192.168.9.10",
"port": 19999
"password": "changeme_withoutspaces",
"permission": "monitor",
"blacklist": [],
"whitelist": []
},
},
"game": {
"game": {

Revision as of 16:16, 20 October 2023

Arma Reforger uses JSON configuration format to run. Template and Example are available at the bottom of this page.


Two very important aspects of dedicated server public hosting:
  • Keep fastValidation to true
  • Limit max FPS with the -maxFPS startup parameter in order to save performance


Root

bindAddress

IP address to which the server socket will be bound. In most cases, this should be left empty. It can be used to restrict connections to particular network interface. When left out or empty, 0.0.0.0 is used, which allows connections through any IP address.

IPv6 is not supported by Arma Reforger v0.9.8.

was gameHostBindAddress before 0.9.8.73

bindPort

number value, range 1..65535, default: 2001

UDP port to which the server socket will be bound.

was gameHostBindPort before 0.9.8.73

publicAddress

IP address registered in backend. This should be set to the public IP address to which clients can connect in order to reach the server (either IP of the server itself or IP of the machine that will forward data to the server). When left out or empty, an attempt is made to automatically determine the IP address, but this will often fail and should not be relied upon as the server might not be reachable from public networks.

IPv6 is not supported by Arma Reforger v0.9.8.

was gameHostRegisterBindAddress before 0.9.8.73

publicPort

number value, range 1..65535, default: 2001

UDP port registered in backend. If the server itself has a public IP address, this should be the same value as in gameHostBindPort. Otherwise, this is the UDP port that is forwarded to the server.

was gameHostRegisterPort before 0.9.8.73

a2sQueryEnabled

bool value, default: false

Enable Steam Query protocol.

steamQueryPort

number value, range 1..65535, default: 17777

a2s

0.9.9.31

Steam Query protocol definition - see the a2s section below.

Before armareforger-symbol black.png0.9.9, a2s settings were:
  • a2sQueryEnabled - bool value, default: false
  • steamQueryPort - number value, range 1..65535, default: 17777

rcon

The RCON Protocol is a TCP/IP-based communication protocol that allows console commands to be issued to the server via a Remote CONsole, or RCON - see the rcon section below.

game

Define the server's settings - see the game section below.

Only one scenario can be defined - Arma Reforger does not allow for mission rotation as of v0.9.8.

operating

Define various server settings - see the operating section below.


a2s

0.9.9.31

address

required

IP address to which A2S socket will be bound. It can be used to restrict A2S queries to a particular network interface.

port

number value, range 1..65535, default: 17777

Change Steam Query UDP port on which game listens to A2S requests


rcon

address

required

IP address to which the RCON socket will be bound. It can be used to restrict connection to a particular network interface.

port

number value, range 1..65535, default 19999

RCON protocol port on which the game listens

password

string

Does not support spaces.

permission

string,

Permission for all RCON clients. The admin can perform any command while the monitor can perform only commands which don't change the server's state.

blacklist

array value, default []

A list of commands excluded from execution.

whitelist

array value, default []

If defined, it specifies the list of commands that can be executed, and no other command is allowed.


game

name

length 0..100 characters

password

length 0..x characters

Password required to join the server.

passwordAdmin

length: 0..x characters

Defines the server's admin password, allows a server administrator to login and control the server, to access this either open the chat input box by pressing C in the lobby or Enter ↵ in-game followed by: #login [the admin password]

This password does not support spaces in it.

was root/passwordAdmin before 0.9.8.73

admins

0.9.9.31

array value of identityIds and/or steamIds

List players as server admins - they can be checked in script using BackendApi.IsListedServerAdmin(int playerId) regardless of their logged-in state.

In a next version this will allow listed users to #login without a password.

scenarioId

The scenario's .conf file path is defined here. See the listScenarios startup parameter to list available scenarios and obtain their .conf file path.

armareforger-symbol black.png0.9.9
: {ECC61978EDCC2B5A}Missions/23_Campaign.conf (Conflict - Everon)
: {59AD59368755F41A}Missions/21_GM_Eden.conf (Game Master - Everon)
: {90F086877C27B6F6}Missions/99_Tutorial.conf (Tutorial)
: {2BBBE828037C6F4B}Missions/22_GM_Arland.conf (Game Master - Arland)
: {C700DB41F0C546E1}Missions/23_Campaign_NorthCentral.conf (Conflict - Northern Everon)
: {28802845ADA64D52}Missions/23_Campaign_SWCoast.conf (Conflict - Southern Everon)
: {DAA03C6E6099D50F}Missions/24_CombatOps.conf (Combat Ops - Arland)
: {C41618FD18E9D714}Missions/23_Campaign_Arland.conf (Conflict - Arland)
armareforger-symbol black.png1.0.0
: {ECC61978EDCC2B5A}Missions/23_Campaign.conf (Conflict - Everon)
: {59AD59368755F41A}Missions/21_GM_Eden.conf (Game Master - Everon)
: {94FDA7451242150B}Missions/103_Arland_Tutorial.conf (Training)
: {2BBBE828037C6F4B}Missions/22_GM_Arland.conf (Game Master - Arland)
: {C700DB41F0C546E1}Missions/23_Campaign_NorthCentral.conf (Conflict - Northern Everon)
: {28802845ADA64D52}Missions/23_Campaign_SWCoast.conf (Conflict - Southern Everon)
: {DAA03C6E6099D50F}Missions/24_CombatOps.conf (Combat Ops - Arland)
: {C41618FD18E9D714}Missions/23_Campaign_Arland.conf (Conflict - Arland)

maxPlayers

number value, range 1..256, default: 64

Set the maximum amount of players on the server.

was playerCountLimit before 0.9.8.73

visible

bool value, default: true (since 0.9.8.73)

Set the visibility of the server in the Server Browser.

crossPlatform

bool value, default: false

If set to true, automatically adds "PLATFORM_PC" and "PLATFORM_XBL" to supportedGameClientTypes if they are missing; does nothing if set to false.

supportedPlatforms

array value, default: ["PLATFORM_PC"]

Define the platforms which the server accepts, allowing crossplay.

A server cannot be Xbox-exclusive; if configured with only PLATFORM_XBL, the server will not start.

Possible values:

Key Value
PLATFORM_PC PC
PLATFORM_XBL Xbox console

was supportedGameClientTypes before 0.9.8.73

gameProperties

Define the scenario's settings - see the gameProperties section below.

mods

The list of mods required by the client that will automatically be downloaded and activated on join. It can be created by activating wanted mods in the Workshop and then, via the Mod manager, result can be converted to ready to be used string after navigating to JSON tab and then clicking on the Copy to clipboard button.

armareforger-server-hosting-mod-list.png

modID

GUID of the mod. Single GUID can be obtained from Workshop webpage

armareforger-server-hosting-workshop-guid.png

Alternatively you can grab it from Workbench options when mod is running or directly from gproj file

armareforger-server-hosting-guid.png

name

This parameter doesn't do anything and is only used as sort of comment, with human readable name of the mod.

version

The version mod parameter is optional. If it missing, the latest mod version will be used.


gameProperties

serverMaxViewDistance

number value, range 500..10000, default: 1600

serverMinGrassDistance

number value, range 0 / 50..150, default: 0

Minimum grass distance in meters. If set to 0 no distance is forced upon clients.

fastValidation

bool value, default: true (since 0.9.6)

Validation of map entities and components loaded on client when it joins, ensuring things match with initial server state.

  • true (enabled) - minimum information required to make sure data matches is exchanged between client. When a mismatch occurs, no additional information will be available for determining where client and server states start to differ. All servers that expect clients to connect over internet should have fast validation enabled.
  • false (disabled) - extra data for every replicated entity and component in the map will be transferred when new client connects to the server. When a mismatch occurs, it is possible to point at particular entity or component where things start to differ. When developing locally (ie. both server and client run on the same machine), it is fine to disable fast validation to more easily pin point source of the problem.
Always set this value to true for a public server!

networkViewDistance

number value, range 500..5000, default: 1500

Maximum network streaming range of replicated entities.

battlEye

bool value, default: true (since 0.9.8.73)

true to enable BattlEye, false to disable it.

disableThirdPerson

bool value, default: false

Force clients to use the first-person view.

VONDisableUI

bool value, default: false

Force clients to not have VON (Voice Over Network) UI.

VONDisableDirectSpeechUI

bool value, default: false

Force clients to not have VON (Voice Over Network) Direct Speech UI.

VONCanTransmitCrossFaction

bool value, default: false

Option to allow players to transmit on other factions radios. true is allow to communicate, false is listen-only

missionHeader

This property overwrites the scenario's SCR_MissionHeaderCampaign.


operating

lobbyPlayerSynchronise

bool value, default: true (since 0.9.8.73)

If enabled, the list of player identities present on server is sent to the GameAPI along with the server's heartbeat.

This setting fixes the discrepancy between the real and reported number of players on the server.

disableCrashReporter

bool value, default: false

If enabled, the automatic server-side Crash Report is disabled. Has the same effect as -disableCrashReporter.

disableServerShutdown

bool value, default: false

If enabled, the server will not automatically shutdown if connection to backend is lost. Related to room requests errors - other causes like corrupted config will still shutdown the server.

playerSaveTime

number value, default: 120

Default period in seconds for saving players for both Online and Local storage (player save can still be requested on demand).

aiLimit

0.9.8.64

number value, default: -1

Sets the top limit of AIs. No system will be able to spawn any AIs when this ceiling is reached (through aiWorld.CanAICharacterBeAdded())

A negative number is not considered as valid value and is then ignored - limit is not applied.

This param is overridden by the -aiLimit startup parameter.

slotReservationTimeout

0.9.9.31

number value, range 5..300, default 60

Sets the duration (in seconds) for how long will the backend and server reserve a slot for kicked player. It is considered disabled when set to the minimal value, the value being the same as for a normal disconnect.

It can be used in scripts via Game Mode events:

OnPlayerAuditTimeouted(int iPlayerID) // invoked when player did not reconnect in time OnPlayerAuditRevived(int iPlayerID) // invoked when player successfully reconnected in time

Reservation works only for replication kicks.


Template

{
	"bindAddress": "",
	"bindPort": 0,
	"publicAddress": "",
	"publicPort": 0,
	"a2s": {
		"address": ""
		"port": 0
	},
	"rcon": {
		"address": "",
		"port": 0,
		"password": "",
		"permission": "monitor",
		"blacklist": [],
		"whitelist": []
	}
	"game": {
		"name": "",
		"password": "",
		"passwordAdmin": "",
		"scenarioId": "",
		"maxPlayers": 0,
		"visible": true,
		"gameProperties": {
			"serverMaxViewDistance": 0,
			"serverMinGrassDistance": 0,
			"networkViewDistance": 0,
			"disableThirdPerson": false,
			"fastValidation": true,
			"battlEye": true,
			"VONDisableUI": false,
			"VONDisableDirectSpeechUI": false,
			"VONCanTransmitCrossFaction": false
		},
		"mods": []
	}
}


Example

{
	"bindAddress": "0.0.0.0",
	"bindPort": 2001,
	"publicAddress": "192.168.9.10",
	"publicPort": 2001,
	"a2s": {
		"address": "192.168.9.10",
		"port": 17777
	},
	"rcon": {
		"address": "192.168.9.10",
		"port": 19999
		"password": "changeme_withoutspaces",
		"permission": "monitor",
		"blacklist": [],
		"whitelist": []
	},
	"game": {
		"name": "Server Name - Mission Name",
		"password": "",
		"passwordAdmin": "changeme",
		"scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
		"maxPlayers": 32,
		"visible": true,
		"crossPlatform": true,
		"supportedPlatforms": [
			"PLATFORM_PC",
			"PLATFORM_XBL"
		],
		"gameProperties": {
			"serverMaxViewDistance": 2500,
			"serverMinGrassDistance": 50,
			"networkViewDistance": 1000,
			"disableThirdPerson": true,
			"fastValidation": true,
			"battlEye": true,
			"VONDisableUI": true,
			"VONDisableDirectSpeechUI": 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"
			}
		]
	},
	"operating": {
		"lobbyPlayerSynchronise": true
	}
}
↑ Back to spoiler's top