quake3live/code/server
serge_shubin 628007ec57 Keyframe recording and seeking
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>
2026-03-24 18:55:44 +08:00
..
lz4.c Add LZ4 compression library (r131) 2026-03-24 02:42:47 +08:00
lz4.h Add LZ4 compression library (r131) 2026-03-24 02:42:47 +08:00
server.h Keyframe recording and seeking 2026-03-24 18:55:44 +08:00
sv_bot.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
sv_ccmds.c Keyframe recording and seeking 2026-03-24 18:55:44 +08:00
sv_client.c Fix follow mode switching and PVS during pause 2026-03-24 04:31:39 +08:00
sv_game.c Fix chat capture: capture any target, deduplicate in buffer 2026-03-23 05:55:19 +08:00
sv_init.c Keyframe recording and seeking 2026-03-24 18:55:44 +08:00
sv_main.c Demo pause: freeze svs.time, hold demo data consumption 2026-03-24 03:28:32 +08:00
sv_net_chan.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
sv_netdemo.c Keyframe recording and seeking 2026-03-24 18:55:44 +08:00
sv_rankings.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
sv_snapshot.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
sv_world.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00