ARMA 3 Linux Server — Network Settings

Eric T Grubaugh
ARMA 3 Server Administration
3 min readMay 7, 2015

The Black Sh33p are among the early adopters of the ARMA 3 Linux Dedicated Server, and in doing so, we’ve struggled through quite a few nuances and issues as the server matures. At the moment, our largest issue is AI desync, especially air units. Infantry like to break out in a moonwalk during a firefight, and air units stutter all over the place. I believe this is mostly a result of our network configuration more than the server binary itself mismanaging AI.

Originally, I had followed some advice from this article, which, while geared toward DayZ, has excellent explanations of what each setting in basic.cfg is and how modifying the settings will affect gameplay. As we’ve grown and progressed, I’ve revisited the settings several times. Our latest advice comes from cyruz on this BI forum post (thank you!). Based on all of this advice, our current basic.cfg looks like this:

//
// Arma3.cfg - Defines network tuning parameters
//
// Author: GRUBES
//
// This file is to be passed to the -cfg parameter on the command line for the server
// See http://community.bistudio.com/wiki/basic.cfg
// BANDWIDTH SETTINGS
// Bandwidth the server is guaranteed to have (in bps)
// General guideline is NumberOfPlayers * 256kb
// Default: 131072
MinBandwidth=5120000;
// Bandwidth the server can never go above (in bps)
// For a single server, use full network speed; decrease when running multiple servers
MaxBandwidth=10240000;
// PACKET SETTINGS
// Maximum number of packets per frame.
// Increasing the value potentially decreases lag, but increases desync
// Default: 128
MaxMsgSend=2048;
// Maximum payload of guaranteed packet (in b)
// Small messages are packed to larger packets
// Guaranteed packets are used for non-repetitive events, like shooting
// Lower value means more packets are sent, so less events will get combined
// Default: 512
MaxSizeGuaranteed=512;
// Maximum payload of non-guaranteed packet (in b)
// Increasing this value may improve bandwidth requirement, but may also increase lag
// Largest factor in desync
// Guidance is half of MaxSizeGuaranteed
// Default: 256
MaxSizeNonguaranteed=256;
// Maximal size of a packet sent over the network
// Only necessary if ISP forces lower packet size and there are connectivity issues
// Default: 1400
// class sockets{maxPacketSize=1400};
// SMOOTHNESS SETTINGS
// Minimal error required to send network updates for far units
// Smaller values will make for smoother movement at long ranges, but will increase network traffic
// Default: 0.003
MinErrorToSend=0.01;
// Minimal error required to send network updates for near units
// Using larger value can reduce traffic sent for near units
// Also controls client to server traffic
// Default: 0.01
MinErrorToSendNear=0.02;
// GEOLOCATION SETTINGS
// Server latitude
serverLatitude=##;
serverLatitudeAuto=##;
// Server Longitude
serverLongitude=##;
serverLongitudeAuto=##;
// MISC
// View Distance (not sure if this actually works)
viewDistance=10000;
// Maximum size (in b) for custom face or sound files
// Default: 0
MaxCustomFileSize=0;
// Server language
language="English";
steamLanguage="English";
// Adapter
adapter=-1;
// Windowed mode
Windowed=0;
3D_Performance=1.000000;

We’ve adjusted our minErrorToSend settings and seen a reduction in the stuttering, but it isn’t quite completely gone yet. In preparation for this weekend’s settings, I’ve also restored MaxSizeGuaranteed and MaxSizeNonGuaranteed to their default values to see if that will take us the rest of the way.

I will continue updating this article as we refine our configuration, and feel free to share your configs or any advice you might have as well!

Originally published at erictgrubaugh.com on April 5, 2014.

--

--

Eric T Grubaugh
ARMA 3 Server Administration

I advise NetSuite development leaders on building sane, sustainable software practices.