quake3live/code/game
serge_shubin f871cc004f Fix svdemo_play from in-game and devmap from demo playback
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>
2026-03-24 06:32:08 +08:00
..
ai_chat.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_chat.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_cmd.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_cmd.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_dmnet.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_dmnet.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_dmq3.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_dmq3.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_main.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_main.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_team.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_team.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_vcmd.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
ai_vcmd.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
be_aas.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
be_ai_char.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
be_ai_chat.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
be_ai_gen.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
be_ai_goal.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
be_ai_move.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
be_ai_weap.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
be_ea.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
bg_lib.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
bg_lib.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
bg_local.h QL stair traversal: conditional velocity clip + air steps 2026-03-21 15:08:16 +08:00
bg_misc.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
bg_pmove.c QL stair traversal: conditional velocity clip + air steps 2026-03-21 15:08:16 +08:00
bg_public.h Client-owned camera for demo spectator 2026-03-24 03:51:51 +08:00
bg_slidemove.c QL step jump with master gate and projected validation 2026-03-21 20:58:11 +08:00
botlib.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
chars.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
Conscript Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_active.c Fix follow mode switching and PVS during pause 2026-03-24 04:31:39 +08:00
g_arenas.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_bot.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_client.c Fix svdemo_play from in-game and devmap from demo playback 2026-03-24 06:32:08 +08:00
g_cmds.c Use cached g_svDemoPlaying.integer instead of trap_Cvar syscalls 2026-03-24 04:32:57 +08:00
g_combat.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_items.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_local.h Server-side demo recording and playback (netdemo) 2026-03-23 04:28:55 +08:00
g_main.c Remove PVS data from demo format, derive during playback 2026-03-24 05:00:21 +08:00
g_mem.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_misc.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_missile.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_mover.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_public.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_rankings.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_rankings.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_session.c Fix svdemo_play from in-game and devmap from demo playback 2026-03-24 06:32:08 +08:00
g_spawn.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_svcmds.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_syscalls.asm Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_syscalls.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_target.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_team.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_team.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_trigger.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_utils.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
g_weapon.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
game.bat Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
game.def Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
game.q3asm Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
game.sh Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
game.vcxproj Copy game/cgame/ui to missionpack/ for TA configurations 2026-03-18 16:06:35 +08:00
game.vcxproj.filters Migrate to Visual Studio 2022: replace .vcproj with .vcxproj, add .gitignore 2026-03-18 13:36:28 +08:00
game_ta.bat Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
game_ta.q3asm Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
game_ta.sh Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
inv.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
match.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
q_math.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
q_shared.c Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
q_shared.h Client-owned camera for demo spectator 2026-03-24 03:51:51 +08:00
surfaceflags.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00
syn.h Initial commit: Quake 3 1.32b GPL source 2026-03-18 13:32:24 +08:00