| Concept | Celeste 2018 |
|---|
| Coyote time | |
| Gravity | |
| Jump | |
| Variable jump height | Jump() sets vertical speed to JumpSpeed plus any platform lift boost, saves it as varJumpSpeed, starts varJumpTimer at VarJumpTime, and zeroes the grace timer. T3HalfGravThreshold is 40 px/s, the vertical speed below which (in either direction) holding jump halves gravity. T3- Gravity halves while |
Speed.Y| is under HalfGravThreshold and jump is held (or auto-jump is on), so a held jump hangs at the top. T3 VarJumpTime, how long holding jump can keep the take-off speed, is 0.2 s. T3- While
varJumpTimer runs, holding jump keeps Madeline rising no slower than varJumpSpeed, canceling gravity; releasing zeroes the timer and cuts no speed. T3 - In each update,
Player.Update ticks both jump timers, the state machine runs NormalUpdate (gravity, hold, and new jump), and then MoveV applies Speed.Y * Engine.DeltaTime. T3 - Celeste's developers describe the game as locked to 60 updates per second, so the bundled PICO-8 port skips every second frame. T2
- Simulating the jump code (flat ground, no lift boost,
(float)0.0166667 step) gives apexes of 7 px tapped and 27 px held, airtimes 15 and 39 updates; an exact 1/60 s step gives 29 px held in 40. T4
|