Coyote Time
Coyote time lets the player still jump for a split second after running off a ledge. A late press then counts as a normal jump instead of doing nothing, so the game feels fair. Start at about 0.09 seconds: long enough to catch late presses, short enough not to feel like an extra jump.

Paste this to your AI
Copy it into Claude, Cursor or ChatGPT. It already has good values and the usual mistakes in it.
Add "Coyote Time" to my game.
What it should do: Players judge a ledge by eye and often press jump a moment too late. Without coyote time they fall and feel the game ignored them. With it, they get the jump they meant.
Build it exactly as this state machine. First check that it fits my game, then build it like this:
```mermaid
stateDiagram-v2
[*] --> ground
ground: On the ground
rising: Rising
grace: Extra moment
falling: Falling
ground --> rising: press
ground --> grace: walks off the edge
grace --> rising: press in time
grace --> falling: extra moment runs out
grace --> ground: lands
rising --> falling: reaches the top
falling --> falling: late press does nothing
falling --> ground: lands
```
Use these starting values:
- coyoteTime: 0.09 s
- jumpSpeed: 12 units/s
- gravity: 32 units/s²
- maxFallSpeed: 20 units/s
Watch out for these common mistakes:
- The player can jump twice: Tell your AI: end the extra moment as soon as a jump starts, and treat the character as in the air from then on.
- The extra moment is sometimes a little longer: Tell your AI: treat a tiny bit of time left as none, or count whole game steps at a fixed rate.
- Being thrown is not walking off: Tell your AI: end the extra moment whenever anything other than walking takes the character off the ground.
- The late press uses up the wrong jump: Tell your AI: look at the extra moment before the air jump, so a late press counts as the ground jump.
- Landing right at an edge: Tell your AI: fill the extra moment on the step the character lands, not on the step after it.
Do not change anything else in the game. Do not claim anything without proof: model what it takes, and show me what your solution rests on and how I can see that it works. If you cannot show something, say you do not know. When you are done, tell me in plain words how to try it.Or skip this and connect the MCP: your AI then finds all of this by itself.Connect the MCP
What it does
Players judge a ledge by eye and often press jump a moment too late. Without coyote time they fall and feel the game ignored them. With it, they get the jump they meant.
How it runs, as a diagram
Everything it can be in, and what moves it on. Your AI builds from exactly this.
How it runs, as a diagram
- On the ground → Rising: press
- On the ground → Extra moment: walks off the edge
- Extra moment → Rising: press in time
- Extra moment → Falling: extra moment runs out
- Extra moment → On the ground: lands
- Rising → Falling: reaches the top
- Falling → Falling: late press does nothing
- Falling → On the ground: lands
Good starting values
| Value | Start with | What it changes |
|---|---|---|
| coyoteTime | 0.09 s | How long after leaving the ground a jump still works. Longer feels more forgiving, too long feels like an extra jump. Zero turns it off. |
| jumpSpeed | 12 units/s | How hard the character pushes off. Together with gravity it sets how high the jump goes. |
| gravity | 32 units/s² | How fast the character drops away from the ledge during that split second. |
| maxFallSpeed | 20 units/s | The fastest the character can fall. It stops a fall from getting so fast that the character slips through the floor. |
What usually goes wrong
The player can jump twice
The character jumps, and a second press in mid-air makes it jump again. The extra moment was still open after the first jump.
Fix: Tell your AI: end the extra moment as soon as a jump starts, and treat the character as in the air from then on.
The extra moment is sometimes a little longer
Computers do not add up small bits of time exactly. At some frame rates the extra moment can last one step longer.
Fix: Tell your AI: treat a tiny bit of time left as none, or count whole game steps at a fixed rate.
Being thrown is not walking off
A knockback or a launcher also lifts the character off the ground, and a surprise jump right after it can look like a bug.
Fix: Tell your AI: end the extra moment whenever anything other than walking takes the character off the ground.
The late press uses up the wrong jump
If your game also has an air jump, a late press uses up the air jump instead of counting as the normal jump.
Fix: Tell your AI: look at the extra moment before the air jump, so a late press counts as the ground jump.
Landing right at an edge
The character lands at the very edge of a platform and runs off the next moment. If the extra moment only fills up a step after the landing, it is still empty, and the late press does nothing.
Fix: Tell your AI: fill the extra moment on the step the character lands, not on the step after it.
How to check it works
- Your character stands on the ground. Press jump: The character jumps.
- Your character runs off a ledge. Press jump right after leaving the ledge, or at the very end of the extra moment: The character still jumps.
- Your character runs off a ledge. Wait until the extra moment is over, then press jump: Nothing happens and the character keeps falling.
- Your character has just jumped from the ground. Press jump again in mid-air: The second press does nothing.
- Your character ran off a ledge and jumped in the extra moment. Press jump again: The second press does nothing.
- Your character lands after a jump. Stay on the ground for a moment, then run off a ledge and press jump right after: The late jump works again.
- Coyote time is set to zero. Run off a ledge and press jump right after: Nothing happens.
- Your character lands at the very edge of a platform. It runs off the next moment and you press jump: The late jump works.
Works well with
- Jump Buffering: Together they must never give a second jump. Make one jump decision that looks at both the remembered press and the extra moment, and clear both when the jump starts.
- Variable-Height Jump: A jump from the extra moment should be just as easy to shorten as one from the ground. Start the jump first, then shorten it if the button was let go.
- Double Jump: Otherwise a late press uses up the air jump. Let the extra moment go first, before the air jump.
Common questions
what is coyote time in games
A split second after running off a ledge in which the jump still works. It makes up for presses that come a moment too late, so the game does not seem to ignore them.
how long should coyote time be
Start at about 0.09 seconds, five to six frames at 60 frames per second. Go longer for fast or floaty movement and shorter for strict platforming. If players notice it as an extra jump, it is too long.
what do i tell my ai to add coyote time
Paste this: Add coyote time: the player can still jump for 0.09 seconds after running off a ledge, that time ends as soon as a jump starts, and it only fills up again on the ground, from the moment of landing.
why can my character jump twice with coyote time
The extra moment is probably still open after the jump. Tell your AI to end it the moment the jump starts and not to fill it up again until the character is back on the ground.
Where it comes from
Earliest example we could find: Canabalt (Adam Saltsman), Flash version, described in his article 'Tuning Canabalt' (2009). Saltsman's September 2010 write-up of the Flash version explains that collision areas are extended so a runner who leaves a building edge can still leap, and frames this as forgiveness for late presses. The game year comes from the survey's bibliography and from the article's mention of the game's birthday. This is a spatial version of the idea, not a timer. Saltsman does not use the name; Pichlmair and Johansen later present it as Coyote Time.
- 2009 Canabalt (Adam Saltsman), Flash version, described in his article 'Tuning Canabalt': Saltsman's September 2010 write-up of the Flash version explains that collision areas are extended so a runner who leaves a building edge can still leap, and frames this as forgiveness for late presses. The game year comes from the survey's bibliography and from the article's mention of the game's birthday. This is a spatial version of the idea, not a timer. Saltsman does not use the name; Pichlmair and Johansen later present it as Coyote Time. [Tuning Canabalt (Adam Saltsman, Game Developer/Gamasutra blog, 2010-09-29)][Designing Game Feel. A Survey (Pichlmair and Johansen, arXiv 2011.09201, 2020-11-18)]
- 2011 Limbo (Playdead), as measured in Fasterholdt, Pichlmair and Holmgard (2016): A peer-reviewed study that recorded and measured play reports a short delay after running over an edge during which a jump still works. The authors call it an edge jump and link it to Venturelli's and Pignole's descriptions. The year is the one the paper cites for the game; other platform dates were not checked. [You Say Jump, I Say How High? Operationalising the Game Feel of Jumping (Fasterholdt, Pichlmair, Holmgard, DiGRA/FDG 2016)]
- 2013 Kyle Pulver, 'Platforming Ledge Forgiveness' (blog post): A developer post on this technique. The original page could not be opened, so its title and year come from the survey's bibliography, and Lisa Brown's 2017 tutorial confirms it covers ledge forgiveness. Its content was not read. [Designing Game Feel. A Survey (bibliography entry 192)][GameMaker Platformer Jumping Tips (Lisa Brown, Game Developer, 2017-10-05)]
- 2014 Yoann Pignole, 'Platformer controls: how to avoid limpness and rigidity feelings'; Mark Venturelli, 'Game Feel Tips I: The Ghost Jump': Two developer blog posts describe a timed grace period. Pignole (January) proposes a delay after falling from a platform, without giving it a name. Venturelli (August) gives it the name Ghost Jump, a label he presents as his own. Neither uses the word coyote. [Platformer controls: how to avoid limpness and rigidity feelings (Yoann Pignole, Game Developer, 2014-01-03)][Game Feel Tips I: The Ghost Jump (Mark Venturelli, Game Developer, 2014-08-10)]
- 2017 The term 'Coyote Time' in Jennifer Scheurle's Twitter conversation on hidden mechanics: Earliest dated appearance of the name in a source opened here. WinFuture (5 September 2017), citing Polygon, reports developer Chevy Ray describing the trick by this name. Lisa Brown lists the name in October 2017 as one of several for the technique. Scheurle used it again in her GDC talk, covered in March 2018. This dates usage, not coinage. [Entwickler plaudern aus dem Naehkaestchen: So wird bei Games getrickst (Witold Pryjda, WinFuture, 2017-09-05)][GameMaker Platformer Jumping Tips (Lisa Brown, Game Developer, 2017-10-05)][Appreciating the magic (and power) of hidden game mechanics (Alex Wawro, Game Developer, 2018-03-19)]
- 2020 Celeste; Maddy Thorson's game-feel thread and essay 'Celeste & Forgiveness': Thorson lists Coyote Time as a Celeste technique in a thread reported on 13 March 2020, later expanded into an essay on the developer's site. Thorson says the techniques were not invented for Celeste. The survey published in November 2020 uses the name as the standard academic label. [Celeste & Forgiveness (Maddy Thorson)][Developers have been subtly cheating to help us win (Cory Taylor, Blizzard Watch, 2020-03-13)][Designing Game Feel. A Survey (Pichlmair and Johansen, arXiv 2011.09201, 2020-11-18)]
What was checked
- 11 tests pass on the reference code.
- The state diagram was checked against the code, at the default values and at every listed low and high value.
- The Godot port passes the same tests on the real engine.
Your AI gets the code
Tested example code comes through the Spielerando connection, so your AI can use it right away. How to connect it