Struct TickSummary
Per-tick rollup shipped to the client as the overview feed. Small enough that all ticks for a 500K-tick trace fit in ~16 MB (40 B × 400K), so the client fetches the entire summary on open and renders the timeline from it without any chunk loads.
public struct TickSummary
- Inherited Members
Remarks
Wire size 40 bytes (was 32 before chunker v9). Bumped in v9 (issue #289 follow-up) to surface per-tick OverloadDetector decisions + metronome wait diagnostics. Old v8 caches don't carry these fields and must be rebuilt; CurrentChunkerVersion gates the upgrade.
Fields
ActiveSystemsBitmask
Bitmask of system indices that ran in this tick. Bit N set iff system index N had any activity. Caps at 64 systems; systems beyond index 63 don't set bits (overview still accurate for count/duration; bitmask is just a rough "did this system run" indicator).
public ulong ActiveSystemsBitmask
Field Value
ConsecutiveOverrun
OverloadDetector's _consecutiveOverrunTicks at end-of-tick — number of consecutive ticks above
OverrunThreshold (1.2× by default). Saturates at MaxValue. Captured from
the SchedulerOverloadDetector instant (kind 242). v11+, zero on older.
public ushort ConsecutiveOverrun
Field Value
ConsecutiveUnderrun
OverloadDetector's _consecutiveUnderrunTicks at end-of-tick — number of consecutive ticks
below DeescalationRatio (0.6× by default). Climbs toward DeescalationTicks (20 default)
before deescalation fires; resets on any overrun tick. Saturates at MaxValue.
public ushort ConsecutiveUnderrun
Field Value
DurationUs
Total wall-clock duration of the tick in microseconds.
public float DurationUs
Field Value
EventCount
Event count for this tick.
public uint EventCount
Field Value
MaxSystemDurationUs
Longest single-system duration observed in this tick (µs). Drives the color-scale normalization on the timeline.
public float MaxSystemDurationUs
Field Value
MetronomeIntentClass
Intent classification of the preceding metronome wait — 0 = CatchUp (target already past, no real wait), 1 = Throttled (mult>1), 2 = Headroom (normal idle).
public byte MetronomeIntentClass
Field Value
MetronomeWaitUs
Duration of the metronome wait that preceded this tick, saturating at MaxValue µs (≈65 ms — well past any realistic gap).
Captured by observing the SchedulerMetronomeWait span (kind 241) that ended just before this tick's TickStart. Zero for tick 0.
public ushort MetronomeWaitUs
Field Value
OverloadLevel
OverloadDetector level at the end of this tick (0=Normal, 1/2=Level1/2, 3=TickRateModulation, 4=PlayerShedding). From TickEnd payload.
public byte OverloadLevel
Field Value
StartUs
Absolute start timestamp of this tick in microseconds (relative to the same origin as GlobalStartUs). Added in chunker v2 so the viewer can map viewRange-in-µs back to a tickNumber range without reading any chunk payload. Ticks with idle gaps between them (duration < scheduler period) are handled correctly — this is the true wall-clock start, not a cumulative sum of durations.
public double StartUs
Field Value
TickMultiplier
Effective tick-rate multiplier for this tick (chain values: 1, 2, 3, 4, 6). multiplier > 1 means engine voluntarily slowed itself.
public byte TickMultiplier
Field Value
TickNumber
Tick number.
public uint TickNumber
Field Value
_reservedByte
Reserved padding byte keeping the struct 8-byte-aligned; zero on disk.
public byte _reservedByte
Field Value
_reservedUshort
Reserved padding (u16) keeping the struct 8-byte-aligned; zero on disk.
public ushort _reservedUshort