celeste-momentum-platforming

Implements Celeste-style 2D platformer movement with coyote time, dash, and wall mechanics in Godot 4.

66|4|Updated Feb 26, 2026
One-click install
npx skills add https://github.com/SummerEngine/summer --skill celeste-momentum-platforming-summerengine
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: celeste-momentum-platforming
Source: https://github.com/SummerEngine/summer/tree/main/library/skills/celeste-momentum-platforming
Command: npx skills add https://github.com/SummerEngine/summer --skill celeste-momentum-platforming-summerengine

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? 2D platformer controllers often feel unresponsive or unfair because they lack forgiveness mechanics like coyote time, variable jump height, and corner correction. This Skill provides the exact tuning constants, state machine architecture, and behavioral patterns extracted from Celeste's Player.cs source so you can build a precision movement controller in Godot 4 without reverse-engineering the feel yourself. ## Core Features & Use Cases - Complete tuning tables: Verbatim constants from Celeste's Player.cs covering gravity, running, jumping, dashing, wall interaction, and climb stamina, with notes on each value's feel role. - State machine architecture: An enum-driven state machine (Normal, Climb, Dash, and more) with a GDScript reference skeleton for CharacterBody2D. - Forgiveness systems: Coyote time, variable jump windows, pixel-scale corner correction, wall-jump force locks, and squish-safety cascades that make near-miss inputs succeed. - Use Case: You are prototyping a precision platformer and the jump feels unfair. Apply the coyote time (100 ms), variable jump window (200 ms), and upward corner correction (4 px) patterns to immediately fix the perceived unresponsiveness. ## Quick Start Ask your agent to implement a Celeste-style 2D platformer controller with coyote time, variable jumps, an 8-way dash, and wall jumps using this skill's tuning constants.

Frequently Asked Questions about celeste-momentum-platforming

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add coyote time to a 2D platformer in Godot?

Coyote time grants a 100 ms window where jump input remains valid after leaving the ground. Track a jump grace timer that resets to 0.1 seconds while on the floor and counts down in the air, then accept jump input whenever the timer is above zero.

How do I implement a Celeste-style dash in Godot 4?

A Celeste-style dash sets velocity to 240 px/s along an 8-way input direction for 0.15 seconds with gravity disabled, then transitions back with residual speed of 160 px/s. Add a 0.2 second cooldown and 4 px corner correction for near-miss collisions.

Why does my platformer controller feel unresponsive or unfair?

Missing forgiveness systems are the usual cause: coyote time, variable jump height, and corner correction carry most of the tight feel. Also check that air acceleration uses a multiplier around 0.65 of ground acceleration rather than full ground control.

Does this movement system work with RigidBody2D physics?

No, this controller is designed for CharacterBody2D with direct velocity manipulation and move_and_slide. It is not suited for physics-driven RigidBody movement, 3D character controllers, or games wanting floaty arcade jump physics.

How does climb stamina work in Celeste-style movement?

Climbing uses a 110-point stamina pool with per-second costs: about 45.5 per second climbing up, 10 per second hanging still, and a flat 27.5 per climb jump. Below 20 stamina the climb degrades, and at zero the character slips instead of dropping instantly.

Can I use these tuning values at a different resolution or scale?

Yes, but preserve the ratios rather than copying absolute pixel values. Key ratios include DashSpeed at roughly 2.67 times MaxRun and RunAccel at roughly 11 times MaxRun, which maintain the feel when your pixels-per-meter differs.