CaddieOpen in CaddieDownload for Mac

Why Does Celeste Feel So Good to Play?

Shared by Caddie Library · Updated
Game Maker's Toolkit17:33Open on YouTube
Chapters show their main points

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

Madeline starts and stops in a handful of frames
Madeline (Celeste)6 frames to top speed3 frames to stop
Super Meat Boy24 frames to top speed
Mario (NSMBU)27 frames to stop
The curves are short enough to feel instant but long enough to feel human, so you rarely slip off a ledge.

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

Madeline has one of the shortest jumps around
Super Meat Boy6 x
Mario (NSMBU)4 x
Madeline (Celeste)3 x
A low jump with lots of hang time makes her bouncy rather than floaty.

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

A hidden 110-point stamina pool limits every climb
Unlike Meat Boy's uncontrolled wall slide, Madeline sticks like glue, but only for so long.

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

Transcript260 lines
Intro 0:00
0:03

If you’re making a platformer, you’ve got to get your main character feeling good. Because sloppy physics, unresponsive controls, floaty jumps, and imprecise movement are completely toxic in platformer design. So it’s vitally important that you get this stuff right. And if you wanted a character to learn from, you could do a lot worse than looking at Madeline - a twenty-something wannabe mountain climber, and protagonist of 2018’s award-winning platformer, Celeste.

0:36

Her controls are tight, precise, and responsive. You can put her exactly where you want, and ping from platform to platform with fluidity and accuracy. And the game not only works at a super casual level, but it even holds up when you delve deep into Celeste’s toughest challenges. So how, exactly, is this achieved? Well, to figure it out, I went on a bit of a journey. I pulled apart the game’s code. I went frame-by-frame on Madeline’s animation.

1:07

I chatted to Celeste speedrunners. And I spoke to a couple people who know the game better than anyone else… MATT: I’m Matt Thorson, director and co-creator of Celeste. NOEL: I’m Noel Berry and I’m programmer and co-creator of Celeste. And so, after all that, here’s what I learned about the killer controls of Celeste.

The Run 1:28
1:29

So let’s go back to the very beginning and look at Madeline’s most basic move: her run. A character’s run can be split into three parts: acceleration, top speed, and deceleration. As in, once you start moving the stick, how long does it take the hero to get up to top speed? And how long does it take to stop, when you let go? Getting these two curves right is especially important. Keep them short and the character will feel stiff and robotic - like in Mega Man 11.

2:01

Make them long and the character will feel heavy and lumbering to set off, like in Super Meat Boy - and slippy and uncontrollable to stop, like in Super Mario Bros 3. That game generally feels great to play, but Mario does feel like he’s running on ice at times. In Celeste, Madeline has ultra short acceleration and deceleration curves. It takes her about six frames to get to full speed - which happens roughly four times faster than Super Meat Boy.

2:30

And she comes to a stop in just three frames - about nine times faster than Mario in New Super Mario Bros U. Those digits are just high enough to make Madeline feel human, and to stop you from being able to do huge standing jumps - but short enough that she almost instantly does what you tell her to do. You’re very rarely going to slip off the edge of a platform, in this game. Her top speed is relatively low, too. And unlike Mario and Meat Boy, there’s no run button to get even more speed.

3:00

I think this is just fast enough to feel fluid, but slow enough that you feel in total control at all times.

The Jump 3:08
3:09

We can do a similar process with the jump. First, we calculate the character’s jump height by looking at high they can jump - compared to their own body size. So in New Super Mario Bros U, Mario can jump to a point that’s four times his own height, while Meat Boy can jump massively high, to about six times his own height. And then we can look at each character’s jump curve, noting the climb, hang time, and fall. This also gives us a total jump time.

3:42

So Meat Boy has a tall and lengthy jump, making the character feel rather floaty. Yarny from Unravel, on the other hand, has a really short jump, and not much hang-time, making this wooly rag-doll feel surprisingly heavy, and leaden. Madeline, again, sticks to the short end of the spectrum. She goes up and down very fast, but with quite a lot of hang time so you can line up your landing. And she can jump to about three times her own height - giving her one of the shortest jumps around.

4:14

Like her run, these numbers are enough to make her feel bouncy and animated - but about as far from floaty as you can get. There’s more that makes Madeline’s basic movement feel good, of course. There’s the fact that she can change direction very quickly, with no skidding. And how she has massive amounts of air friction, which means if you stop moving the stick in mid-air, she’ll almost instantly fall straight down. That makes it easier to land precisely where you want to.

4:45

And then there’s the more fundamental design of the game’s camera.

Other Factors 4:46
4:49

Celeste is a zoomed-out game, where - at times - the entire room is framed by a static viewpoint. This means that the screen isn’t flipping out all over the place, which makes it easier to be precise with your runs and jumps. If Madeline is the only thing moving, it’s easier to put her where you want to. The devs did have to compromise on detail for the characters and environments, but I think it was worth it. Now, Madeline’s movement is entirely hard-coded, and written in Visual Studio, with the help

How Celeste was Coded 5:14
5:19

of Microsoft’s XNA framework. So the devs didn’t use the built-in gravity or physics systems you sometimes find in game engines like Unity and Game Maker, as they preferred to have precise control over the player’s input. So I asked Matt and Noel how they came to these numbers for Madeline’s movement. MATT: A lot of it was intuitive, a lot of it was just from making a lot of platformers. To get a sense of what you want a platformer to feel like and what works.

5:48

NOEL: And a lot of it was just experimentation, right? Like trying things and getting people to playtest it, and seeing how it feels and watching them and seeing like "oh that did not work as intended", so this needs to be toned down, this needs to be better. MATT: And it changed a lot through development too. Lots of little changes - even big changes. NOEL: And like in regards to how the pacing feels when you’re platforming, like when should you be stopping and when should you be more flowing.

6:15

The mechanics changed to kind of like make that all feel better.

The Climb 6:21
6:21

So those are the basics, but there’s way more to Madeline - in the form of two extra moves you can use when scaling the mountain. One is the climb. Hold the trigger and Madeline will snap to a wall, and then can climb up it, and bounce off for a springy wall jump. Unlike Meat Boy, who slides up walls uncontrollably, Madeline sticks to surfaces like glue. Climbing is dictated by a stamina system - Madeline’s got 110 stamina points, though that’s not shown to the player, and they depreciate at different rates depending on whether you’re holding still, climbing, or doing a climb jump.

The Dash 7:00
7:01

The other move is the dash. Hit the dash button and Madeline will fire off into the direction you’re holding. She can only dash once in mid-air - elegantly represented by her hair turning blue - so you’ll either need to touch the ground or grab a crystal to replenish your stock. The dash does take control away from you, because Madeline fires in one direction at max speed. But that’s only for the first 0.15 seconds of the move.

7:27

From there, she slows down and you’re given control back, meaning you can cancel the momentum of the dash to stop yourself flinging into spikes. This gives the move more nuance and expressiveness, compared to the same, more static move in Celeste’s PICO-8 precursor.

Platforming as Problem Solving 7:44
7:45

With these three mechanics - the jump, the climb, and the dash - Celeste becomes a rapid-fire, resource-management puzzle of managing vertical space, and picking when and where to execute different moves. A jump here, a dash there, on to the wall, then back off to regain stamina and replenish your dash, before jetting off again. Each move has its own feel, speed, and level of control - giving the game an exciting, ever-changing pace.

8:13

All part of the developer’s plan, as it turns out. MATT: Like, a lot of problems in Celeste can be solved in multiple ways. Like you could either dash or you could climb. There’s some where you could only use one or the other, or you have to use both in different combinations. But the dash was always supposed to be the more chaotic option where it’s kind of harder to control, whereas the climb is more methodical and you have more precise control of it.

Art and Animation 8:40
8:40

It’s not just the numbers that makes Madeline’s moveset feels so good: art, animation, and sound effects help sell the feeling, too. Like the squash and squeeze on her jump, which really emphasises the movement in her body. The way tiny dust particles kick up, and the controller rumbles, when you hit the ground, to sell the impact. The four-frame pause and microscopic screen shake whenever you dash, which makes the jolting movement feel even more heightened.

9:08

And the trail of shadows and the blazing white contrail, which emphasise the speed and direction. Celeste isn’t a bonkers Vlambeer-style juice fest, but these subtle and short-lived effects do a lot of heavy lifting in making the game feel better - and giving feedback to your inputs and actions.

Player Forgiveness 9:27
9:28

While Celeste is a very hard game at times - and gets even harder if you go for the strawberries, and cassette tapes, and B-Side levels, and so on, the developers are actually extremely generous to the player, with an untold number of hacks and special cases in the code that make the game way less punishing. The most famous, perhaps, is the way you can jump a few frames after leaving a platform - and still spring into the air.

9:53

This is called Coyote time, named after the bits in Loony Toon cartoons where characters run off platforms and keep sprinting in mid-air. But there are loads of others hidden in the code. Dashing into a corner won’t bonk you into oblivion, but you’ll merely sail around the edge of the platform. Spikes have a small hit box, so you won’t die if you touch the very tip. These traffic light blocks will still grant you momentum, even if you’re a little late on the button press.

10:19

If you do a climb jump but quickly push away from the wall, the game switches to a wall jump and refunds the stamina. And if you jump just before touching the ground, the game will remember that and execute the command when you land. NOEL: Because it feels bad if you press jump the frame before you touch the ground and just touch the ground and there’s nothing. You want it to feel like "no, I pressed the jump button, I was right there...". It feels like the game messed up, like the game missed your input or something - it got eaten. And you don’t want that, you want to feel like you’re in control of your character and it’s doing what you want it to do. And when you do mess up it’s more on the player figuring out like “how do I solve this problem and execute it better" and not "I was one frame off and the game's has killed me".

11:03

MATT: It’s like working on the player’s intent rather than making it a precise simulation of pressing buttons at the correct time. NOEL: And the cool thing too about that is for actually really pro players, people who get really really good at it, it does come down to those frames. Even if you say "you get three frames off of a ledge, and you can still jump" - for a normal player that just makes the game feel better.

11:31

But then for pro players who actually are trying to get through each level super fast, or trying to execute something perfectly, then they get down to the frames, like "no, I have three extra frames so I can use those to get across a gap I’m not supposed to get across" MATT: They abuse it NOEL: Yeah. So you still get that frame perfect play that’s possible but then for casual players it just feels better.

Speedrunning Celeste 11:50
11:51

It’s a good point, and boy have players found ways to get the most out of the game’s movement code. I asked TGH, the world’s top-ranking Celeste speedrunner, to explain some of the advanced techniques he uses to turn the game’s toughest stages into graceful, effortless dances. First, there’s the dash-cancel, where a forward dash can be cancelled at the last second and turned into a massive jump that flings you through the air with all the momentum of the dash.

12:23

Do this while crouching and you’ll get the hyperdash, which is a lower but faster jump. You can extend these two moves by separating the dash and jump inputs slightly more, so Madeline regains her dash in mid-air. And “for even more speed”, says TGH, “after extending a hyperdash you can dash diagonally down-forward to chain momentum, and in some cases you can gain ludicrous speed". This is known as an ultradash. You can also dash cancel upward along a wall for boosted height and vertical speed.

12:55

Which is called an up-hyper or wallbounce. There are other techniques too, and TGH says “it’s amazing just how fluidly all these techniques come together and work so well with the level design.” That’s likely because almost of them are actually intended by the developers and some are even taught to you in the game. Not that I can actually perform them, mind you.

Level Design 13:20
13:19

It was important to Matt and Noel that Madeline’s movement felt great, even if you don’t have tricky, well-designed levels to explore. After all, this was one of the key suggestions they had when I asked for the tips they might give to someone making their own platformer character. NOEL: Just make sure that the moment to moment feels good so that when someone’s just sitting there with a controller, the room could be empty but they can move their character around, make that feel good MATT: With no goals or anything, just make sure it’s fun to be that character.

13:47

I remember playing Mario Sunshine and just running around Delfino Plaza for hours beause it was just fun. NOEL: You can flip off stuff and all these things. Just the player itself can do all these cool interactive things that just feel fun. But making levels - and adding in new mechanics like pinball bumpers, trampoline clouds, moving blocks, pelting wind, and kamikaze hotel owners - can actually force you to go back to the movement code, and change how things work.

14:15

MATT: We decided early on what we wanted Madeline to be able to do, but the details of the numbers defintiely changed, and then the levels also changed, in tandem with that. So you basically get the player character to where it feels alright, you know it’s not perfect, you know you have to do testing and stuff, but you need levels to test too. So you make a bunch of levels and then you test, and you find out "oh the player character has to change", and then you have to change 20 levels.

14:44

You have to let different parts change other parts of the game, and let it slowly reveal what it wants to be. NOEL: And you have to be willing to throw away stuff sometimes too. Like "this is a cool idea and a cool direction but it wasn’t working". It’s progressing what the game is because you’re learning about what the game actually is and figuring things out so even though you’re throwing work away, it’s a learning experience that ultimately makes the game better.

15:11

MATT: Yeah, it’s still work that goes towards completing the game, even if it doesn’t manifest as content. It becomes part of your knowledge that you use to make the rest of the content.

Conclusion 15:23
15:23

Now, Celeste shows a great way to do very tight and responsive controls - but that’s just one way to do a platformer. Tweak those curves and you can get very different results, like the realistic animation of Playdead’s Inside, or the intense air-control of N+. Or Sonic games, which are all about building and maintaining momentum, so it’s suitable that Sonic has a ridiculously long acceleration curve - and, likewise, struggles to come to a complete stop.

15:54

Still, I think Madeline’s a really good place to start when thinking about platformer character design. Matt and Noel’s work shows the importance of getting the curves right when building basic movement. Adding mechanics that introduce very different ways to navigate the space. Using feedback to emphasise movement. Being forgiving about pixel precision. Increasing the skill ceiling with advanced movement. And not being afraid to test, tweak, and toss away work throughout the lengthy process of getting this stuff right.

Patreon Credits 16:28
16:29

Thanks so much for watching. There's a post on my Patreon now where I talk more about the run and jump graphs in this episode, and those who back the show at $5 or more can watch the full interview with Matt and Noel right now. MARK: Did you come up with the term Coyote Time, Matt? Was that your invention? MATT: No, that was a player, I think. Wasn’t it? NOEL: I don’t know, actually MATT: I think it was in the PICO-8 one, a player called it Coyote Time and we were like that’s a good name.

16:59

NOEL: I’ve heard it used for other platformers too. MATT: Okay. I think it comes from players. I don’t think developers made that term up. Which is cool, I think developers should take it. NOEL: Yeah, it’s a good word. Sounds like we need to do some detective work. Please remember that the GMTK Game Jam begins this Friday, so keep an eye on itch.io and this YouTube channel for more info. And don’t forget to subscribe and hit the bell button if you want new game design content to keep appearing in your sub box.

17:31

See ya later.