Everyone who has played a platformer knows the feeling of a jump that did not come out, and nobody can say why. The character was right there. The button was pressed. Nothing happened.
The honest answer is that the game was being literal with you, and a good platformer is never literal. It cheats, constantly, in your favour, in four specific places. Here is where ours does it and what each one is worth.
The problem with being correct
Start with the naive version, which is what you write first and what feels wrong immediately.
Each frame, ask: is the jump button down, and is the character standing on something? If both are true, apply an upward impulse. It is obviously correct. It is also unpleasant to play, and the reason is that both of those questions are being asked at a single instant, sixty times a second, about a human being who does not operate on frame boundaries.
Two failures fall straight out of it. You press jump one frame after walking off a ledge, and nothing happens, because you are no longer standing on anything. You press jump one frame before landing, and nothing happens, because you were not standing on anything yet. In both cases you pressed the button at what any person would call the right moment, and the game told you that you did not.
Cheat one: coyote time
After the character leaves the ground, the game keeps pretending it is still there for a short window.
In our build that window is eight frames, which at sixty frames a second is about a seventh of a second. Standing on the floor sets a counter to eight. Every airborne frame ticks it down. The jump check asks whether that counter is above zero rather than whether the character is currently on the ground.
The result is that walking off a ledge and jumping still works, right up until it very clearly should not. The name comes from the cartoon coyote who runs off a cliff and hangs there until he looks down.
Nobody has ever told us they noticed coyote time. That is the point. It is only ever noticed by its absence, and then it is not described as a missing feature, it is described as the game being unfair.
Cheat two: input buffering
The mirror of the same problem, and the one that produces the specific complaint of "I definitely pressed it".
Pressing jump sets a second counter to eight frames. That counter also ticks down each frame. The jump fires when both counters are above zero at once.
So a press a few frames before landing is not thrown away, it is remembered, and it fires on the first frame it becomes legal. What the player experiences is a jump that comes out the instant they touch the ground, which is precisely what they were asking for and exactly what the literal version refused to do.
Coyote time forgives being slightly late. Buffering forgives being slightly early. Together they cover almost every jump a human means to make.
Cheat three: the jump you can cut
Hold the button for a big jump, tap it for a small one. Every platformer since the mid eighties does this, and the way it is done is the opposite of what it looks like.
It is tempting to add upward force for as long as the button is held. That gives a floaty, rocket-powered feeling and makes the arc depend on framerate in ways that are painful to tune.
What actually happens is that the jump starts at full strength, once, and then releasing the button early clips the upward speed to a smaller value. One line: if the button is not held and the character is still rising quickly, the rising is reduced immediately.
The player reads this as control over height. Mechanically it is a single impulse plus a brake, which is far easier to reason about and gives the same feel.

Cheat four: weight
The last one is not about the jump at all, it is about the run, and it changes the jump more than the jump settings do.
Holding left or right does not set the speed. It adds to it, up to a maximum. Letting go does not stop the character, it multiplies the speed by a friction value each frame so it decays. There is a small deadzone at the bottom where a very slow drift is snapped to a standstill, because otherwise the character never quite stops and the idle animation twitches.
Falling has a matching rule: gravity is added every frame, but the downward speed is clamped so a long fall reaches a terminal velocity instead of accelerating forever. Without that clamp a long drop becomes unrecoverable and, worse, fast enough to pass straight through a platform between frames.
The numbers in this build are a gravity of 0.88 per frame, a terminal velocity of 26, a top running speed of 7.6, an acceleration of 1.6 and a friction of 0.78, against a character 168 units tall on a 1672 by 941 stage. Those are not universal constants. They are the result of changing a number, playing the level, and changing it again, which is the only method anyone has ever found for this.
Why the tuning happens first
The order matters more than the values. Jump arcs get tuned before the level is laid out, because platform placement is downstream of how far a jump travels. Get that backwards and you end up either moving every platform or, more often, quietly changing the jump to fit the level and making it feel wrong everywhere else.
This is the same reason a walk cycle has to be driven by distance covered rather than by the clock, which is a longer story in how to make a character walk without it looking wrong.
What this means for a commission
None of it shows in a screenshot. Four cheats, perhaps thirty lines between them, and they are the difference between a game somebody finishes and a game somebody puts down after two minutes without being able to say why. Work sold on screenshots does not include them.
It is also where the difficulty dial actually lives. A gentler game is not one with fewer obstacles, it is one with a longer coyote window and a more forgiving landing. We build one game that has to work for a four year old and an adult in the same room, and the settings are most of how, which is covered here.
And it is testable. Every one of these behaviours can be proved rather than felt, which is the subject of proving a game is actually finished.
You can play the build these numbers come from in the arcade. Walk off the edge of a shelf and jump slightly too late; it will still work.
How the game reads the controls in the first place, and why holding two at once is not automatic, is in reading the controls properly.



