Platformer Juice: The Celeste Model
A deep analysis of Celeste's feedback stack: coyote time, jump buffering, dash trail, death particle burst, stamina wobble, and crystal heart fanfare. How each system reinforces Madeline's emotional arc and what you can apply to any platformer.
29 April 2026 ยท 5 min read
Platformers live and die by movement feel. Every other system in a platformer - level design, enemies, collectibles, narrative - is scaffolding around the jump. If the jump feels wrong, nothing else matters. If the jump feels right, players will happily run through the same screen dozens of times just to feel it again. Celeste, Super Meat Boy, Hollow Knight, and Ori are the canonical references for what right looks like.
The philosophy these games share is 'weight that rewards skill.' The character should feel like they have mass - their movement should communicate physical presence - but that mass should be controllable and expressive. The player should feel skilled for navigating well, not lucky. Every parameter in a platformer's movement system is in service of that feeling.
The Jump: The Most Studied Action in Game Design
A good platformer jump combines three moments: a snappy takeoff, an expressive arc, and a definitive landing. The takeoff should include a brief squash frame (the character compresses slightly before launching) and a stretch frame at peak velocity (the character elongates as they accelerate upward). These two frames - often called the squash and stretch - take 2 frames total and can triple the perceived physicality of the jump.
The arc should not be a symmetric parabola. A symmetric arc - equal time rising and falling - feels floaty and uncontrolled. The Celeste model uses a high fall multiplier that makes the descent faster than the ascent, keeping the player at peak jump height briefly before pulling them down sharply. This creates a 'time at the top' window where the player has maximum airborne control, then a fast, decisive descent.
Celeste's specific parameter set - studied and documented by the game development community - includes: 5-frame coyote time, 5-frame input buffer, variable jump height via button-hold duration, air friction allowing mid-air direction nudging, and a fall multiplier producing fast snappy descents. Every parameter was tuned over hundreds of playtests. The source code is publicly available and worth studying.
Movement Juice Checklist
The following checklist represents the minimum implementation for a platformer that feels polished rather than prototypal. Items marked essential will be noticed by players when absent; the rest improve quality but can be added incrementally:
Essential movement: coyote time (5 to 8 frames), input buffering for jump (100 to 150ms), variable jump height (cut arc short on button release). These three make the controls feel fair. Without them, players will consistently feel the game is cheating them even when it technically isn't.
Animation feedback: squash on landing (brief Y-scale compression, proportional to fall distance), stretch on jump takeoff (brief Y-scale elongation on the launch frame), dust or impact particle on landing (scales with fall height). These make the physics feel physical. A character that lands with no squash feels like a rigid object hitting a surface, not a living creature.
Camera behaviour: camera lead ahead of the player's movement direction rather than centred on the character, and camera Y-lag on vertical movement to provide visual spaciousness above the player during jumps. Together these give the player more information about what they're jumping into, reducing 'blind jump' frustration significantly.
Ledge magnetism: a small snap zone at platform edges that catches the player when they would otherwise slide off a narrow platform landing. Implemented as a short-range position correction toward the platform centre when the character is within a few pixels of the edge and not moving horizontally. Players never notice it exists - they just stop experiencing the frustrating 'I was right on the edge' miss.
Death Feel: Making Failure Bearable
In high-difficulty platformers, the player dies constantly. Celeste players die hundreds of times completing a single chapter. Super Meat Boy players die thousands of times in a full run. The death animation and respawn sequence must be designed for repetition: fast enough that frustration doesn't accumulate, visually clear enough that the player always knows they died rather than got stuck, and ideally slightly satisfying so each death is a micro-moment rather than pure punishment.
Celeste's death is the reference: instant pink burst particle effect, brief screen flash, then immediate respawn at the last checkpoint. Total downtime under 0.5 seconds. The burst effect is visually satisfying in itself - it feels like a small explosion, not a failure. The lack of a death animation or UI screen means the player's frustration window is measured in frames rather than seconds.
The key principle: death downtime is not recovery time for the player, it is frustration amplification time. Every second between death and being back in control makes the death feel worse. Cut the death sequence to the minimum viable duration that clearly communicates 'you died' - then get the player back in control as fast as possible. The game they love is the part where they're playing, not the part where they're waiting.
Secondary Animation and Environmental Feedback
Secondary animation - movement on elements adjacent to the primary action - adds depth without complexity. A cape or hair that trails behind during fast movement. Arm swing in the run cycle. A dust trail at high speed. These elements are not mechanically significant but they communicate velocity and energy in a way that raw movement speed numbers cannot. They make the character feel inhabited rather than programmatic.
Wall-jump deserves its own distinct feedback signature: a different sound from a regular jump, particles emitting at the angle of the wall rather than straight down, and a squash-and-stretch in the horizontal rather than vertical axis. These distinctions teach the player that a wall-jump happened without a UI notification, and they make the mechanic feel like its own distinct action rather than a variant of the ground jump.
Part of a series
Genre-Specific Juice