Bunnyhopping from the Programmer's Perspective (2015)
adrianb.io
adrianb.io
Hopping wasn't discovered immediately. I remember we were doing things like strafing into walls to speed up movement before we knew bunny hops are possible.
I don't think idSoftware predicted how the game would be used when they were working on it. I believe the movement mechanics is just a byproduct of simplistic movement calculations.
We knew, that there is maximum forward and sidespeed but they way they add together is simple vector addition, so you could actually get higher maximum forward speed if you could point that vector forward.
We knew it is possible to preserve momentum when turning in air. We abused this jumping outside of ledges and then turning and going back to where you came from. This was very useful on dm2 where there is a ledge, a pool of laval and a wall that divides the ledge. You are supposed to press a button to actuate a ramp on which you could cross the lava but you could also just jump and turn in air violating any physical intuition. The jump can be seen here https://youtu.be/VT-johLi75w?t=128. This jump has a bunny hop component to it but it is not necessary.
What's amusing is you could always tell the keyboard players back then, by the way they slowly turned around.
Anyway, playing with the mouse was a new thing. Mouse acceleration, dpi, etc. were all just experiments. Introducing a new way to move would surely uncover bugs hidden in the physics code that simply weren't possible to hit with keyboard movement.
IMO back then you discovered it either by just playing, or by reading a game magazine. Back then (when Quake II was released), internet guides for games were less streamlined and available. Which was fun for gaming, as you could discover things on your own. It also meant things had to be less min-maxed. Think of a game like World of Warcraft or Diablo when it was just released, they have the very same problem.
Then you have games that put this front and center, and it looks completely natural, such as Warsow.
Rocket jumping could be considered a glitch. It was never really designed, it was just an outcome of the physics system in quake. But it stuck, and later on it was added to TF2 (built on a distant descendant of the quake engine) as a central mechanic. Without it, you wouldn't have cool stuff like
Halo CE: backpack reload, double melee, quick camo, etc.
Halo 2: BXR, BXB, RRX, etc.
Halo 5: slide jump, bum jump, boost jump, etc.
Warzone: slide cancel.
But then again, some glitches don’t. Like super-jumping in H2.
But instead of going back to read it again you misinterpreted my reply too (thinking I somehow was insisting on the thing you misinterpreted the first time!)
To be clear: all I said was 1) I played FPS’es for as long as they have existed (early 90s) 2) I played CS competitively. These two things are of course separate things and happened about a decade apart.
Guess I got too excited there for a second
That said, walljumps in Mario games started as frame-perfect buggy jumps and later became much easier and reliable.
If you mean the timing of the jump, that's not the case in Quake and its (spiritual and official) successors. You can press the jump key early and hold it until after you land.
(If you mean optimal bunnyhopping is frame-perfect, maybe so, but it's not the kind of mechanic you're expected to master in the sense of performing it optimally; it's more like aiming in FPS games, or most skills in real sports, in that top-level players still vary in their proficiency and even the best are imperfect.)
It's fun and it adds depth! Bunnyhopping is easy to learn but hard to master, and (together with related movement mechanics) adds a lot of freedom and dynamism to the game.
Of course, simply adding bunnyhopping to a game built around more realistic movement will drastically change how it plays -- probably for the worse, if the original was well designed. But in the case of Quake it turned out to open up the game in a way that is both superficially fun and competitively interesting. Nowadays the games in the Quake lineage are built around the existence of bunnyhopping and/or strafejumping, and their maps are designed accordingly.
> As a decidedly skill-based mechanic, competitive players love bhopping because it is so hard to master.
I have been part of QW clan somewhere between 1998 and 2002.
People learned hopping not because it was hard to master but because without it you would be at an extreme disadvantage on some maps (especially DM3 and DM6). Additionally to being able to move faster around map hopping has some other advantages: being able to jump some distances that normally would not be possible to jump (like rotundas on DM3 and DM6, over lava on DM2, etc.), being further from ground makes you get less damage from rockets striking ground and also because when you run fast constantly jumping and bobbing right and left you are harder to target directly.
Also, hopping feels good:)
Hopping isn't hard. I have been teaching people hopping by explaining how it works and giving step by step exercises. I have never had any difficulty teaching people to do this.
> This means that the player has a single frame to input the jump command without losing speed - another reason why bunnyhopping is so hard!
I don't know Quake 3 code, but at least for QW this is not true.
You can schedule the jump before you hit the ground.
What you do is the following sequence:
1. Hit the jump 2. While you in air, release the jump and press it again. Keep the jump key pressed as you are heading you are falling to the ground. 3. When you hit the ground the game engine will immediately execute the jump without applying friction penalty (provided you don't get damaged due to fall, I don't remember that part too well).
When I was teaching people to bunny hop one of foundational exercises was to learn to release and press jump again mid-flight, before you even start to learn the bunny hopping movement. You learn this standing in place before you add rotation (keep hopping while you rotate) and then add movement (start using w to move around). Only once you are comfortably timing your "reverse" jump mid flight you add strafing to the mix.
Surfing [2] was another kind of emergent behavior in counter-strike, I believe, where players can slide through slopes in a certain way and also gain speed plus air strafing.
0: https://www.youtube.com/watch?v=wMIbJbQ2iHc 1: https://www.youtube.com/watch?v=BXs0rFitP54 2: https://www.youtube.com/watch?v=BXs0rFitP54
Combined with projectiles with velocity ("inheritance") it made for some of the most exciting, tangible gameplay I've ever participated in and I miss I dearly.
All I want to do is ski.
My friend later went on to commercially release a 3D platformer, Poi. http://www.poi-game.com/
[1] Enjoy some high-school-student-in-2005 web design and writing, https://www.brightnightgames.com/games.php?game=sa&sec=devel...
Don't feel bad, neither did Nintendo! The Backwards Long Jump, or BLJ, is kinda similar to your slope-launch, where you accrue velocity, and is a core part of SM64 speed running techniques.
I wonder if, in the modern world of Unity and drag-and-drop physics, we're missing out on strange, emergent gameplay due to programmer error-- and to what degree. Some true magic was born out of weird and/or bad physics in games.
To get a true speed limit you would compute the new velocity vector, compute its magnitude and rescale the components by the ratio under the limit. Which is slightly more computationally expensive I suppose.
Goldsrc surfing was most exploitable in the form of "wall-running" by strafing against rounded surfaces(e.g. the cylindrical sewer pipe interiors in cs_siege and cs_militia, I think, both did this). Same bug, different mechanism, easier to control.
This[1] video does an excellent job of explaining the mechanic with visuals and code snippets.
Carmack's public post[2] on the "bug" of strafe-jumping is endearing in light of how much it influenced game design in the following decades.
[1] https://www.youtube.com/watch?v=rTsXO6Zicls
[2] https://www.gamers.org/pub/archives/plans/johnc@idsoftware.c...
Has anyone figured out why the Q2 era bunnyhopping has not been replicated (or has it?)?
Warsow/Warfork used to be largely Quake 2 based but never felt anything like it. Maybe Nexuis/Xonotic still do?
https://www.youtube.com/watch?v=sXat1AEtuT8
This is great example of how an accident can contribute towards such a fun mechanic into a game. This ultimately ended up spawning new game types where a mastery of movement was a key skill.
Jumps like these on action quake: https://youtu.be/8Za4g8mKBcA
Took dozens of hours of practice to accomplish without taking fall damage (which was crippling in this mod).
the value of the frame delay in physics simulations is completely overlooked, something the current generation of popular game engines seem unaware of... it means values for positions remain consistent during a frame.
with or without that insight it is eminently possible to work out how something like this works on inspection.
the article is thorough, but the stuff it explains is much more fundamental... the detail about projection is good, but the explanation for why it is there is also absent, and the variable naming in the code example is relatively bad for such a short snippet. (a float called 'vel' which once assumes is 'velocity')
... anyway, i should stop complaining and try and explain this stuff better somewhere :)
Of course, we kind of went beckwards for the last 15 years but skilled games are making a comeback. Speaking as a PC/arcades gamer,though.
So, is it a suggestion to implement a broken game mechanic.. so that experienced players can transfer their skill to other FPS games? Nice..
Who said games have to be realistic? is it a "broken game mechanic" that you can take a shot to the heart and continue living in counter strike?
There's a place for realism in video games, but there's a place where you have to let go of it as well.
But I've heard even crazier things. I remember a friend's older brother complaining about tournaments NOT forcing everyone to use the same gear and same CFG files. This ~21 years ago. Still have no idea what was this guy's thought process. I guess it was just a non-gamer's expert opinion on gaming.
Dan you imagine not being able to bind keys and/or adjust mouse speed because it's not realistic and unfair?
Sure that's part of the motivation, but more importantly it's a fun, satisfying mechanic that adds a great deal of skill-based dynamism to these games.