Complete netdemo feature as a single commit on implant2: Recording: - svdemo_record/svdemo_stop commands - Delta-compressed entity states and player states - Server command capture (chat, prints) - Configstring change tracking - Keyframes at configurable interval for seeking - Auto-record on map load (svdemo_autorecord) - Auto-stop on map change, clean shutdown handling Playback: - svdemo_play loads map, spectator auto-connects - Free camera with client-owned PmoveSingle (real-time, works paused) - Player follow mode with full HUD - Scoreboard with recorded player scores - svdemo_pause with frozen trajectories and smooth unpause - svdemo_seek (fast, keyframe-accurate) and svdemo_seekexact (precise) - Seeking works from paused state - SNAPFLAG_RESET_ENTITIES for clean map_restart and seek transitions - Proper session/cvar/configstring handling across transitions - svdemo_pauseEmpty waits for spectator before starting Engine changes: - usercmd_t: optional origin field for client-owned PVS - msg.c: serialize optional usercmd origin - cl_parse.c: SERVERCOUNT time delta reset for seek/unpause - CG_SETCLIENTORIGIN trap for cgame-to-engine origin communication cgame changes: - Client-owned spectator camera (svDemoCameraPs) - CS_SVDEMO configstring detection - SNAPFLAG_RESET_ENTITIES entity interpolation reset - Backwards time handling for seeking - Local entity cleanup on seek - Pause detection from frozen snapshot time - Suppress connection interrupted during demo playback Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| lz4.c | ||
| lz4.h | ||
| server.h | ||
| sv_bot.c | ||
| sv_ccmds.c | ||
| sv_client.c | ||
| sv_game.c | ||
| sv_init.c | ||
| sv_main.c | ||
| sv_net_chan.c | ||
| sv_netdemo.c | ||
| sv_rankings.c | ||
| sv_snapshot.c | ||
| sv_world.c | ||