Expert blueprint for platformer games including precision movement (coyote time, jump buffering, variable jump height), game feel polish (squash/stretch, particle trails, camera shake), level design principles (difficulty curves, checkpoint placement), collectible systems (progression rewards), and accessibility options (assist mode, remappable controls). Based on Celeste/Hollow Knight design research. Trigger keywords: platformer, coyote_time, jump_buffer, game_feel, level_design, precision_mo…
Expert blueprint for platformer games including precision movement (coyote time, jump buffering, variable jump height), game feel polish (squash/stretch, particle trails, camera shake), level design principles (difficulty curves, checkpoint placement), collectible systems (progression rewards), and accessibility options (assist mode, remappable controls).
MANDATORY read: [advancedplatformercontroller.gd](scripts/advancedplatformercontroller.gd) plus [coyotetimer.gd](scripts/coyotetimer.gd) / [jumpbuffer.gd](scripts/jumpbuffer.gd) / [variablejump.gd](scripts/variablejump.gd). Copy those modules; do not paste coyote/buffer recipes here.
Tune only these knobs in project code after reading the scripts:
Knob
Expert default / note
Coyote window
~0.1s — without it, ledge jumps feel broken
Jump buffer
~0.15s — early press must land as jump
Variable jump
Cut upward velocity on release
Apex / fall gravity
Higher fall multiplier after apex = snappier landings
CCD
Enable cast-ray CCD for fast projectiles / dashes
Moving platforms
AnimatableBody2D + synctophysics; set platformonleave
One-ways
[onewaydrophandler.gd](scripts/onewaydrophandler.gd) — mask/layers, not ad-hoc disable
Ground: instant direction response. Air: slightly reduced accel. Gravity scaled by delta; never velocity *= delta before moveandslide().
Screen shake on heavy landings (godot-camera-systems trauma)
Squash/stretch on jump/land (visual pivot at feet)
SFX for jump/land/wall-slide
Checkpoint visual/audio feedback
Assist mode / remappable controls
MANDATORY for depth beyond decision trees and script catalog: [platformer-movement-deep.md](references/platformer-movement-deep.md). Do NOT Load on first-pass wiring — use bundled scripts/ first.
Godot-Specific Tips
CharacterBody2D vs RigidBody2D: Always use CharacterBody2D for platformer characters - precise control is essential
Physics tick rate: Consider 120Hz physics for smoother movement
One-way platforms: Use setcollisionmask_value() or dedicated collision layers
Wall detection: Use isonwall() and getwallnormal() for wall jumps
Example Games for Reference
Celeste - Perfect game feel, assist mode accessibility
Hollow Knight - Combat + platforming integration
Super Mario Bros. Wonder - Visual polish and surprises
Shovel Knight - Retro mechanics with modern feel
Reference
Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.
Official Documentation
Using CharacterBody2D — moveandslide floor/wall/ceiling reports, slope snap, and platformon_leave behavior that platformer feel depends on.
CharacterBody2D — floorconstantspeed, floorsnaplength, recoveryas_collision, and motion-mode knobs for precision controllers.
Physics introduction — collision layers/masks for player, one-ways, hazards, and projectiles without accidental overlaps.
Collision shapes (2D) — why capsule/rectangle player shapes stay stable vs concave geometry.
2D movement overview — CharacterBody vs RigidBody tradeoffs and common input→velocity patterns.
Using TileMaps — TileMapLayer collision for level geometry instead of per-sprite StaticBodies.
Using TileSets — one-way collision and physics layers authored in the tileset for drop-through platforms.
AnimatableBody2D — syncto_physics moving platforms that riders must stick to without jitter.
Camera2D — position smoothing, drag margins, and look-ahead offsets that prevent blind jumps and motion sickness.
Using AnimationTree — boolean advance conditions for idle/run/air states without unsafe expression negation.
Ray-casting — nodeless wall-slide and ledge queries via PhysicsDirectSpaceState2D.