One just hopped right past me while I was running flat out.
Quake (id Software, 1996) stops your running at 320: that's the most speed its code lets you ask for. Jumping doesn't add any, and pressing forward in the air does nothing. But strafe jumpers hold a strafe key, turn the mouse the same way, and jump again the moment they land.
The reason is in id's own released code (Quake 1.09, made public under the GPL in 1999). In the air, the function SV_AirAccelerate never looks at your whole speed. Each frame it checks only your speed in the direction your keys point, and if that is under 30, it pushes you that way. Forward, you already have 320 in that direction, so nothing happens. Sideways, the check reads almost zero, so every frame adds a push, and turning the mouse keeps the key sideways while the pushes turn you. Friction only works on the ground, so a good strafe jumper is back in the air on the next frame. The code's own comment beside the call: "not on ground, so little effect on velocity". The function that calls it, SV_AirMove, also won't let you walk backwards for a moment after a teleporter ("hack to not let you back into teleporter").
In June 1999, testing Quake III Arena, John Carmack wrote in his .plan: "Strafe jumping is an exploitable bug." When he tried fixing it, he wrote, it "changed the normal running movement in an unfortunate way." Quake III's released code still holds a fix, switched off: "proper way (avoids strafe jump maxspeed bug), but feels bad".
The hall, the pawns and the run are our own simplified version, drawn in code: the rule and the numbers 320 and 30 are the code's, the speeds he reaches (480 after eight jumps) are our sim's, and the slow motion and the frame steps are ours.
Could you keep the key sideways at 480?
Sources: id Software's released Quake and Quake III Arena source (github.com/id-Software), John Carmack's .plan of 3 June 1999.
Sounds and music: our own, made in code.
Unofficial. Not affiliated with or endorsed by id Software. Quake is a trademark of id Software.
