Page 1 of 1

Bug fix - Correct viewangles on load game

Posted: Tue Jun 05, 2012 10:20 pm
by mh
This is another one of those little Quake annoyances - when you load a previously saved game your viewangles are incorrect - you're normally looking straight forward instead of in the actual direction you were looking, which may have been up or down. Let's fix it.

Find Host_Spawn_f and declare at the top:

Code: Select all

float *sendangle;
Scroll down to the line where svc_setangle is sent (near the bottom) and add this between the MSG_WriteByte and the for loop:

Code: Select all

sendangle = sv.loadgame ? ent->v.v_angle : ent->v.angles;
Finally, change the body of the for loop to this:

Code: Select all

MSG_WriteAngle (&host_client->message, sendangle[i]);
Done - now when you reload you'll be looking in the correct direction. Easy as pie.

Re: Bug fix - Correct viewangles on load game

Posted: Wed Jun 06, 2012 12:24 am
by Baker
I like this one a lot. In fact, I wasn't aware of the problem.

Re: Bug fix - Correct viewangles on load game

Posted: Wed Jun 06, 2012 12:31 am
by r00k
Image
Sadly I have NEVER saved a game in Quake....

Re: Bug fix - Correct viewangles on load game

Posted: Thu Jun 07, 2012 3:02 am
by qbism
Sweet, even works in winquake.
r00k wrote:Sadly I have NEVER saved a game in Quake....
LOL people would play more carefully without savegame.

Re: Bug fix - Correct viewangles on load game

Posted: Thu Jun 07, 2012 4:32 am
by r00k
I mean i finish an episode, quit then come back to start 'nother misston, end the go again, oyd not like its that hard...

Re: Bug fix - Correct viewangles on load game

Posted: Fri Jun 08, 2012 3:45 pm
by mankrip
Thanks mh! This will be really helpful for me, since I often use saves to test features and bugfixes in my engine.

Re: Bug fix - Correct viewangles on load game

Posted: Sun Jun 10, 2012 10:54 pm
by taniwha
mh: heh, I'd never noticed. I guess I'd always saved in a near enough to horizontal state.

The error is actually worse than just leaving you looking straight forward: it's -1/3 of the correct angle: if you're looking nearly straight down when you save, you'll be looking up at a bit less than 30 degrees when you load.

Anyway, issue confirmed and fixed* in QuakeForge. Thanks for the heads-up.

*Not yet pushed due to technical difficulties with the git repository on sourceforge :(

Re: Bug fix - Correct viewangles on load game

Posted: Fri Jun 15, 2012 4:48 am
by Baker
mh wrote:This is another one of those little Quake annoyances - when you load a previously saved game your viewangles are incorrect - you're normally looking straight forward instead of in the actual direction you were looking, which may have been up or down. Let's fix it.
I had an aguirRe type of thought.

Perhaps this behavior was intentional for keyboarders? I mean if you load a game and you are looking up or down, that isn't a keyboard initiated action so force_centerview isn't going to fix where you were looking.

Just a thought, but I'm thinking might not have been a bug but a feature.

(I also haven't thought about the code, so maybe I'm missing something obvious ... )

Re: Bug fix - Correct viewangles on load game

Posted: Fri Jun 15, 2012 9:54 am
by mh
Hmm - "intentional for keyboarders" is a reasonable assumption here, but unfortunately in the absence of comments on the relevant code, we'll never know for certain. :evil:

All the same, pitch drifting would resolve that on the client side, and there is the behaviour that taniwha observed - it doesn't just auto-center, it sets your pitch angle to -(viewangle * 0.3333f). That comes from some SV_ClientThink code:

Code: Select all

	if (!sv_player->v.fixangle)
	{
		angles[PITCH] = -v_angle[PITCH] / 3;
		angles[YAW] = v_angle[YAW];
	}
We do know that "e->angles[0] = -e->angles[0];" is flagged as a "stupid quake bug" elsewhere in the engine too, so I'm thinking that balance of probability indicates that this one is actually a bug too.

Re: Bug fix - Correct viewangles on load game

Posted: Fri Jun 15, 2012 11:34 am
by taniwha
This one definitely is a bug as you do not look straight forward when loading the game: you look 1/3 of the angle in the opposite direction. Quite bad news for a keyboarder, I'd say.

Anyway, problems with git fixed: pushed.

Re: Bug fix - Correct viewangles on load game

Posted: Sat Jun 16, 2012 1:28 pm
by mh
It's worth noting as well that this one is fixed in Quake 2.

Re: Bug fix - Correct viewangles on load game

Posted: Thu Jul 12, 2012 11:30 am
by Baker
This is a very nice fix. I never noticed how the load game angle was screwed up.

And this fix works properly with -mlook or +mlook ... so doesn't change even speculated behavior.

If +mlook, you stay looking at the ceiling if saved that way.
If -mlook, you load looking at the ceiling but it drifts down to level like force_centerview would.

It is perfect.