Original post by Sirisian
The waiting part in P2P is more for a lock-step kind of game. I don't see the point of waiting for the slowest player when using P2P. You could set it up so that players just stop sending packets to them. I mean there's no rule saying you have to keep slow clients in sync.
If a client is slow, they cannot keep up with others.
If simulation is deterministic and fair, you need to wait for slowest, or kick those that are slow.
Otherwise, they will always be too slow, they will keep falling behind, and you either keep sending them baselines, increasing network load, or you disconnect them.
If simulation is not deterministic, then you end up with unfair gameplay model, or at least something that is not entirely suitable for quick-paced FPS (60Hz, accurate collisions, accurate physics). Unlike server-based, where clients are dumb and just renderers (with extrapolation), every peer has to carry its weight, exactly the same as all others.
At very least, I see no other solution to slow peers. They are unable to keep pace with rest of simulation, and others will never be able to consider their actions, since by the time they receive them, the rest have moved on. MMO models obviously exist, but those are not fully connected.
Each peer would obviously behave exactly like current servers, keeping time in the past, compensating for latency and extrapolating, and that would include tolerating slow clients or occasional lag spikes with minimal impact to each player, but degraded experience to slow peer.
Worse yet imagine if he's telling clients A and B it's position at the correct time interval, but is purposely delaying packets to client C so that he can get a quick kill. :P So many vulnerabilities I don't even know where to start.
Which is why you need to wait for slowest peer, before you advance the time step.
More accurately, the waiting doesn't need to be at that point. Each peer can advance even if they don't receive previous updates. When they do, they apply changes in the past, correct the state if needed, and so on.
But this again introduces warps and visual distortions, or causes other problems.
And if any peer does cheat, AoE-like fully deterministic model immediately has all others break connection. This model assumes that each peer maintains full state of entire world - unlike P2P MMOs, where each peer maintains full state of portion of world, and acts as dumb terminal for everything else.
[Edited by - Antheus on August 28, 2009 1:50:47 PM]