Multiple issues fixed for seamless transitions: Server lifecycle: - SV_Shutdown before devmap in SVD_Play_f: drops old clients so spectator doesn't land in slot 0 (recorded player collision) - SVD_IsStarting flag prevents cleanup hooks from destroying demo state during our own SV_Shutdown/SV_SpawnServer calls - SV_SpawnServer stops demo playback on non-demo map changes via SVD_CleanupPlayback (no disconnect, just state cleanup) - SVD_CleanupPlayback made non-static for use from sv_init.c Cvar handling: - Use Cvar_Set2 with force=qtrue for CVAR_ROM sv_demoplaying - Set cvar AFTER SV_Shutdown (old game module gone) but BEFORE devmap (so new G_InitGame reads correct value) - Set CS_SVDEMO configstring after devmap as backup for cgame Game module: - ClientBegin: set pm_type=PM_SPECTATOR after ClientSpawn (which memsets ps). ClientThink_real normally sets this but is disabled in demo mode. - G_WriteSessionData: skip during demo playback so forced TEAM_SPECTATOR doesn't persist to next normal game - ClientThink: return early in demo mode (no server-side movement) Removed debug prints and unused SVD_GetPlayMaxClients. 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 | ||