Some popular games including MiMaze [20], Halo [5], and
most Real Time Strategy (RTS) games [1], have adopted the
parallel simulation architecture, where each player in the game
simulates the entire game world. Thus, all objects within this world are
replicated everywhere and kept consistent using lock-step synchronization.
The obvious disadvantages of this architecture are its requirement of
broadcasting updates to every player, resulting in
bandwidth scaling behavior, and its need for
synchronization, limiting response time to the speed of the slowest client
and the latency between the players. These deficiencies are tolerated in
today's RTS games because individual games rarely involve more than 8
players and low update rates are generally tolerable.
One possible optimization would be to use some form of
area-of-interest filtering such that players only broadcast their
updates to other players in the same area. Resulting in only
bandwidth scaling. However, without a
distributed service to discover other nearby players, such a design
would need to rely on a central server to find each other. Such a
server could become a bottleneck since it would need to receive
position updates from and transmit area-of-interest matches to each
client. The bandwidth demand scales linearly with the number of
clients, much like the server in a client-server design.