Configuring an ArmA 3 Server

From Nitradopedia EN
Jump to: navigation, search
Arma3 wiki.jpg

Rent your own Prepaid ArmA 3 server! nitrado.net

Introduction

This article covers the different settings for the config file in ArmA 3 servers (server.cfg). This is located under "arma/config/server.cfg" on your Game Server and can be edited via the file browser (located under Tools on the web interface) or via FTP.

Server Settings
Parameter Default Description
passwordAdmin = "xyzxyz"; "" Password to protect admin access.
password = "xyz"; "" Password required to connect to server.
serverCommandPassword = "xyzxyz"; "" Password required by alternate syntax of serverCommand server-side scripting.
hostname="My Server"; UNKNOWN Servername visible in the game browser.
maxPlayers = 10; 64(DS) The maximum number of players that can connect to server. The final number will be lesser between number given here and number of mission slots.
motd[]= {"Welcome to my server.", "Hosted in the net."}; {} Two lines welcome message. Comma is the 'new line' separator.
admins[] = {"<UID>"}; {} Whitelisted clients can use #login w/o password. See Logged In Admin
headlessClients[] = {"<IP>"}; {} Headless clients IPs. Multiple connections and addresses are allowed in the case of more than one Headless Client. See Arma 3: Headless Client
localClient[] = {"<IP>"}; {} Indicates clients with unlimited bandwidth and nearly no latency. See Arma 3: Headless Client
Server Behaivour
voteThreshold = 0.33; UNKNOWN Percentage of votes needed to confirm a vote. 33% in this example.
voteMissionPlayers = 3; UNKNOWN Start mission-voting when X numberOfPlayers connect.
kickduplicate = 1; UNKNOWN Do not allow duplicate game IDs. Second player with an existing ID will be kicked automatically. 1 means active, 0 disabled.
loopback = true; false Adding this option will force server into LAN mode. This will allow multiple local instances of the game to connect to the server for testing purposes. At the same time it will prevent all non-local instances from connecting.
upnp = true; false Automatically creates port mapping on UPNP/IGD enabled router. This option allows to create a server behind NAT (the router must have public IP and support UPNP/IGD protocol). Read more Internet Gateway Device (IGD) Standardized Device Control Protocol.

When enabled then this setting may delay server start-up by 600s (standard UDP timeout of 10 minutes) if blocked on firewall or bad routing etc. Thus in such case is recommended to disable it.

allowedFilePatching = 0; 0 Prevent or allow file patching for the clients (including the HC)
  • 0 is no clients
  • 1 is Headless Clients only
  • 2 is all clients
allowedLoadFileExtensions[] = {"sqf","txt"}; UNKNOWN Only allow files with listed extensions to be loaded via loadFile command. Not listing any extension means everything is allowed. Defining the setting as empty arrays means nothing is allowed.
allowedPreprocessFileExtensions[] = {"sqf","sqs"}; UNKNOWN Only allow files with listed extensions to be loaded via preprocessFile / preprocessFileLineNumbers commands. Not listing any extension means everything is allowed. Defining the setting as empty arrays means nothing is allowed.
allowedHTMLLoadExtensions[] = {"htm","html"}; UNKNOWN Only allow files and URLs with listed extensions to be loaded via htmlLoad command. Not listing any extension means everything is allowed. Defining the setting as empty arrays means nothing is allowed.
allowedHTMLLoadURIs[] = {"http://arma3.com"}; UNKNOWN Only allow files from listed URIs and URLs to be loaded via htmlLoad command. Comment out if not used. Can use += to add to the existing list. Not listing any extension means everything is allowed. Defining the setting as empty arrays means nothing is allowed.
filePatchingExceptions[] = {"123456789","987654321"}; {} Whitelisted Steam IDs allowed filePatching
disconnectTimeout = 5; 90 Server wait time before disconnecting client after loss of active traffic connection, range 5 to 90 seconds.
maxdesync = 150; UNKNOWN Max desync value until server kick the user
maxping= 200; UNKNOWN Max ping value until server kick the user
maxpacketloss= 50; UNKNOWN Max packetloss value until server kick the user
kickClientsOnSlowNetwork[] = { 0, 0, 0, 0 }; UNKNOWN Defines if {<MaxPing>, <MaxPacketLoss>, <MaxDesync>, <DisconnectTimeout>} will be logged (0) or kicked (1)
enablePlayerDiag = 1 0 Logs players' bandwidth and desync info every 60 seconds, as well as "network message is pending" owner identity.
callExtReportLimit = 1000; 1000 If server initiated callExtension takes longer than specified limit in milliseconds, the warning will be logged into server .rpt file as well as reflected in the extension return result.
kickTimeout[] = { {0, -1},{1, 180},{2, 180},{3, 180} }; UNKNOWN kickTimeout[] = { {kickID, timeout}, ... };

kickID (type to determine from where the kick originated e.g. admin or votekick etc.)

  • 0 - manual kick (vote kick, admin kick, bruteforce detection etc.)
  • 1 - connectivity kick (ping, timeout, packetloss, desync)
  • 2 - BattlEye kick
  • 3 - harmless kick (wrong addons, steam timeout or checks, signatures, content etc.)

timeout = in seconds how long until kicked player can return

  • >0 seconds
  • -1 until missionEnd
  • -2 until serverRestart
votingTimeOut = 60; 60 Voting timeout
votingTimeOut[] = {60, 90}; {60, 90} Voteing timeout {ready, notReady}
roleTimeOut = 90; 90 Role seleciton timout
roleTimeOut[] = {90, 120}; {90, 120} Role selection timeout {ready, notReady}
briefingTimeOut = 60; 60 Briefing timeout
briefingTimeOut[] = {60, 90}; {90, 120} Briefing timeout {ready, notReady}
debriefingTimeOut = 45; 45 Briefing timeout
debriefingTimeOut [] = {60, 60}; {90, 120} Debriefing timeout {ready, notReady}
lobbyIdleTimeout = 300; 300 Lobby idle timeout

Independent of set lobbyIdleTimeout in the config file, it will be at least

MAX(votingTimeout, lobbyTimeout, briefingTimeout, debriefingTimeout) + 5 seconds by default, this makes it 300 seconds of time for people in lobby and 95 in roleTimeout or briefing screen

missionsToServerRestart = 8; UNKNOWN Number of times missionEnd happens before server initiate process restart (uses actual session startup command-line parameters, not possible to combine with `missionsToShutdown` )
missionsToShutdown = 8; UNKNOWN Number of times missionEnd happens before server initiate process shutdown (has same behavior as setting named `missionsToHardRestart`)
autoSelectMission = true; false When enabled, the server auto-starts next mission in mission cycle and waits for players in the role selection. This allows full mission information in server browser and then results in proper filtering of the servers. This is lesser-variant (trimmed) of server startup command-line parameter -autoInit. Might collide with campaign linked missions / need mission cycle etc.
randomMissionOrder = true; UNKNOWN When enabled, the server random start / next selection with one of missions from mission rotation list. ( setting goes outside(before) Mission class {}; )
disableChannels[] = { {0,false,true} }; {} disableChannels[] = { {channelID, text, voice}, ... }>;
  • ChannelID : Number - use single digit of (0 to 6) to define channelID. Default: No restriction to any channels, with text/von chat set to false.
  • text : Boolean - use true to disable usage of text-chat for defined channelID. Default: false
  • voice : Boolean - use true to disable usage of voice-chat (VON) for defined channelID. Default: false

List of channels ID:

  • 0 = Global
  • 1 = Side
  • 2 = Command
  • 3 = Group
  • 4 = Vehicle
  • 5 = Direct
  • 6 = System

Missions which use Description.ext#disableChannels will override any setting of disableChannels[] in the server.cfg.

Other Options
verifySignatures = 2; 2 Enables or disables the signature verification for addons.
  • Verification disabled = 0.
  • 1 Will default back to 2
drawingInMap = false; true Enables or disables the ability to place markers and draw lines in map.
disableVoN = 1; 0 Enables or disables the Voice over Net.
vonCodecQuality = 10; 3 Defines VoN codec quality. Value range is from 1 to 20.
  • Since 1.62 supports range 1-20
  • Since 1.64 will support range 1-30
  • 8kHz is 0-10, 16kHz is 11-20, for 21-30 it is 32kHz for SPEEX codec and 48kHz for OPUS codec.
vonCodec = 1; 0 Defines VoN codec type. Value range is from 0 to 1.
  • Since Arma 3 update 1.58 supports value 1
  • Value 0 uses older SPEEX codec, while 1 switches to new IETF standard OPUS codec.
skipLobby = false; false If true, joining player will skip role selection. This is only used if no Mission, Campaign or Config setting skipLobby is defined (See Description.ext#skipLobby).
allowProfileGlasses = false; true If false, glasses set in player profile will be ignored. This is only used if no Mission, Campaign or Config setting allowProfileGlasses is defined (See Description.ext - allowProfileGlasses)
zeusCompositionScriptLevel = 0; 1
  • 0: all scripts are forbidden
  • 1: only attributes are allowed (including custom attributes added by mods)
  • 2: all scripts are allowed including init scripts

This is only used if no Mission, Campaign or Config setting zeusCompositionScriptLevel is defined (See Description.ext - zeusCompositionScriptLevel).

logFile = "server_console.log"; UNKNOWN Enables output of dedicated server console into textfile. Default location of log is same as crash dumps and other logs. (Local settings) Note that this does not change the location of the "net.log" file, which is enabled with the -netlog command line option.
doubleIdDetected = "command"; "" See Server Side Scripting
onUserConnected = "command"; ""
onUserDisconnected = "command"; ""
onHackedData = "command"; ""
onDifferentData = "command"; ""
onUnsignedData = "command"; ""
onUserKicked = "command"; ""
regularCheck = "command"; ""
BattlEye = 1; 1 Enables or disables the BattlEye anti-cheat engine. Requires installed BattlEye on server and clients joining the server
timeStampFormat = "none"; "" Set the timestamp format used on each report line in server-side RPT file. Possible values are "none", "short", "full".
forceRotorLibSimulation = 0; 0 Enforces the Advanced Flight Model on the server. 0 (up to the player). 1 - forced AFM, 2 - forced SFM.
persistent = 1; 0 Mission keeps running when all clients disconnect. Enabling the persistence option will make missions that have either base or instant respawn keep on running after all players have disconnected. The other respawn types will not make a mission persistent. The kind of respawn a certain mission uses is set in its Description.ext.
requiredBuild = xxxxx; UNKNOWN Minimum required client version. Clients with version lower than requiredBuild will not be able to connect. If requiredBuild is set to a large number, like requiredBuild = 999999999; for example, it will automatically be lowered to the current server version.
statisticsEnabled = 1; 1 Allows to opt-out of Arma 3 analytics for the server by using 0
forcedDifficulty = "regular"; "" Enforces the selected difficulty on the server. forcedDifficulty = "<difficultyClass>";
  • If Recruit, Regular or Veteran is passed as the parameter, the particular difficulty options will be taken from data config, from the class CfgDifficultyPresets.
  • If Custom will be passed as the parameter, the particular flags will be taken from CustomDifficulty class from server's profile (only Custom is saved to the profile).
  • If mission cycle is defined in the server.cfg, the difficulty set in the mission cycle overrides the difficulty set by forcedDifficulty parameter.
missionWhitelist[] = {"intro.altis"}; {} Limit the available missions for the admin for the mission change. See Arma 3: MP Mission Names for a full list.
steamProtocolMaxDataSize = 1024; UNKNOWN Limit for maximum Steam Query packet length. Increasing this value is dangerous as it can cause Arma 3 server to send UDP packets of a size larger than the MTU. This will cause UDP packets to be fragmented which is not supported by some older routers. But increasing this will fix the modlist length limit in Arma 3: Launcher.
class AdvancedOptions
{
    LogObjectNotFound = true; // Logging enabled
    SkipDescriptionParsing = false; // Parse description.ext
    ignoreMissionLoadErrors = false; // Do not ingore errors
};
true/false/false 2.02
  • LogObjectNotFound - False to skip logging "Server: Object not found" messages
  • SkipDescriptionParsing - True to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions

2.04

  • ignoreMissionLoadErrors - When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection
armaUnitsTimeout = 30; 30 Defines how long the player will be stuck connecting and wait for armaUnits data. Player will be notified if timeout elapsed and no units data was received

More Information

Further information can be acquired from the ArmA 3 server.cfg Wiki.