Conference | Live Schedule | Talks | Get your ticket | Slides | Set your timezone
1500 Archers, One State: Cross-Platform Determinism in Age of Empires

Raymi Klingers
On Day 3 at 10:20 (CET/Berlin) in Track B [Opal Room and online]
The Age of Empires series that started all the way back in 1997 famously tackled online multiplayer using a synchronous lockstep networking model as described in the paper: 1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond.
This architecture relies on an entirely deterministic simulation as all players must run an identical simulation given the same input commands and parameters.
The original paper introduces the concept of determinism but leaves out a lot of practical information which can be quite an engineering challenge when not setup correctly from the start. In this talk we will go over the technical implementation and the pitfalls we encountered:
- The Determinism Disasters: Managing floating-point consistency across platforms, sneaky ways to Undefined Behavior, unexpected dependency changes and the dangers of non-deterministic/semi-deterministic data structures.
- Determinism as feature and a tool: How we leverage determinism to allow players to create replays, to find bugs, regressions and even desyncs.
- Lessons learned: What we learned from maintaining the deterministic code that evolved over nearly 30 years, what we can apply to modern high-performance C++ systems today and how we can do even better with modern tooling and practices.
Please login to comment