Table of Contents

Tick

In one line: one iteration of the runtime's loop — a single step of your simulation (a game frame). Each tick runs every system once, then advances.

The runtime drives a metronome: it fires a tick at a fixed rate (60 Hz by default) on a dedicated thread, runs your systems over the world, and repeats — the classic game/simulation loop, but with the transaction plumbing handled for you. ctx.DeltaTime is the seconds elapsed since the previous tick; multiply rates by it and your logic runs at the same speed regardless of tick rate.

The fixed cadence is a choice. For pure parallel computation (no real-time pacing) you run ticks as fast as the work completes — each tick is simply "one parallel pass" over your systems. Either way, a tick is the atomic unit of progress.

Within a tick, the runtime enforces a discipline you don't have to write:

  • One Unit of Work per tick, flushed at tick end — so all of a tick's commits share one durability cycle.
  • One transaction per system, created on its worker thread and committed by the scheduler. Each successive system gets a higher TSN, so a later system sees an earlier one's committed writes — visibility advances across systems within the tick.
  • At tick end, the tick fence makes SingleVersion writes durable (≤ 1 tick loss) just before the UoW flushes.

💡 The side-transaction escape hatch. "One UoW per tick" is the default, not a cage: for a write that must be durable right now — a purchase, a trade — call ctx.CreateSideTransaction(DurabilityMode.Immediate) to commit a transaction you own, independently of the tick. See Unit of Work and Durability.

How it relates

  • Typhon runtime — drives the tick loop and its cadence.
  • System — every system runs once per tick.
  • Unit of Work — exactly one opened and flushed per tick.
  • Tick fence — the durability boundary that closes each tick.
  • Snapshot isolation — visibility advances system-to-system as TSNs increase within the tick.
  • TickContext — the object each system's Execute receives to touch the world this tick.

In the API

Learn & use