Same inputs, same battle — on any device
Fair play & how the battle runs
The battle runs on fixed timing and your device just watches. Wall-clock hiccups, frame rate, audio or whether your browser likes WebGL don't decide who lives.
At a glance
- Who decides
- The battle sim — movement, shooting, economy, AI; your device just draws it
- How it stays synced
- Everyone replays the same ordered commands on the same island with the same seed
- Feel
- Up to a few hundred units a second, well tested — retries and spikes are counted quietly
- Works without WebGL?
- You still get the unsupported message, but the battle can run headless for testing
Deterministic matches
Battles tick 20 times per second with a fixed command order so replays and hashes match. Multiplayer sends authoritative projections; clients never simulate hidden enemy orders.
Why replays line up
Every match is an island, a seed, and a list of orders. Change any and the replay diverges; keep them the same and replays match, which is why the test suite runs 800-tick mirrors and nine-match matrices. Tweaking a stat bumps those replays — intentionally, so balance can't drift silently.
What difficulty can't do
Difficulty is only allowed to change how often and how well the opponent thinks. It never makes a Maus tougher, a Berliet richer, a depot pay more, or a hidden sub more visible. Damage and vision are the same on Cadet and Veteran — the brain is just different.
Multiplayer and fair play
The server is the boss. Clients send bounded, rate-limited orders; the room validates ownership and sight before execution. Sockets never receive the opponent's hidden command journal. Per-team projections carry only owned or currently visible entities and their own integrity hash, while the complete canonical hash remains server telemetry.
Bumps and blocks you can trust
Hits are swept along their flight — the first clip hits, thin gaps matter, and overlapping bodies are flagged when they get too close. Land and water are strictly separate, with infantry garrison as the one blocking-tile exception. Speeds and overlaps are well tested and quietly counted for diagnostics.
Found a bug? Snapshot it
Dev tools (backtick) show live frame rate, tick, path failures, AI ideas and more; Export snaps config, tick, scores, units, shots and events. Send that snapshot and the team can replay exactly what you saw.