Case study
2026
Ascendom
A deterministic autobattler where you draft a party, prep it through a shop and tavern economy, then fight the recorded ghosts of other players’ runs.
- Client Personal project
- Discipline Game
- Duration Ongoing
- Budget band Personal project
The problem
An autobattler that records runs and replays them against other players has one hard requirement: the same battle has to resolve identically everywhere it runs. If a fight can drift between two machines, replays desync and the server has no way to tell a genuine run from a fabricated one.
Most games solve that by trusting the client and hoping. That works until somebody notices.
What I did
Built from scratch in Lua with LÖVE. You draft a party from a fourteen-class roster, prepare it through a shop and tavern economy, then a sixty-tick simulation fights the recorded ghost of another player’s run.
The rule underneath it is that determinism is not optional. Every value is an integer and every random stream is seeded, so a battle replays bit-identically on the client and on the server.
That is what makes the rest possible. The server can verify a run from its action log rather than taking the client’s word for the result.
Outcome
A simulation that produces the same answer twice, which is the whole basis for replays, ghost opponents, and server-side verification.
The transferable idea is the one I reach for on paid work too: decide what must always be true, then build so the system cannot violate it, instead of relying on everyone remembering.