Coyote Time
Coyote time exists because "grounded" as a boolean is stricter than how players actually perceive control. If a player walks off a ledge and presses jump two frames later, is_grounded is already false and a naive implementation drops the input — but the player felt like they were still on solid ground when they pressed it. coyote_timer bridges that gap: it's refreshed to COYOTE_TIME every frame you're actually grounded, and ticks down once you're airborne. Jumping is allowed as long as coyote_timer > 0, not just when is_grounded is true.