Recording:
- svdemo_keyframeInterval cvar (default 5 seconds, 0 = disabled)
- Periodic delta state reset produces full-state frames
- Frame flag bit 1 marks keyframes for reader to reset delta state
- Keyframe index (time + file offset) written at end of file
with numKf_copy trailer for efficient playback loading
- Dynamic allocation for unlimited keyframe count
Playback:
- Keyframe index loaded from file footer on playback start
- svdemo_seek <seconds>: relative seek from current time
Finds nearest keyframe at or before target, seeks file position,
resets delta state + svs.time, sets SNAPFLAG_RESET_ENTITIES
via demo.seeked flag (one-shot on next frame read)
- Normal keyframe frames only reset delta state (no visual glitch)
- Map restart frames also set SNAPFLAG_RESET_ENTITIES
Demo format: keyframe flag (bit 1) added to frame flags byte.
Backward compatible — old demos have no keyframes (numKf=0).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>