Jump to content
Sign in to follow this  
Mojo

Network Optimization

Recommended Posts

MaxMsgSend=<limit>;

Maximum number of messages that can be sent in one simulation cycle.

Increasing this value can decrease lag on high upload bandwidth servers

What is the simulation cycle?

What is the timing, can you break it down into component sections, what are all the pieces that make up one simulation cycle?

Share this post


Link to post
Share on other sites
A Simulation Cycle helps the functional simulation component provide more accurate functional simulation, without greatly slowing performance of the functional simulation.

For example, the functional simulation component may simulate a real-time clock (RTC) of the target system, where the system may be able to execute a certain number of the instructions per each clock cycle, which is referred to as instructions per cycle (IPC). Rather than providing timing-related feedback at the simulation of each of the instructions by the functional simulation component, the timing simulation component may instead provide such timing-related feedback once per a number of such clock cycles, such as once per one million such simulated clock cycles, where one million (or other number) of such simulated clock cycles is referred to herein as a simulation cycle. As such, a substantially optimal compromise between functional simulation performance and functional simulation accuracy is achieved.

OK, so now that we have established all that techno-babble, what are the specifics of the ArmA2Server's simulation cycle, if we don't know what it is we are setting, how are we supposed to set it correctly?

I have read about 30 or so guesses as to what this stuff is, and just as many cfg settings. I've found that the A2 config settings that most dedicated servers use are very different from each other and no one can point to any accurate documentation.

What I want to know is:

What are the messages sent during how long a period that comprise a simulation cycle?

What is the data being sent?

Beyond that, I don't know what other questions I have at this point. Isn't anyone else curious as to what this arbitrary setting is and how it is supposed to be adjusted?

Share this post


Link to post
Share on other sites

nope not at all

Start with 128 and work your way up until it gets stuttery. Then divide that in 1/2 and walla!

It really depends on the upstream bandwidth available and the other settings.

MaxMsgSend=256;

(Lower Values are suggested for CTF/DM maps and Higher Setting for evo/cti

Using too large of MaxMsgSend in a CTF causes stutter effects ctf=128/192 cti/evo 384/512)

Note

The greatest level of optimization can be achieved by setting the MaxMsgSend

and MinBandwidth parameters. For a server with 1024 kbps we recommend the

following values:

MaxMsgSend = 256;

MinBandwidth = 768000;

Edited by pchaxor

Share this post


Link to post
Share on other sites

Thanks for the response. :)

I am running completely smooth, no stutter at all with 1024 (and have been for some week or so). Without knowing what the messages are, I feel like I could put MaxMsgSend = COW; in there and be fine.

However, the .exe is getting our of MP memory errors when a mission starts with over 100 clients connected.

I don't see any errors, beyond those that are to be expected (frequency not supported, etc.) all the way up until it blows up (the EXE that is ;) ) So, I have been trying to be sure that my buffer was empty, that nothing that was being queued up was the cause.

I sort of thought this MaxMsgSend option could be a part of it, but I don't see that anyone really knows what it does. Just ways how it doesn't work... "go till it breaks, then cut it in half" seems a bit hit or miss for me. Still hoping for a actual explanation.

Share this post


Link to post
Share on other sites

Hi.

I think i need some help with those settings :)

My bandwidth is 30/30mbit(fiber).

And my server is a:

Intel Pentium 4 650, 3400Mhz

2048MB RAM OCZ XTC CrossFire

nVIDIA GF 6600(256MB)

MS Windows Vista Home Basic 64-bit system

server.cfg file:

//Admin Stuff
passwordAdmin="xxxxxxxxxx";					// Admin Password
password="xxxxxxxxx"; 						 // PW

//Server Configuration and Info Stuff
hostname="Test Server";
motd[]=
{
"Welcome to my test Server",
};
motdInterval=5;				                // Delay in seconds between lines of the MOTD displaying
reportingIP="arma2.master.gamespy.com";		// Reports Server name to Server Browser
//reportingIP="<>";							// Reports Server name to Server Browser
maxPlayers=24;  						 	  // tosses error when diff than mission settings
voteThreshold=1.50;							// .33 is default, .99 means that 99% have to vote the same
voteMissionPlayer=1;						   // Allows voting when 45 players are connected

//Player Environment Config Stuff
disableVoN=1;								  // If 1, will disable the ingame VON ability
vonCodecQuality=7;							 // Quality from 1 to 10
persistent=0; 								 // keeps game server running after players leave 0=off 1=on

//Cheat Detection Stuff
//checkfile=0; 								// 1=slow 0=defult
//onHackedData = "ban (_this select 0)";  	 // auto ban hacked addons
//onDifferentData = "kick (_this select 0)";   // auto ban modified files

//Player Connect Signatures
verifySignatures=1; 						   // Verifies that the sigs are enabled
onUnsignedData = "kick (_this select 0)"; 	 // unsigned data detected
kickDuplicate=1;							   // do not allow duplicate id
RegularCheck="{}"; 						    // added for Session Lost issue
//equalModRequired=0;						  // set 1-player to use exactly the same -mod= as the server.

//Script Stuff
//onUserConnected="";				
//onUserDisconnected="";
doubleIdDetected="kick (_this select 0)";

//logging
timeStampFormat=full;
logfile="server_console.log";
NetStats=1;

//Server controlled mission choice
class Missions
{
  class Cooperative  						// name for the mission, can be anything
  {
     template=Co_10_Operation_Magpie.Chernarus;
     cadetMode=1;   						// difficulty 0=veteran 1=cadet (not only AI, but //radar, map etc)
  };
};

ArmA2.cfg file:

//Data TX/RX configuration
MaxMsgSend=256;
MinErrorToSend=0.0025;
MaxSizeGuaranteed=1024;
MaxSizeNonguaranteed=1400;

// Bandwidth Settings
MinBandwidth=2304000;
MaxBandwidth=2304000;

// no custom faces, sounds
MaxCustomFileSize=0;

language="English";
adapter=-1;
3D_Performance=93750;
Resolution_Bpp=32;

Is there anything i need to change or add, please let me know... really want a smooth server settings.

Thanks:)

Edited by MJK-Ranger

Share this post


Link to post
Share on other sites

MinBandwidth is the minimum available bandwidth that you can guarantee will be available at any given time.

MaxBandwidth is the maximum your BW can burst up to for brief periods. Such as when several clients are joining and getting updates on teh condition of the island, missions progress, etc.

Also, in the server.cfg, you have netstats=1 .. this should be in your arma2profile file, not the server.cfg. Netstats allows players to hit "I" to see the scoreboard during a mission.

Share this post


Link to post
Share on other sites

I think the simulation cycle is equal to 1 frame on the server?

BIS: Please improve dedicated server documentation so that we can host high quality servers. The documentation regarding the bandwidth settings is at the same level it was in 2002. Could you provide any more information besides the usual cfg comments we've had since OFP? Without information, its mostly trial and error. We pay a lot of money and dedicate time to hosting servers for the community and we would appreciate any support you could give us.

Can you explain how the QoS and bandwidth allocation works at least?

Any hints on why the server crashes when too many people are joining/disconnecting?

The reason man slots disappear on the server?

Share this post


Link to post
Share on other sites

Official Response to the meaning of a Simulation Cycle

"Simulation cycle" is what makes "frame" in a normal game. However, as there is no rendering on server, we cannot talk about frames, and we talk about simulation cycles instrad. One cycle break down approximately to:

simulate all units AI

simulate all units movement including collisions and physics

detect visibility between units

simulate scripts and FSMs

receive network updates about remote entities

send network updates about what has changed to the server (if on client) or to other clients (if on server)

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×