dregg microsites 05 · Descent of Nations

Descent of Nations · a fidelity project, an RL environment, and a thesis

Make the digest
a proof.

Verifiable computation has, so far, verified ledgers: token transfers, order books, instruction streams. Small state, simple dataflow · the 1950s, formally. A real-time strategy game from 2003 is a different category of object. This page is about why we are rebuilding one, and what it is quietly pointed at.

What stands today.

Descent of Nations is a deterministic, batch-parallel Rust reimplementation of Rise of Nations, built to be bit-exact wherever that can be proven and fast enough to train agents on. Fidelity is not a vibe here; it is measured against the shipped machine code itself. A differential oracle maps the retail executable and calls its actual functions with controlled inputs, next to ours:

18,722,565
oracle trials in the current record
0
mismatches · skips · crashes
585,152
replay turns validated across 61 recordings
67 ms
the real tick, measured · not folklore

The reverse engineering keeps overturning folklore. Damage is a 31-stage integer chain with armor in the middle. General movement is integer. Border influence is a cell-radius model, not a spline. And the shipped AI receives difficulty-scaled economic bonuses · twenty years of "the AI is so good at economy," and it was on welfare. Ours is required not to be; non-cheating is a product gate.

Alongside the sim: an open, modifiable RL environment · Gymnasium, VectorEnv and PettingZoo adapters over the full 82-opcode action space with parameter-level masks. Not a toy subset: the environment must not foreclose a state-of-the-art player. And the .rcx replay format, which had no public documentation or parser anywhere, now has both.

The observation.

Rise of Nations is a lockstep RTS. Peers exchange orders only · never state · and every machine simulates the same world locally. Which means the shipped game already had to solve a verification problem: how do you know the other machine computed the same world you did?

Its answer, in 2003: every turn, hash the simulation state across fifteen channels · economy, combat, movement, and the rest · and compare digests between peers. Desync is detected by checksum disagreement. Replays are just the order log plus those digests.

That is a verification protocol. A replicated state machine, a compact input log, a per-step state commitment. The game was built wanting to be verified · it simply lived two decades before the machinery that could keep it honest against anything stronger than an honest peer.

The thesis.

Replace "compare the digest" with "prove the digest."

A proof that each tick's transition was computed correctly · folded incrementally across a match, the way the match itself is played · would be, to our knowledge, the most complex incrementally verifiable computation ever attempted: tens of thousands of heterogeneous state transitions per tick over a large mutable world, not a linear pass over a ledger.

Three facts make it a thesis rather than a fantasy. The statement already exists · the fifteen-channel digest defines exactly what to prove, and it was defined by the game, not by us. The simulation is integer · the RE campaign keeps finding integer chains and grid models where folklore expected floats, which is to say: we reverse-engineered our way to an arithmetization-friendly 2003. And the spec is measured, not asserted · eighteen million oracle trials mean a circuit's reference semantics would be pinned to shipped machine-code behavior, not to a document.

It also composes with the environment work. An open RL environment plus verifiable execution is something reinforcement learning conspicuously lacks: benchmarks that cannot lie. "This agent achieved this result in this environment" becomes a checkable artifact · provable evaluations, cheat-proof leaderboards, tournaments verified without replaying a frame · the same design that already makes a board-game cheat unsatisfiable, scaled up from an 11×11 board to a war.

The road, honestly.

Nothing below is a claim of achievement. It is the order of battle, each stage a checkable artifact, no dates attached:

1

State the fifteen-channel checksum relation formally, against the measured semantics.

2

Prove one channel's per-turn transition · the smallest digest that means something.

3

Prove one full tick. The hardest single step; everything heterogeneous happens here.

4

Fold ticks: segment-level incremental verification of a replay.

5

Chase real time. The tick is 67 ms; the gap between proving speed and that number is the research.

Verifiable computation has spent its first decade proving the 1950s · balances, books, batches. A war, with its economy and fog and ten thousand simultaneous small decisions, is 2003. The digest is already there. We intend to prove it.

Status, plainly: the fidelity oracle, replay validation, and RL environment numbers above are current and real. The proof stages are a stated intention · none has begun. This page is the flag, planted in public, so progress against it can be checked rather than believed.