The bottom line
Celeste feels good because Madeline's short, snappy movement is paired with distinct moves, subtle feedback and generous forgiveness that reads the player's intent. Any platformer can copy this by tuning its curves, forgiving imprecision, and testing and tweaking throughout development.
Key takeaways
- Madeline's run and jump use very short curves, so she does what you tell her almost instantly. 1:19
- She reaches full speed in about six frames and stops in three, about nine times faster than Mario in New Super Mario Bros U.
- She jumps about three times her own height, one of the shortest jumps around, with enough hang time to line up a landing.
- Three moves with different feels turn platforming into a fast puzzle of choosing the right move. 6:21
- The climb is methodical and precise, while the dash is the more chaotic option.
- The dash fires at max speed for only the first 0.15 seconds, then gives control back so you can cancel its momentum.
- Small animation, sound and rumble effects give feedback that makes each action feel real. 8:40
- Every dash has a four-frame pause and a tiny screen shake, plus shadow trails and a white contrail.
- Hidden forgiveness in the code works on the player's intent, not on frame-perfect button presses. 9:27
- Coyote time lets you jump a few frames after leaving a ledge, and a jump pressed just before landing is remembered.
- Spikes have a small hit box, and dashing into a corner sails you around the edge instead of stopping you.
- The same leniency lets speedrunners build advanced tricks, and the movement is refined by testing alongside the levels. 11:50
- Extra frames of leniency let top players dash-cancel, hyperdash and ultradash for speed.
- Changing the player character can force changes to 20 levels, so the devs tested, tweaked and threw work away.
It's like working on the player's intent rather than making it a precise simulation of pressing buttons at the correct time.
Matt Thorson
Chapter summaries
0:00 Intro
A platformer lives or dies on how its hero controls, and Madeline's controls hold up for casual and expert players alike.
- Sloppy movement is toxic to platformers. 0:09
- Floaty jumps and unresponsive controls ruin it.
- Madeline lands exactly where you aim.
- Madeline is a twenty-something wannabe mountain climber in the award-winning 2018 game Celeste.
- The controls work for a casual player and still hold up in the toughest challenges.
1:28 The Run
Run feel comes from the acceleration and deceleration curves, and Madeline's sit at the short end without turning stiff.
- A run has three parts, and the two curves matter most. 1:36
- Too short feels stiff, like Mega Man 11.
- Too long feels heavy or slippy.
- Super Meat Boy feels lumbering to start. Mario in Super Mario Bros 3 feels like he runs on ice.
- Madeline gets to full speed about four times faster than Super Meat Boy.
- A low top speed keeps you in control. 2:53
- There is no run button for extra speed.
- The curves are just long enough to feel human and to stop huge standing jumps.
- You rarely slip off the edge of a platform.
3:08 The Jump
Jump feel depends on height relative to body size and on the shape of the curve, and Madeline's is short but bouncy.
- Jump height and curve set how floaty or heavy a hero feels. 3:20
- Mario jumps four times his height. Meat Boy jumps about six.
- Yarny from Unravel barely hangs, so feels leaden.
- The curve has a climb, hang time and fall, which add up to a total jump time.
- Madeline's numbers make her bouncy and animated, but far from floaty.
4:46 Other Factors
A fixed, zoomed-out camera helps precision as much as the movement numbers.
- A static camera makes it easier to place Madeline. 4:49
- Sometimes the whole room is in frame.
- The cost is less detail in characters and environments.
- Madeline changes direction fast with no skidding.
- Heavy air friction drops her straight down when you let go of the stick, so landings are easier.
5:14 How Celeste was Coded
Hand-written movement code and constant playtesting gave the devs full control of the feel.
- Movement is hard-coded, not built on an engine's physics. 5:13
- Written in Visual Studio with Microsoft's XNA framework.
- The devs wanted precise control over player input.
- Unity and Game Maker have built-in gravity systems, and the devs skipped them.
- The numbers came from intuition, experimentation and playtests. Matt: it changed a lot through development too.
6:21 The Climb
The climb is a sticky, stamina-limited move that gives careful control.
- Madeline grips walls like glue, but only for so long. 6:30
- Hold the trigger to snap to a wall, then climb or wall jump.
- Stamina is hidden from the player.
- Meat Boy slides up walls uncontrollably. Madeline does not.
- Stamina starts at 110 points and drains at different rates when holding still, climbing or climb jumping.
7:00 The Dash
The dash is limited to one use in the air, which makes it a resource to manage.
- One air dash per refill makes each dash a choice. 7:03
- Her hair turns blue while a dash is ready.
- Touch the ground or grab a crystal to refill it.
- She fires toward the direction you hold.
- The dash in Celeste's PICO-8 precursor was more static and less expressive.
7:44 Platforming as Problem Solving
Three moves with different feels turn levels into puzzles with more than one answer.
- Levels are puzzles of choosing which move to use where. 7:45
- Jump, dash, wall, then regain stamina and dash.
- Each move has its own speed and control.
- Some problems allow only a dash or only a climb. Others need both in different combinations.
- The mix of moves gives the game an exciting, ever-changing pace.
8:40 Art and Animation
Small, short effects make each move feel physical without turning the game into a juice fest.
- Subtle animation, particles and rumble sell every movement. 8:49
- Squash and squeeze on the jump stretches her body.
- Dust and controller rumble mark each landing.
- Celeste is not a bonkers Vlambeer-style juice fest.
- The effects are short-lived, but they do heavy lifting as feedback on your inputs.
9:27 Player Forgiveness
Many small special cases in the code protect what the player meant to do, so a miss feels like the player's own error.
- Forgiveness reaches well beyond coyote time and spikes. 9:44
- Traffic light blocks still give momentum if the button press is a little late.
- A climb jump followed by a quick push away from the wall becomes a wall jump and refunds the stamina.
- Celeste is hard, and harder with strawberries, cassette tapes and B-Side levels.
- The code holds an "untold number of hacks and special cases" that make it less punishing.
- An ignored input makes the player feel the game cheated. 10:32
- Noel says a swallowed press feels like the game missed your input.
- The aim is that the player feels in control of the character.
- When players fail, they ask how to execute better, not whether they were one frame off.
11:50 Speedrunning Celeste
Leniency that helps casual players becomes a skill ceiling for experts, and most advanced tricks are intended.
- Pros turn the extra frames into speed. 11:31
- Top players spend the spare frames to cross gaps they are not supposed to cross.
- Matt's word for it: They abuse it.
- Casual players just feel the game is better, while frame-perfect play stays possible.
- The advanced techniques are mostly intended and fit the levels. 13:08
- A dash-cancel turns a forward dash into a big jump that keeps the dash's momentum.
- Dash-cancelling upward along a wall gives the up-hyper, or wallbounce.
- Crouching during the dash-cancel gives the hyperdash, a lower but faster jump.
- Separating dash and jump slightly more lets Madeline regain her dash in mid-air.
- Speedrunner TGH says the techniques come together and work so well with the level design.
13:20 Level Design
Good movement must work with no goals, and levels and character then shape each other.
- Moving the character should be fun in an empty room. 13:34
- Noel says the room could be empty and moving around should still feel good.
- Matt recalls running around Delfino Plaza in Mario Sunshine for hours.
- The player can do interactive things that just feel fun, like flipping off objects.
- New level mechanics send designers back to the movement code. 14:01
- Pinball bumpers, trampoline clouds, moving blocks and pelting wind all test the movement.
- What Madeline could do was decided early, but the numbers kept changing.
- Matt says to let it slowly reveal what it wants to be.
- Discarded work still adds knowledge that goes into the rest of the content.
15:23 Conclusion
Tight, responsive control is one way to build a platformer, and tuning the curves gives very different ones.
- Changing the curves changes the character's whole feel. 15:32
- Inside gets realistic animation and N+ gets intense air-control.
- Sonic has a very long acceleration curve and struggles to stop, which suits a game about momentum.
- Madeline is still a good starting point for platformer character design.
- The lessons: right curves, varied mechanics, feedback, forgiveness about pixel precision, a higher skill ceiling, and testing and tossing work.
In the growth library
Mark Brown, with Maddy (then Matt) Thorson and Noel Berry, creator of Game Maker's Toolkit, interviewing the co-creators of Celeste. Shows how a platformer hero gets tight, responsive controls through short run and jump curves, subtle feedback, hidden forgiveness and constant tuning. The worth-watching part is the frame-level breakdown of Madeline's movement against Mario, Super Meat Boy and Sonic, plus the developers explaining their forgiveness hacks.
More from Game Maker's Toolkit · The whole library, and ask it anything