Skip to main content

Tick Engine and PER Cycle

Tick Engine and PER Cycle

The combat clock is a global discrete tick, not real time. Player-paced: the world advances only when the player commits an action or explicitly waits. "Whenever it's time for the user to enter something, everything stops."

Granularity

  • Ticks are deliberately tiny: roughly 10 ticks per foot on even terrain. Integer tick durations everywhere.
  • Fine granularity minimizes same-tick ties between actors (though ties still happen - see Resolution).

The PER Cycle

Every action - attacks, spells, movement, cancels, reactions - is modeled identically:

Phase Meaning
Prep Wind-up: gathering reagents, mental focus, shifting grip. Only intelligent/experienced observers can read this as an intention.
Exec The action is active: casting, swinging. Can't do anything else. May include zone windows (e.g. a whirlwind that slices anyone entering range).
Recover Reset: regaining footing, recovering balance. This is the "readable beat" where enemies react.
  • Zero phases allowed: a fighter feat can zero prep/recover on light attacks to enable combos. Keep a recover floor of >= 1 tick on any action that can interrupt or be interrupted, so every significant action leaves a readable window.
  • Spells have a second clock: {prep, exec, recover, duration} where duration is how long the spell lasts after casting completes.
  • One action state machine for everything. Abilities parameterize it; they don't add new sim code.
  • Exec windows make positioning the core defense - "wait out the whirlwind, then close in" is an expressible tactic.

Movement is an action

Movement uses the same PER model; terrain is paid at the borders (see Movement and Terrain).