Networking Brainstorm
Articles
Seminal paper on how Age of Empires II dealt with the networking problem by implementing client lockstep simulations. Lockstep implementation here requires N2 stable (but slow) connections.
Important finding that overall network latency didn’t actually impact the outcome of RTS games much.
Scales up clients connecting to a game by implementing multiple proxy servers. Servers are totally connected but each proxy is only allowed to make a specific set of (mutually exclusive) mutations. Features dynamic rebalancing in case a server crashes.
- Wargame/RTS Network Architecture - a danger of Lock-step Commands Synchronization 2006
- What Every Programmer Needs To Know About Game Networking 2010
Goes into detail a bit about the evolution of networking models in gaming; goes a bit into detail about how modern day rewind & replay lag compensation works.
Short, accessible explanation of one possible lockstep implementation.
Accessible explanation of how Supreme Commander (2007) implemented and optimized lockstep. Specifically deals with global tick synchronization implementation – may also be applicable in client / server model.
Goes into detail about how Supreme Commander implemented the communications and sync protocol. Very useful reference.
Includes some links to sample implementations of lockstep.
More information on lockstep implementation and explanation.
- Client-Server RTS networking with lockstep and lag 2012
- The Tech of Planetary Annihilation: ChronoCam 2013
Very good article on a possible approach to a client-server model of RTS network communications – by sending linear transformations of data trajectories (instead of frame-by-frame updates) to save on bandwidth.
- Q&A — Planetary Annihilation Chrono Cam 2013
- Unity RTS Networking 2013
- Planetary Annihilation networking 2014
- Networking for Real Time Strategy games 2014
- Cross platform RTS synchronization and floating point indeterminism 2015
- How do I efficiently send RTS unit selections over the network? 2015
Convenient back of the envelope bandwith calculations for RTS games.
Factorio originally used lockstep to deal with broadcasting game state. This is an interesting case as it similarly has to deal with large maps and changing terrain with large amounts of data being transferred across multiple clients.
Describes in detail the networking model migration for Factorio from lockstep to server-elect model.
Summarizes lockstep and client-server implementation and provides sample command message samples.
Starcraft II’s internal tick rate is 16 - 20Hz; apparently other RTS can be as low as 8Hz. Good reference / justification.