Arma 3 is a first person war game. The dedicated server component can be run as a Windows Service using FireDaemon Pro, which allows you to have the dedicated server start automatically at boot prior to login, start multiple instances of the dedicated server and more. This HOWTO will show you how to set it up. You can also use Fusion to manage FireDaemon and other Windows services via a web browser.

You must install the server with SteamCMD outlined in this guide. If you try to run the server through the Arma 3 in your Steam client, the server will not stop properly.


Arma 3 Dedicated Server Setup Under FireDaemon Pro

The easy way to install the server files is via Steam's SteamPipe servers, but the caveat to this is that the server must use a Steam account to download the files. We suggest that you do not use your local Steam account as it will be logged out when you install or update the server files. You also risk having your Steam account hijacked or stolen should your server ever be hacked since the hackers could then get access to your Steam account.


Download and install DirectX from the Microsoft website.


If you haven't already, create a new Steam account for your server at the Steam website.


Download and extract SteamCMD. The download is small (< 2 MB).


First before downloading the Arma 3 files, go to the directory where you installed SteamCMD and create a shortcut to SteamCMD.exe. In the shortcut, edit the properties and in the target box, following the path to SteamCMD.exe and a space, put:

+login USERNAME PASSWORD +force_install_dir "C:\Arma 3" +app_update "233780 -beta" validate +quit" validate +quit



Note: Replace USERNAME with your Steam username and PASSWORD with your Steam password. You will need to enter a verification string if your Steam account has SteamGuard enabled. The verification string will be sent to the email you set up as your steam account email. This string only needs to be filled in once.


Now run the shortcut to download the Arma 3 server files via the Steam SteamPipe servers. It might take a few hours to download everything because there are over 2 GB of files. You should also run the shortcut every week or so to grab the latest server updates. Make sure to stop your server first before updating your files.


Arma 3: OA uses 2 configuration files to store its settings: "Administrator.Arma3Profile" and "Arma3.cfg". You will need to make them by creating them in "C:\Arma3\A3Master\Users\YOURACCOUNTNAME\". Find the configs at the bottom of this howto.


Download and install FireDaemon Pro into the directory of your choice, typically C:\Program Files\FireDaemon.


Next start the FireDaemon GUI from the desktop shortcut. Click on the "Create a new service definition" button in the toolbar (or type Ctrl+N) and enter the information into the fields as you see below. Adjust the paths to suit your installation. Note the required parameters.

  • Executable: The path to your arma3server.exe file. For the purposes of this HOWTO, the path is C:\Arma3\A3Master\arma3server.exe.
  • Working Directory: The directory containing your arma3server.exe file. For the purposes of this HOWTO, the path is C:\Arma3\A3Master


The most important field on the tab is the Parameters. The Parameters define the initial setup of your server.

 Here’s the full parameter list you should have:
"-profiles=C:\Arma3\A3Master" "-bepath=C:\Arma 3\BattlEye" -ip=1.2.3.4 -port=2302 -config=CONFIG_Vanilla.cfg -world=empty-cpuCount=2 -exThreads=7 -bandwidthAlg=2 -maxMem=2047 -noSound

  • "-profiles=C:\Arma3\A3Master" Loads the profile from your Arma 3 server directory instead. If you dont define this, than it will be located in your C:\Users directory instead which makes configuration more complicated. If your path contains spaces, you must enclose the entire command in double quotes.
  • "-bepath=C:\Arma 3\BattlEye" Loads the BattlEye from your Arma 3 server directory instead. If you dont define this, than it will be located in your C:\Users directory instead which makes configuration more complicated. If your path contains spaces, you must enclose the entire command in double quotes.
  • "-ip" It's useful to define this if your server is behind a NAT router or if your server machine has multiple IP's and you only want the server to listen on one IP. If you are hosting the server from home or do not know your server IP, then on the server, go to the following website to find your external IP address: http://WhatIsMyIp.com
  • "-port" This set's the server port. It should be left on default unless you are running multiple servers on the same IP.
  • "-config" Loads the server config file.
  • "-world" Loads the world (map).
    The next few parameters are performance related and may be too low or high depending on your server specs. You should research them before using. If you don't know about them, then do not use them.
  • "-cpuCount 2" Limits the number of cores your server uses to 2. This is usefull to prevent your whole machine from locking up should your server ever use 100% cpu.
  • "-exThreads 7" Limits the number of threads your server uses to 7.
  • "-bandwidthAlg 2" Changes the bandwidth algoritm to a better optimized one. This may improve bandwidth usage and management.
  • "-maxMem=2047" Limits the maximum amount of memory to 2GB. Arma 3 servers in general use 512 to 1536 MB (even for 50 slot servers), this command is usefull to prevent memory leaks.
  • "-noSound" Disables sound output when the server starts.

Now click on the Settings tab. If you DON'T want to see your dedicated server running, uncheck the Interact with Desktop check box & select "Hidden" from the "Show Window" dropdown. You must run your Arma 3 server with an administrator account or else Arma 3 will not work properly. In the Logon Account field type your username (e.g. Administrator) and then enter the user's password twice in the Password and Confirm fields. You can change the Process Priority to allocate more CPU time to the dedicated server or specify which CPU or core the dedicated server will run on (in the case of multi-processor, hyperthreaded or multi-core CPUs).

Firedaemon-nojob-interact-settings.jpg


Now click on the Lifecycle tab. Uncheck Graceful Shutdown as Arma 3 doesn't respond to it.

firedaemon-nograceful-noconsole-lifecycle3.png


Now click on the OK button to install and start Arma 3!


Arma 3 Configuration Files

Config_vanilla.cfg

//
// server.cfg
//
// comments are written with "//" in front of them.

// STEAM

steamport     =2301;
//steamqueryport     =2301; obsolete since patch 1.22 hotfix

// GLOBAL SETTINGS

hostname     = "My Server:  My Teamspeak address";  // The name of the server that shall be displayed in the public server list
//password     = "ServerAccessPassword";       // Password for joining, eg connecting to the server
passwordAdmin     = "AdminPassword";       // Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
reportingIP     = ""; //Gamespy Is No Longer available, Steam is reported too automatically, just define the steam ports as per this file, leave this string empty
logFile     = "A3Master.log";
verifySignatures     = 2;

// WELCOME MESSAGE ("message of the day")
// It can be several lines, separated by comma
// Empty messages "" will not be displayed at all but are only for increasing the interval



// Leave commented out for initial run
// incorrect value will cause server to hang
motd[]={
  "",
  "",
  "",
  "__________  SYSTEM MESSAGES __________",
  "Welcome to My  Server",
  "IMPORTANT  Verify Signatures is enabled",
  "",
  "TS3 Server:  teamspeak.mydomain.com",
  "Web:  www.mywebsite.com",
  "TS3 Server:  teamspeak.zeus-community.net",
  "__________  END OF MESSAGE __________"
};


motdInterval      = 5;  // Time interval (in seconds) between each message



// JOINING RULES
maxPlayers     = 40;     // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
// VOTING
voteMissionPlayers   = 1;     // Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold     = 0.33;     // 33% or more players need to vote for something, for example an admin or a new map, to become effective
//voteMissionPlayers   = 0;

// INGAME SETTINGS
disableVoN     = 0;     // If set to 1, Voice over Net will not be available
vonCodecQuality  = 8;     // Quality from 1 to 10
persistent     = 1;     // If 1, missions still run on even after the last player disconnected.


/*
  // MISSIONS CYCLE (see below)
  class Missions
  {
  class Mission1
  {
  template="co_xx_mymission.stratis";
  difficulty="Regular";
  };
  };
*/

kickDuplicate = 1;
equalModRequired = 0;
requiredSecureId = 2;
timeStampFormat = "short";

// SCRIPTING ISSUES
onUserConnected = "";           //
onUserDisconnected = "";         //
doubleIdDetected = "";           //

// SIGNATURE VERIFICATION
onUnsignedData = "kick (_this select 0)";     // unsigned data detected
onHackedData =    "kick (_this select 0)";   //"ban (_this select 0)";       // tampering of the signature detected
onDifferentData = "";

Arma3.cfg

// These options are created by default
language="English";
adapter=-1;
3D_Performance=1.000000;
Resolution_W=800;
Resolution_H=600;
Resolution_Bpp=32;


// These options are important for performance tuning

MinBandwidth = 131072;       // Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
MaxBandwidth = 10000000000;     // Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.

MaxMsgSend = 128;       // Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
MaxSizeGuaranteed = 512;     // Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
MaxSizeNonguaranteed = 256;     // Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256

MinErrorToSend = 0.001;       // Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
MinErrorToSendNear = 0.01;     // Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01

MaxCustomFileSize = 0;       // (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.

Administrator.Arma3Profile

version=2;

viewDistance=3000;
preferredObjectViewDistance=3000;
terrainGrid=12.5;
activeKeys[]=
{
};


class Difficulties
{
  class recruit
  {
  class Flags
  {
  Armor=1;
  FriendlyTag=0;
  EnemyTag=0;
  MineTag=1;
  HUD=1;
  HUDPerm=1;
  HUDWp=1;
  HUDWpPerm=1;
  HUDGroupInfo=1;
  AutoSpot=1;
  Map=1;
  WeaponCursor=1;
  AutoGuideAT=1;
  ClockIndicator=1;
  3rdPersonView=1;
  UltraAI=0;
  CameraShake=0;
  UnlimitedSaves=1;
  DeathMessages=1;
  NetStats=1;
  VonID=1;
  ExtendetInfoType=1;
  };
  skillFriendly=0.6;
  skillEnemy=0.6;
  precisionFriendly=0.28;
  precisionEnemy=0.28;
  };
  class regular
  {
  class Flags
  {
  Armor=1;
  FriendlyTag=1;
  EnemyTag=0;
  MineTag=1;
  HUD=1;
  HUDPerm=1;
  HUDWp=1;
  HUDWpPerm=1;
  HUDGroupInfo=1;
  AutoSpot=1;
  Map=1;
  WeaponCursor=1;
  AutoGuideAT=1;
  ClockIndicator=1;
  3rdPersonView=1;
  UltraAI=0;
  CameraShake=1;
  UnlimitedSaves=1;
  DeathMessages=1;
  NetStats=1;
  VonID=1;
  ExtendetInfoType=1;
  };
  skillFriendly=0.6;
  skillEnemy=0.6;
  precisionFriendly=0.28;
  precisionEnemy=0.28;
  };
  class veteran
  {
  class Flags
  {
  Armor=0;
  FriendlyTag=0;
  EnemyTag=0;
  MineTag=1;
  HUD=1;
  HUDWp=1;
  HUDWpPerm=1;
  HUDGroupInfo=1;
  AutoSpot=0;
  WeaponCursor=0;
  ClockIndicator=1;
  3rdPersonView=1;
  UltraAI=0;
  CameraShake=0;
  DeathMessages=0;
  NetStats=1;
  VonID=1;
  ExtendetInfoType=0;
  };
  skillFriendly=0.6;
  skillEnemy=0.6;
  precisionFriendly=0.28;
  precisionEnemy=0.28;
  };
  class mercenary
  {
  class Flags
  {
  HUD=1;
  AutoSpot=0;
  WeaponCursor=0;
  DeathMessages=0;
  NetStats=1;
  VonID=1;
  };
  skillFriendly=0.6;
  skillEnemy=0.6;
  precisionFriendly=0.28;
  precisionEnemy=0.28;
  };
};

difficulty="veteran";