kellys-heroes.eu

Kellys Heroes ArmA Clan | http://www.kellys-heroes.eu | Faq

Kellys Heroes Guide to ArmA2 Dedicated Server

by [KH]Jman


General Information

Contents

Stage One - Install ArmA2
Stage Two - Configure ArmA2 Server
Stage Three - Firewall Ports
Stage Four - Launching ArmA2 Server
Further Reading


Stage One - Install ArmA2

The first step is to install ArmA2.  If you have physical access to the server this process is no different from installing any normal game, just insert the CD into the server choose an install path, enter the CDkey when requested and begin the install.  Once the installation is complete the next step is to update the installation directory with the latest ArmA2 patch.

  • Download the latest ArmA2 patch
  • If you do not have physical access to the server the installation process is rather more complex.  There are several options at your disposal.
    The first and best option is to simply download the digital download of ArmA2 on the server and install as described above. If you have purchased a DVD distribution that may not be a financially viable option and in this case I would suggest that the DVD files are transferred to the server via FTP, you'll need a good upload speed however since the ArmA2 distribution files are around 7.5GB.  If your server is co-located you could arrange to send the DVD to the server's location however you may incur additional costs from your co-location company.  Check their policies on this.
  • Once you have a new updated installation of ArmA2 on the server, copy the ArmA2 standalone server executable to the root install directory of ArmA2.  Now you are ready for stage two, configuring ArmA's dedicated server.

Top

Stage Two - Configure ArmA2 Server

Before I discuss the server launch process various configuration files must be written by the server administrator.

  • server.cfg

    The server.cfg can actually be called any name as specified in the launch command line discussed later in this document. The server.cfg defines several key components such as connection passwords, message of the day, mission rotations.
    .
  • 1    
    2    
    3    
    4    
    5    
    6    
    7    
    8    
    9    
    10    
    11    
    12    
    13    
    14    
    15    
    16    
    17    
    18    
    19    
    20    
    21    
    22    
    23    
    24    
    25    
    26    
    27    
    28    
    29    
    30    
    31    
    32    
    33    
    34    
    35    
    36    
    37    
    38    
    39    
    40    
    41    
    42    
    43    
    44    
    45    
    46    
    47    
    48    
    49    
    50    
    51    
    52    
    53    
    54    
    55    
    56    
    57    
    58    
    59    
    60    
    61    
    62    
    63    
    64    
    65    
    66    
    67    
    68    
    69    
    70    
    71    
    72    
    73    
    74    
    75    
    76    
    77    
    78    
    79    
    80    
    81    
    82    
    83    
    84    
    85    
    86    
    87    
    88    
    89    
    90    
    91    
    92    
    93    
    94    
    95    
    96    
    97    
    98    
    99    
    100    
    101    
    102    
    103    
    104    
    105    
    106    
    107    
    108    
    109    
    110    
    111    
    112    
    113    
    114    
    115    
    116    
    117    
    118    
    119    
    120    
    121    
    122    
    123    
    124    
    125    
    126    
    127    
    128    
    129    
    130    
    131    
    132    
    133    
    134    
    135    
    136    
    137    
    138    
    139    
    140    
    141    
    142    
    143    
    144    
    145    
    
    /* 
    Example ArmA2 server configuration file
    by [KH]Jman, 3rd July 2009.  http://www.kellys-heroes.eu
    */
    
    // Password for private servers. Uncomment this if you wish to run a private server
    // password = "my password"; 
    
    /*
    Password to protect admin access
    type: #login mypassword 
    in ingame client chatbox to login as admin
    type: #missions 
    in ingame client chatbox to display the mission list
    */
    passwordAdmin = "mypassword"; 
    
    // The name of the server that shall be displayed in the public server list
    hostname="My Server Name";
    
    /*
    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
    */
    motd[]=
    {
    "Welcome to my server name",
    "hello world",
    };
    
    
    // Time interval (in seconds) between each message of the day
    motdInterval=50;
    
    /* 
    25% or more players need to vote for mission to become effective
    set to 1.5 to turn off missions voting
    */
    voteThreshold=0.25;
    
    
    /*
    Maximum amount of server slots
    server will always display 64 slots if maxPlayers is >64 and server is empty
    */
    maxPlayers=80;
    
    
    /*
    Gamespy reporting url for public server list inclusion
    use 127.0.0.1 for LAN server
    */
    reportingIP="arma2pc.master.gamespy.com";
    
    
    /*
    If specified player connects/disconnects and player id are written to file.
    log file is persistant and appends data on server restart.
    */
    logfile="myserver.log";
    
    
    /* 
    Specifies the mission rotation and related difficulty settings.
    leave blank i.e   class Missions {};
    to enable player's selection from mission list & difficulty settings
    (voted on if no admin logged in)
    */   
    class Missions
    {
    class Mission_01   // name for the mission, can be anything
    {
    template = mymission.Chernarus; // omit the .pbo suffix
    /* 
    difficulty: recruit, regular, veteran & expert 
    as specified in *.Arma2profile
    */
    difficulty = "regular";   
    /* 
    The following options are seen in the lobby of a multiplayer game. These 
    options can be useful for setting time limits and score limits in such games 
    as Capture the Flag and Death Matches. Other popular uses include 
    accelerate time, setting the mission difficulty or switching the intro on/off.
    */
    param1 =   
    param2 = 
    };
    class Mission_02
    {
    template = anothermission.Chernarus; 
    difficulty = "veteran";
    param1 =   
    param2 = 
    };
    };
    
    
    // If class missions is blank start voting when 1 players connect.
    voteMissionPlayers=1; 
    
    // Do not allow players with duplicate ids to connect
    kickduplicate=1;
    
    // If set to 1 players must use exactly the same -mod= startup parameter as the server.
    equalModRequired=0;
    
    // If set to 1, Voice over Net will not be available
    disableVoN=0;
    
    /* 
    Quality from 1 to 10
    refer to: 
    http://community.bistudio.com/wiki/ArmA:_Multiplayer#VOIP_support 
    for codec info. 7 is the best.
    */
    vonCodecQuality=7;
    
    
    /* 
    Set the timestamp format used on each report line in server-side RPT file.
    possible values are:
    none (default), short & full
    */
    timeStampFormat=full;
    
    /* 
    Enables persistent battlefield
    dependent on the mission specifiying persistence, otherwise has no effect.
    missions must contain either instant respawn or base respawn options located in the missions description.ext file
    */
    persistent=0;
    
    /* 
    Enables signature verification for addons
    this will prevent pbo hacks by only allowing pbos that pass servers public key checks
    */
    verifySignatures=1;
    
    // Signature timeout fix
    regularcheck="";
    
    // See ArmA Biki for additional signature commands
    
    // EOF
    
    

  • Download example server.cfg


  • arma2.cfg

    The arma2.cfg just like the server.cfg can be called any name as specified in the launch command line.  The arma2.cfg file contains important information concerning server data rates which may be adjusted based on the server's hardware and network connection. Client custom faces and sounds size and control can be controlled from within this file.

    1    
    2    
    3    
    4    
    5    
    6    
    7    
    8    
    9    
    10    
    11    
    12    
    13    
    14    
    15    
    16    
    17    
    18    
    19    
    20    
    21    
    22    
    23    
    24    
    25    
    26    
    27    
    28    
    29    
    30    
    31    
    32    
    33    
    34    
    35    
    36    
    37    
    38    
    39    
    40    
    41    
    42    
    43    
    44    
    45    
    46    
    47    
    48    
    49    
    50    
    51    
    52    
    53    
    54    
    55    
    56    
    57    
    58    
    
    /* 
    Example ArmA2 configuration file
    by [KH]Jman, 8th September 2011.  http://www.kellys-heroes.eu
    These example numbers are for a 2.5 - 3Ghz Quad Core Xeon on a 100mBit connection. 
    */
    
    
    /*
    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
    */
    MinBandwidth=10000000;
    
    /*
    Bandwidth the server is guaranteed to never have. 
    This value helps the server to estimate bandwidth available.
    */
    MaxBandwidth=2147483647;
    
    /*
    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
    */
    MaxMsgSend = 1024;
    
    /*
    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
    */
    MaxSizeGuaranteed = 1024;
    
    /*
    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
    */
    MaxSizeNonguaranteed = 64;
    
    
    /*
    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.01
    */
    MinErrorToSend = 0.0040000002;
    
    /*
    Users with custom faces or custom sounds larger than this size are kicked when trying to connect.
    Use this wisely as it can be the cause of alot of Join in Progress lag.
    1600000 = 160k
    */
    MaxCustomFileSize=0;
    
    // EOF
    
    

  • Download example arma2.cfg


  • default.arma2profile

    The default.arma2profile can be called any name as specified in the launch command line.  The default.arma2profile contains server difficulty levels and visual settings, friendly and enemy AI quality, HUD, crosshair, 3rd person view, clock indicator and so on. Rather than listing it line by line here in this document please download the example file below which contains my comments.
    I have omitted any commands that have no effect on the multiplayer system.
    While connected to the dedicated server, you can use the admin command #monitor to monitor server resource usage. (You have to be logged in as or voted as game admin to do this.)
    The server never runs at more than 50 fps. When running slower, it always uses all available CPU processing power to maintain the smoothest possible gameplay. When running at less than 15 fps, you can consider the server overloaded – the mission currently played is probably too complex for given server.
    If you see the server is not using bandwidth that it could use, you can try increasing values MaxMsgSend and MinBandwidth in the ArmA2.cfg.

  • 1    
    2    
    3    
    4    
    5    
    6    
    7    
    8    
    9    
    10    
    11    
    12    
    13    
    14    
    15    
    16    
    17    
    18    
    19    
    20    
    21    
    22    
    23    
    24    
    25    
    26    
    27    
    28    
    29    
    30    
    31    
    32    
    33    
    34    
    35    
    36    
    37    
    38    
    39    
    40    
    41    
    42    
    43    
    44    
    45    
    46    
    47    
    48    
    49    
    50    
    51    
    52    
    53    
    54    
    55    
    56    
    57    
    58    
    59    
    60    
    61    
    62    
    63    
    64    
    65    
    66    
    67    
    68    
    69    
    70    
    71    
    72    
    73    
    74    
    75    
    76    
    77    
    78    
    79    
    80    
    81    
    82    
    83    
    84    
    85    
    86    
    87    
    88    
    89    
    90    
    91    
    92    
    93    
    94    
    95    
    96    
    97    
    98    
    99    
    100    
    101    
    102    
    103    
    104    
    105    
    106    
    107    
    108    
    109    
    110    
    111    
    112    
    113    
    114    
    115    
    116    
    117    
    118    
    119    
    120    
    121    
    122    
    123    
    124    
    125    
    126    
    127    
    128    
    129    
    130    
    131    
    132    
    133    
    134    
    135    
    136    
    137    
    138    
    139    
    140    
    141    
    142    
    
    /*
    Example ArmA2Profile configuration file
    by [KH]Jman, 1st July 2009.  http://www.kellys-heroes.eu 
    */
    
    class Difficulties
    {
    class Recruit
    {
    class Flags
    {
    
    Armor=1;		// Gives you improved body armor, tank armor etc
    FriendlyTag=1;		// Displays information on friendly units. ONLY WORKS WITH 'Weaponcursor=0', eg crosshair on.
    EnemyTag=1;		// Displays information on enemy units
    HUD=1;			// Shows you leaders location and your position in formation
    HUDPerm=1;		// Shows HUD permanently
    HUDWp=1;		// Shows Waypoints right after they're ordered to you
    HUDWpPerm=1;		// Shows Waypoints permanently
    WeaponCursor=1;		// Shows the crosshair for your weapon
    AutoAim=1;		// Enables auto aim when you're not looking through your weapon's scope. Also works with crosshair off
    AutoGuideAT=1;		// AT missiles will be automatically guided to their target. If 0, player has to lock onto the target.
    3rdPersonView=1;	// This turns 3rd(third) person view and group leader view on or off. Please never talk of this as "3D view" - ArmA is not an arcade game !
    ClockIndicator=1;	// Displays the clock indicator on the left of your screen when giving/receiving orders like "At 11 o'clock, enemy man at 200 meters"
    Map=1;			// Shows symbols for all objects known to your gruop on the map. This will NOT disable the map itself !
    Tracers=1;		// Displays tracers even of small arms that in real life would not have tracers
    AutoSpot=1;		// If you're close enough to an enemy, you'll report it without right-clicking
    UltraAI=0;		// Enables super AI, hear and see more and increased tactics. This is for both friendly and enemy sides.
    DeathMessages=1;	// Displays death messages i.e. playerA kill playerB
    NetStats=1;		// Displays score board
    VonID=1;		// Displays VON player name in window
    
    
    };
    // These are the skills. Value may range from 0.000000 to 1.000000
    skillFriendly=0.34999999;
    skillEnemy=0.34999999;
    precisionFriendly=0.20;
    precisionEnemy=0.20;
    };
    
    class Regular
    {
    class Flags
    {
    Armor=1;
    FriendlyTag=1;
    EnemyTag=0;
    HUD=1;
    HUDPerm=0;
    HUDWp=1;
    HUDWpPerm=1;
    WeaponCursor=1;
    AutoAim=0;
    AutoGuideAT=0;
    3rdPersonView=1;
    ClockIndicator=1;
    Map=1;
    Tracers=1;
    AutoSpot=0;
    UltraAI=0;
    DeathMessages=1;	
    NetStats=1;		
    VonID=1;		
    };
    skillFriendly=0.44999999;
    skillEnemy=0.44999999;
    precisionFriendly=0.35;
    precisionEnemy=0.35;
    };
    class Veteran
    {
    class Flags
    {
    Armor=0;
    FriendlyTag=0;
    EnemyTag=0;
    HUD=1;
    HUDPerm=0;
    HUDWp=1;
    HUDWpPerm=1;
    WeaponCursor=0;
    AutoAim=0;
    AutoGuideAT=0;
    3rdPersonView=0;
    ClockIndicator=1;
    Map=0;
    Tracers=1;
    AutoSpot=0;
    UltraAI=0;
    DeathMessages=0;	
    NetStats=0;	
    VonID=1;		
    };
    skillFriendly=0.74999999;
    skillEnemy=0.74999999;
    precisionFriendly=0.75;
    precisionEnemy=0.75;
    };
    class Expert
    {
    class Flags
    {
    Armor=0;
    FriendlyTag=0;
    EnemyTag=0;
    HUD=1;
    HUDPerm=0;
    HUDWp=1;
    HUDWpPerm=1;
    WeaponCursor=0;
    AutoAim=0;
    AutoGuideAT=0;
    3rdPersonView=0;
    ClockIndicator=1;
    Map=0;
    Tracers=1;
    AutoSpot=0;
    UltraAI=0;
    DeathMessages=0;	
    NetStats=0;		
    VonID=0;		
    };
    skillFriendly=0.94999999;
    skillEnemy=0.94999999;
    precisionFriendly=0.95;
    precisionEnemy=0.95;
    };
    };
    
    
    // Sets the server default view distance.
    // Render distance is 3/4 of view distance - for 2000 metres, objects will be render up to 1500 metres
    // This maybe overidden by the mission 
    viewDistance=2000;
    
    // Sets the server default terrain quality. Very High:10, Low:50
    // This maybe overidden by the mission 
    terrainGrid=25;
    
    // EOF
    
    

  • Download example default.arma2profile

Top

Stage Three - Firewall Ports


ArmA2 server requires the following ports open to UDP network traffic. TCP is not needed.

  • port          2302        UDP         ArmA2 game network communication.
  • port+1      2303        UDP         Gamespy public server reporting.
  • port+3      2305        UDP         Voice Over Net transmission.

Top

Stage Four - Launching ArmA2 Server

ArmA2 dedicated server is run by launching the ArmA2Server.exe with a series of command line switches I have listed the important ones below.

  • -cfg          Specifies the arma2 config to use.
  • -profiles    Specifies a specific location for server's profile files.
  • -config      Specifies the server config file to use.
  • -mod        Extra command to run folder mods.
  • -netlog      *Command to record traffic from the game server.
  • -port         Port for the server to listen on. Defaults to 2302
  • -name      Specifies the server name broadcast to clients.


*The 1.02b dedicated server exe does not support the -netlog command.
Please read bullet point 4 of this guide's general information section.

You cannot specify an IP address with which to bind the server to i.e.  -ip = xxx.xxx.x.xxx
ArmA2 server defaults to the primary ip address of the server and cannot be changed.
If you wish to setup multiple instances of ArmA2 server on the same server it is only possible by specifying alternative ports with -port.

A typical start up command line for Arma2Server should look something like below
Run this from an dos batch file or ideally run this as a service using Firedaemon. 
In this document  I won't cover how to setup ArmA2 server with Firedaemon but I may write a separate tutorial on the subject if many users request it.

  • "[drive]\[path to arma2]\ArmA2Server.exe" -port=2302 -name=default -config=default\server.cfg -cfg=default\Arma2.cfg -profiles=default

In the example above, the default.arma2profile will be located in: ...\ArmA2\default\users\default\default.arma2profile. You also need to place your "arma2.cfg" & "server.cfg" files into "...\ArmA2\default" folder as this folder is now defined as the folder where your cfg & profile files reside with those parameters.

If the profile path contains spaces, the parameter should be enclosed by quotation marks.
Upon launching, the server console will appear. 
Once successfully loaded the console will display the following:

hh:mm:ss Dedicated host created.
hh:mm:ss Host identity created.


The server is now ready to receive incoming connections.
The console window does not accept direct user input, it only displays system messages.
Closing the console window will shutdown the server. ALT and F4 is the keyboard shortcut to shutdown the server.

Top

Further Reading

How secure is your server?
BattlEye GUID banning

If you require any further information please visit the Bohemia Interactive Wiki  or my virtual residence Kellys Heroes Forums
I will update this document in line with any relevant ArmA2 patch updates or new information.

Last updated: 28th June 2011

Top