Original Post
After being faced with the difficulty of transparently combining a scheduler-based game engine with the methods of client-side prediction, I have decided to consider an alternative method for transferring information through the network1. The idea is to create a peer-to-peer group where only input information would be sent to the peers. Each peer would then simulate the game status based on input provided by other players. I come here looking for your experience in using this approach (whether successes or failures) so I can determine myself if it is possible, or worth the effort. The game is what I would call an "optimistic" design, an RTS with millions of units and large maps, held together by clever LOD algorithms. Whether in single-player or multiplayer, orders are sent by radio and received by the units after a short duration2. In effect, the orders are also sent to the other players in a multiplayer game, so the short duration serves as a buffer for latency. Each player's simulation runs at full speed as long as the acknowledges from other players reach it. Every 250ms, it expects an ACK from every other player in the game and will simply pause if the ACK is not received. In-between ACKs, orders that must be executed after the next ACK3 are sent and received. A player does not send its ACKs until all orders it sent for that period have been received on the other side. Thus, the game only moves on if the states of each player are synchronized.
1: I believe a Star Wars video game used this method, and its developers explained the encountered problems in a Gamasutra postmortem which I cannot find anymore. 2: orders take at least 250ms to reach their target, this duration increases with distance from a radio emitter. 3: orders are always assumed to be sent at the time of the ACK that directly follows them. Each peer then computes the time of order execution based on the distance to radio emitters.
1: I believe a Star Wars video game used this method, and its developers explained the encountered problems in a Gamasutra postmortem which I cannot find anymore. 2: orders take at least 250ms to reach their target, this duration increases with distance from a radio emitter. 3: orders are always assumed to be sent at the time of the ACK that directly follows them. Each peer then computes the time of order execution based on the distance to radio emitters.