(Ed Note: I’m backing up my GYP articles in case something happens to GYP, like how it was down recently for multiple days while the paid steam mods thing was going on)
Objects in real life may always jump or bounce in a perfect curve, but in games the designer is free to imagine many different ways for characters to jump around. To allow players greater control over their character, many games incorporate the idea that by pressing the button longer, the character will jump higher. Despite the concept being rather simple, different game designers have implemented this mechanic in a massive number of ways. It’s worth paying attention to how they did it because each method serves the game it comes from to a different end and gives the player a distinct feeling that they associate with that game. That and it’s interesting how programmers can come to so many different solutions for what a layperson might not ever consciously notice is different.
A short introduction to game physics
In case you didn’t pay attention in physics class, here’s a quick and dirty explanation of how jumping tends to work in video games. I’ll try to keep the math simple so everyone can follow along. There are four basic numbers you need to keep in mind, the initial jumping velocity (or the force of the jump when it starts), the current velocity (which is how fast the character is going in that moment of time), the character’s position (which is how high up the character is), and how strong the gravity is.
Game time is calculated in something called frames. A frame is the shortest length of time across which something can occur. Most good games run at 60 frames per second, including all the ones in this article, meaning they change what’s onscreen 60 times every second. Every frame the character’s position has the character’s current velocity added to it, meaning they move the distance specified by the velocity. Then the current velocity has the gravity subtracted from it, meaning that if you were moving up, you’re now moving a little less fast up this frame, and a little less next frame until eventually you’re not moving up at all, and instead you’re falling faster and faster.
The initial jump velocity and the gravity are constant, meaning they do not change. When a jump is started, the character’s current velocity is set to the initial jump velocity. Then the character is moved by that velocity every frame, while gravity eventually makes it so that velocity is negative, bringing the character back down again. Together these things create a parabolic curve, which you might remember from algebra class. This smooth curve can be seen in games with simple jumps that don’t let you control their height at all, like Castlevania 1 and 2, Donkey Kong Arcade, or Metal Slug.
With that out of the way, lets get into these jumps.
Megaman’s jump is a great introduction to multi-height jump physics because it works in a very simple way. If the A button is held, then you go up, when it is released you immediately go down. Notable is that Megaman’s jump still has gravity applied to it, so if it’s held down all the way, he’ll jump in a smooth arc, slowing down as he goes up, and speeding up as he comes down.
Megaman’s jump is useful in his games because players need to jump and shoot enemies that come at Megaman from precise heights. Because his momentum instantly reverses when he starts falling, it can appear very twitchy, but it also lets him do jumps without worrying about going too high or too far at the apex. Similarly this ties into the feeling of the character: Megaman has no acceleration or deceleration, so the control over him is very direct. It’s only fitting that this should be mirrored in his jump.
Mario’s jump is actually a surprisingly complex solution. Going into writing this article, I expected it to have a constant speed upwards, then you run out of jump time and gravity pulls him back down until he hits terminal velocity for a neat little curve at the top of the jump and that’s that. What actually happens is, while Mario is jumping and A is held down, he has a significantly lower gravity than when he is falling, so he is slowly losing momentum on the way up. When you release A or he runs out of upwards momentum, this heavier gravity kicks in and he suddenly gains a lot of downwards momentum.
In addition to this, Mario has different strengths of jump and gravities depending on how fast he’s going. When he’s going at mid-speed, like when walking, his jumping power stays the same, but the gravity applied to him both as he rises and as he falls are reduced. While walking Mario can jump slightly higher due to this reduced gravity. When he’s going at top speed, like when running, his initial jumping force is increased, as is the gravity applied to him as he rises and falls. This leads to him being able to jump even higher, but rising and falling at a quicker speed as well.
The most natural consequence of this behavior is that players have fairly precise control over how high they jump, yet the jump appears close to a smooth parabolic curve, working well for the level of precision that the developers wanted to give players, but also meshing with Mario’s sense of acceleration and lower friction on the ground than Megaman. Having higher rising and falling speeds while running gives players a trade-off between easy, consistent control and moving faster while jumping to higher heights.
You can see the specifics on Mario’s Physics here.
In Sonic smooth movement and a sense of speed were a priority. They programmed the jump to work completely normal, with an initial velocity that gets pulled down by gravity in a normal parabolic arc as long as the jump button is held down. Where it gets interesting is if you release the jump button before you reach the top of the jump arc.
If the jump button is released when sonic is traveling upwards, it will brake his velocity to a small upwards velocity, so sonic is still traveling upwards but at a slower rate. Eventually gravity brings sonic back down. This means that his movement is in a smooth arc no matter how long the button is held. Because Sonic continues moving up when jump is let go of, it appears he flows smoothly from moving upwards into moving downwards.
You can find more information on Sonic Physics here.
Super Smash Bros.
Super Smash Bros. uses a completely different solution from all of the above games. Instead of controlling your jump height by holding the button longer in the air, it’s controlled by holding it longer on the ground.
When you press jump in Super Smash Bros., your character actually enters a short squatting animation before they jump. The animation is so short, most people don’t notice it. There are only two jump heights in Smash Bros., which fans call the Short Hop and Full Jump. Which one you get is determined by whether you release the button before or after the jump squat animation. The difference between them is purely how much initial velocity is put into the jump.
Smash Bros. has an interesting solution to the jumping height problem, and it works well for Smash because by freeing up the button while characters are in the air, players can better control what attacks their character is doing and which way they’re moving simultaneously to jumping. That and it still feels to the average person that they’re holding the button into the jump and putting more or less force into each jump. It has the side effect of always creating a perfectly smooth jump arc.
King of Fighters
King of Fighters has a very similar solution to Smash Bros., press up to jump and release it before the pre-jump frames end to do a short hop instead of a full jump. King of Fighters has less pre-jump frames than Smash Bros., so it pulls a sneaky trick to differentiate between Short Hops and Full Jumps: A few frames into the air you can release the up direction and you will still get the Short Hop. The velocity difference between the Short Hop and Full Jump is so small that these frames blend right in.
In King of Fighters XIII this was changed slightly, the pre-jump frames were increased and short hopping is based purely on them. This means KoF XIII jumps feel a bit more “sticky” than its predecessors and it takes slightly longer to get into the air.
King of Fighters having the jump style it does is tremendously helpful to it as a fighting game, it allows people to aggress more safely in the air than in games like Street Fighter where they normally have a huge risk of being anti-aired. It’s helpful to have the stick or directional pad released so people can do special attacks and command normals in the air.
Short Hopping in King of Fighters created a whole new way to mix people up on the ground, because to beat Short Hops, it was best to use standing punches. Then crouching kicks would go under the standing punches to hit the opponent’s legs, but they’d also go under anyone Short Hopping over. This creates a loop like rock paper scissors. This really shook up the standard fighting game formula and became a trademark of SNK fighting games.
Between these different jumps are a diverse range of solutions to a common problem, each expressing the identity of the game and playing into its overall design. I hope this offers an insight into the process behind how your favorite game was tuned to feel the way it does and gives you a reason to look a bit deeper at how a game creates the kinaesthetic feeling that defines it, or for what purpose it may do so.