Basic Server Config File – Arma 2 Talk

From Bohemia Interactive Community
Jump to navigation Jump to search
(Added info provided by Suma)
m (Text replacement - "\[ *((ftp|http)s?:\/\/[^ ]+)([^{])=([^}])([^ ]+)" to "[$1$3{{=}}$4$5")
 
(6 intermediate revisions by 3 users not shown)
Line 19: Line 19:
----
----


Related comments by Suma ([http://dev-heaven.net/issues/24014 source])
Related comments by Suma ({{Link|link= http://dev-heaven.net/issues/24014|text= source}})


---
---
Line 62: Line 62:


  A: The aggregate message contains multiple logical messages, which are related to multiple objects.
  A: The aggregate message contains multiple logical messages, which are related to multiple objects.
----
Related comment by Suma ([http://forums.bistudio.com/showpost.php?p{{=}}2029545&postcount=5 source])
MinErrorToSendNear is used differently from MinErrorToSend.
When computing the error for MinErrorToSend, the error is divided by (distance_in_m/20m)^2.
Because of this, when MinErrorToSend is small enough so that distant units move smooth,
the near units move "supersmooth" (the updates are sent even when the movement is so smooth,
it makes no gameplay difference).
MinErrorToSendNear gives a way to give another absolute (not distance dependent) limit
("never send update smaller than 1 cm, even if MinErrorToSend would allow it to be sent").
----
Would it be safe to assume the following based on previous knowledge and discussions?
* MinErrorToSendNear (METSN) is not derived from a formula.
* It's a statically chosen value used as the minimum overall error value (E) before a network update message will be sent.
----

Latest revision as of 17:20, 28 April 2023

Official Response to the meaning of a Simulation Cycle Quote:

"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 instead. 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)

ref: http://forums.bistudio.com/showthread.php?p=1363400



Related comments by Suma (source (dead link))

---

Q: Does a 10x times lower MinErrorToSend mean also 10x times the traffic from the server?
A: In extreme case (provided you have enough bandwidth available) it might mean 10x more traffic.
I think it should be easy to measure the effect, using #monitor command or external tools.

---

Q: Do lower MinErrorToSend take more CPU processing on the server?
A: Yes, some more processing, as there are more messages to handle, but I do not expect anything major.

---

Q: Do basic.cfg settings on clients also have an effect?
Like for the player entity itself or the AI under his command (AI local to the player)?
A: Yes, it affects what client sends to a server as well, but in a different way (the error computation is different,
it is not considering any camera position).

---

Q: From what I understand, this is limit, how much "messages" are created by engine "every frame".
As we now, there are maximum 50 frames per second. Those messages are than packed to packet
(till packet limit MaxSizeNonguaranteed is reached) and than packet is send.

Is following logic correct (when FPS on server is constant 50):
MaxMsgSend=1 means there would be maximum 50 messages (not packets) per second?
MaxMsgSend=1000 means there would be maximum 50000 messages (not packets) per second?
A: MaxMsgSend is maximum number of "packets" (you have described packet creation fine,
we call them "aggregate messages" internally).

---

Q: Is that correct, that every message containt motion update (or other update) ONLY FOR ONE object?
So when we have 1000 AIs near player, and we wish to have update 50x per second for all AIs,
so we must set MaxMsgSend to higher than 1000?
A: The aggregate message contains multiple logical messages, which are related to multiple objects.



Related comment by Suma (source)

MinErrorToSendNear is used differently from MinErrorToSend.

When computing the error for MinErrorToSend, the error is divided by (distance_in_m/20m)^2.
Because of this, when MinErrorToSend is small enough so that distant units move smooth,
the near units move "supersmooth" (the updates are sent even when the movement is so smooth,
it makes no gameplay difference).

MinErrorToSendNear gives a way to give another absolute (not distance dependent) limit
("never send update smaller than 1 cm, even if MinErrorToSend would allow it to be sent").



Would it be safe to assume the following based on previous knowledge and discussions?

  • MinErrorToSendNear (METSN) is not derived from a formula.
  • It's a statically chosen value used as the minimum overall error value (E) before a network update message will be sent.