How can I perform state synchronization using client/server networking in an RTS similar to Starcraft 2 and Planetary Annihilation?
I'm assuming the server has to do some sort of rewinding time to apply the updates received by each of the clients. But for an RTS game, that sounds like a lot of separate copies of the game world. How do you resolve interactions between units belonging to different players who have different latencies?
For the clients, do they need to use their latency (RTT) in order to know how far behind the server they are, to apply future updates that arrive from the server at the right time?
How do you keep time in sync when latency could fluctuate and server updates may not arrive at fixed intervals?