Visual Bug Related to Commit 51b6ae4 (100% Reproductible)
The following is the reproduction process step by step:
- Build the project with the latest code as of today;
- Launch the executable
quake3e.x64with eithercl_renderer = vulkanorcl_renderer = opengl; - Choose Single Player and click Skirmish button;
- Select any map (for instance, Q3DM1) with FFA;
- Click Fight button and try to encounter any bot in the arena without pressing Tab.
- The bot is now displayed as the player model instead (in this case, it becomes Crash wrongly, rather than Ranger);
- After Tab is pressed to show scores or the player is killed, the opponent's model switches back to the correct one (Ranger) immediately.
Here is the video proof (recorded by SimpleScreenRecorder with no audio): https://imgur.com/a/EgvXMAl.
Furthermore, using git bisect, I already found out that 51b6ae414f4324e75cc5248e51803ea7fb0b4a09 is the first bad commit.
Can you kindly take a look please, @ec-?
- OS: Kubuntu 24.04.3 LTS with kernel v6.14.0-33-generic
- DE: KDE plasma v5.27.12
- OpenGL Driver: Mesa v25.2.4
- C Compiler: GCC v13.3.0
- Screen Resolution: 1920x1200 @ 60.00Hz
- CPU: AMD Ryzen 7 PRO 8840HS w/ Radeon 780M Graphics
- GPU: AMD ATI Phoenix3
This is standard behavior of the mod code deferred loading and is not a rendering issue.
The default value is turned on in vanilla and off in missionpack.
https://github.com/ec-/baseq3a/blob/master/code%2Fcgame%2Fcg_cvar.h#L78
IMO problem lies in original baseq3 gamecode ServerOptions_Start() function which depends on wait timings, for now I'm not goint to change current wait (exact 1-frame delay) behavior, I'd rather modify gamecode if baseq3a is affected by this either
Cg_DeferPlayers 1 is supposed to work that way when a new character joins, I think it's meant to avoid stuttering due to new player model loading from disk while you're playing. A brief stuttering when you just died (when the scoreboard is shown automatically) isn't a big problem instead.
Are you saying that after some change, it not only happens when a new character joins later (expected), but also at the start of the match (I guess not expected)? Does disabling cg_deferplayers workaround the issue?