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).