Tick
The fundamental unit of time in a ZZT world is the tick. During a tick, the player input is collected, after which all stats are processed in order based on their cycle.
Cycle handling
Whether a given stat is processed on a given tick is based on the following conditions: Cycle =/= 0 and TickCounter % Cycle == StatIndex % Cycle, where:
Cyclerefers to the stat's Cycle value,TickCounterrefers to the game's tick counter,StatIndexrefers to the stat's index.
The tick counter is set to a random value between 0 and 99 on start, and is incremented until it reaches the value 420, after which it is reset back to 1. This has a consequence of only divisors of 420 ticking at a consistent rate throughout gameplay: 1, 2, 3, 4, 5, 6, 7, 10, 12, 14, 15, 20, 21, 28, 30, 35, 42, 60, 70, 84, 105, 140, 210 and 420. Other cycle values, such as 8, 9, 11..., will eventually skip cycles. In addition, as all stats have a lower index than 420 (and all non-player stats have a higher index than 0), stats with a cycle rate higher than 420 will tick as if they had a cycle rate of 420.
Tick rate
The tick rate is dependent on the game speed, and is always a number of PIT ticks (approximately 18.2 Hz). Importantly, the speed of sounds is not affected.
| Game speed | PIT ticks per game tick | Effective tick frequency |
|---|---|---|
| 0 (F) | 0 | Uncapped |
| 1 | 1 | 18.2 Hz |
| 2 | ||
| 3 | 2 | 9.1 Hz |
| 4 (default) | ||
| 5 | ||
| 6 | 3 | 6.06 Hz |
| 7 | ||
| 8 (S) |
Most ZZT worlds are designed for the default tick speed, which is equal to 4, or approximately 9.1 Hz.