We would love you to play this but your browser doesn't support HTML5 canvas.
Just use a different browser and you can happily play this game.

As a game developer it is your job to make the character move as the player wants, NOT how the player inputs controls. Even if you think your niche is having a very hard game that only makes it more important that your controls are forgiving.
Platforming Tips and Tricks
Anti Gravity Apex

Mechanic: Fall speed slows at the top of the jump (by an almost unperceivable amount)
Benefit: Allows player more control over where thy land, more time to make directional corrections
Use: Makes long jumps look more impressive, players get a few extra frames to pick up collectables that might be just out of reach

Early Fall

Mechanic: Player descends as soon as jump button is let go ending jump early
Benefit: Player able to select exactly where to land without slowing horizontal speed
Use: Good for getting in between small gaps in a wall or not bumping head on spikes

Jump Buffering

Mechanic: When the character is already in the air pressing jump moments before touching the ground will trigger jump as soon as they land.
Benefit: Pressing jump a moment too soon doesn’t feel like inputs are “dropped” and not registered by the controller.
Note: In the interactive example jump will be triggered as soon as possible if the player presses jump 116ms too early, this is probably too much leeway however I wanted to make sure it was easy to activate in the demo.

Sticky Feet on Land

Mechanic: Player gets large amount of friction if backwards is pressed on landing
Benefit: Movement is rapidly slowed so landings can be made without overshooting
Use: Stops players sliding off small platforms after making a long jump, being able to jump back and forth between platforms on either side becomes much easier.

Speed Apex

Mechanic: Direction is changed more quickly mid jump
Benefit: Improved air control
Use: Allows players to go back to the place they took off, more accurately get air collectables, or better respond to moving items.

Coyote Time

Mechanic: Jump still triggered a few frames after running off a ledge
Benefit: Players trying to make a maximum distance jump often wait until the very last moment to press jump, this helps not punishing them.
Use: More fun less about exact timing with each pixel
Note: In the interactive example after walking off an edge you have an extra 132ms where you can still press jump, this is probably too much leeway however I wanted to make sure it was easy to activate in the demo.

Clamp Falling Speed

Mechanic: Maximum falling speed
Benefit: More time to react to what is below you, More control over exactly where character lands
Use: Another tip is to zoom the camera out or move it in their falling direction just to give players a little extra time to respond to what is coming up, it's rare players need to see what they have already passed.

Catch Missed Jumps

Mechanic: If a player doesn’t quite make a jump either lift them up a few pixels or change the collision mask so their feet don’t hit the wall.
Benefit: Running over small gaps won’t instantly drop the player down. Players accidentally running off a ledge are given a little grace to get back on.
Use: A tiny bit of margin is given to players not making a jump. Really it's not helping the player because you are just training them to think they can jump that distance and will still miss just as much, however it is annoying to just fall short of a very long jump especially when exact collision masks can be hard to see with animated legs
Note: This turned out to be a mildly controversial trick. Some people said to just use ledge grabs, however that really slows down the pace of the game so use what is right for your game.

Bumped Head Correction

Mechanic: When moving upwards adjusts player position to avoid collision
Use: When jumping up a narrow gap or trying to jump out of an enclosed passage it’s really annoying as a player to hit your head and start descending right away. Bumped Head Correction just nudges the player horizontally so they don’t collide anymore and can keep traveling upwards.

Corner Clip on Jumps

Mechanic: When jumping onto a platform your feet should clip through the corners on the way up.
Benefit: Allowing the bottom part of your player sprite to pass through floors when you have an upwards trajectory allows you to maintain any speed when jumping onto a ledge, it also stops the jarring effect of just having your feet touch the corner and losing all your horizontal speed.
Note: Was used as early as Super Mario Bros.

Hold Crouch to Stay on Ledge

Mechanic: Holding Ctrl/Crouch/Light joystick push/Sneak prevents you from falling down cliffs.
Use: Holding down a button that slows the characters movement can prevent the player from falling off edges. This allows players to walk along ledges without the risk of them going over the edge.
Benefit: Great for when players want to focus all their attention on something other than their location (like sneaking around an enemy while watching what they are doing)
Note: More common in 3D games especially if the player is meant to be looking at something in particular or camera is tracking another subject that the player is meant to be watching.

Relaxed Semi-Solid

Mechanic: Semi-solid platforms are one way platforms that you can jump up through but the player will stand on top until pressing down or crouch.
Use: If the player does not have enough upwards momentum to fully get on top of a semi-solid platform lower the gravity or give them a subtle boost for the last few pixels so the player doesn’t have to spend another couple of seconds retrying the jump.
Note: Only do this if they are still holding jump because it would be equally as annoying to get placed on top when you didn’t intent to.
Note 2: When placing columns of semi solid platforms the gap between them should be big enough so the player can instantly see which ones can be made in one leap. It’s frustrating to undershoot a jump.

Variable Jump Height

Mechanic: Depending on the horizontal speed or other factors changing maximum height of jumps.
Use: This allow the mechanic of players needing a “run-up” before launching into a jump, this can be used for puzzles where players need to clear space for the jump.
Note: This can make animations look more natural
Note 2: This works best with long flowing levels where you want to encourage players to maintain their speed.



Jumping Graphs For Platformer Games

I’m gonna start calling these jumping graphs Zoetropes and hope it catches on.

Battle Block Theater
Show data sheet
Super Mario Bros
Show data sheet
Super Mario Maker 2
Show data sheet
Cuphead
Show data sheet
Limbo
Show data sheet
Speed Runners
Show data sheet
Celeste
Show data sheet
N++
Show data sheet
Sonic
Compare to new Sonic Mania
Show data sheet
Rayman Legends
Show data sheet
Risk of Rain
Show data sheet
Spelunky 2
Compare to Spelunky HD
Show data sheet
Super Meat Boy
Show data sheet
Downwell
Show data sheet
Terraria
Show data sheet
Thomas Was Alone
Show data sheet
Trine 2
Show data sheet
Braid
Show data sheet



Jump type?

Type Number Percentage
Faster up / Slower Down 7%
Slower up / Faster Down 40%
Same Speed Up And Down 53%

  • Slow going down is good if you want players to land on enemies or precise spaces.
  • Slow going up is good if you want players to jump large gaps.
  • Same both sides is good if you want a very predictable route.

I would love to collect some data about 3D games however it's just much harder to collect. Maybe if someone could connect me with developers on bigger 3D games I could get some raw debug information from them.



Source code for the interactive platformer at the top: https://github.com/DavidStrachan/GM-Perfect-Platforming-Paragon



Easy Difficulty
Game Development
By David Strachan
Get an E-mail when I post something new: Signup