Missing frames and dropped players

While running two clients (running on the same machine) with default settings, i.e. no rollback, sync window of 10 and panic of 100, we see an average of around 1 missed frame per second. The ping is ~50ms.

The clients themselves do absolutely nothing, its just an idling simulation.

If I have understood this correctly, a sync window of 10 should give us a buffer of 200ms.
Some of the missed frames happened in batches up to 60+ in an instant.
Are missed frames solely a result of exceeding this buffer?
What exactly do missed frames mean in practice?

A second issue we see is that sometimes a client gets dropped for no apparent reason.
Why would this happen and where can we find information on how to handle this situation for scenarios where the client has in fact dropped?

Comments

  • Hi @Geminior,

    A missed frame means a frame where we didn't receive all the inputs from other players, you are right about the protection buffer, but it can happens of a specific do not arrive in the expected time, because the ping measure you see is an average value.

    The player should be dropped when it reaches a number of missed frames greater than panic window, after that we call the following callback "OnPlayerDisconnection(playerId)" on a TrueSyncBehaviour.
  • Ok thanks, but just to be sure we understand this correctly, the missing frames are client specific and the fact that we see differences in missing frames on different clients is the expected behaviour.
    Other clients will wait for a client with more missing frames than themselves up until the panic window at which point the client is dropped and synced update happens on the remaining waiting clients?

    How do we handle temporary lag spikes?
    Simply dropping a client from the game because they temporarily lag is a bit harsh, we would rather let the other clients continue after the panic window and then allow the client who is now behind by x synced frames to catch up if their connection normalizes within some time frame by replaying the input that has happened while they were lagged out. Is that possible?
  • Hi, about the first question you are right, after a client reaches the panic window he is dropped and the other clients keep running.
    About the other question it is what we do through rollbacks, we wait for the players inputs but if we did receive it we project (fake) those inputs for each frame on a rollback window, it is like a second protection against lag. You can increase the panic window as well, to avoid drop players soon, but it means all other clients will have to wait a little with their games freezed.