Real-time simulation
A step beyond replicated state: a deterministic simulation, rolled back and reconciled for you, so a fast-twitch game stays in sync without you writing netcode. It rides the same connection as the rest of TipTap.net — rooms, state, turns and chat behave identically whether or not you use it.
You write the simulation — this is the creator-logic tier. Your game’s rules live in one TypeScript file, compiled server-side to WebAssembly and checked for determinism rather than trusted to be deterministic. There is no fixed menu of genres to pick from: the arena, the bodies, the projectiles and the rules are yours. The platform supplies the rollback runtime that steps your logic identically on every client, and the drawing half of your game reads the state back with sim.getView().
The full authoring guide — how to write and compile a logic.ts, the packages you can import, and how to publish it — lives under Creator logic. This page is the SDK surface the drawing document talks to.
Two limits worth knowing. Play again currently reloads the game document — a simulation session cannot span two matches. And sim.query resolves on the host and travels, so it is authoritative but not free; poll it at a rate you have measured and pass { timeoutMs } rather than relying on the five-second default.
A dev session never gets a simulation. A room opened against a dev-session grant is served at relay tier deliberately, whatever the game declares — so TipTap.sim is injected, every call queues, and each settles as simulation unavailable about fifteen seconds later. The same is true of a file you open yourself. Expected, not broken — worth knowing before an evening on the wrong theory.
What follows is the SDK surface the drawing document uses. Nothing in the document simulates anything — the simulation is your compiled WebAssembly, stepped by the platform’s rollback runtime, and the document supplies intent every frame and paints the state it gets back. Design it gently or the netcode gets blamed for the design: slow time-to-kill, generous hitboxes, a small map, short rounds.

