Game Feel Library
← Browse
InputAdvanced

Corner Correction

Clip a platform's corner by a few pixels and the game quietly nudges you past it — the bonk that never happens.

inputplatformercollisionforgiveness

Examples

Captured from this page's own interactive demo below.

Overview

Jump up next to a ledge and catch its corner by three pixels: honest collision says you bonk your head, lose all upward velocity, and fall. The player, meanwhile, is certain they were clear. Corner correction sides with the player — if the overlap is small enough, the game slides the character sideways just enough to pop past the corner and the jump continues as if nothing happened.

The implementation is a second chance for a failed move: when an upward collision is detected, test a handful of horizontally offset positions (a few pixels left and right, up to the correction budget). If one of them is clear, teleport there and keep the velocity. The nudge happens in one frame and is entirely invisible — players don't see it, they just stop dying to geometry they'd already beaten.

The budget is the design decision: Celeste corrects up to about 4 pixels on upward motion, and applies the same forgiveness sideways when dashing past corners. Too little and heads still clang; too much and the character visibly teleports around blocks the player aimed at deliberately. Start around an eighth of the character's width and tune with real playtest footage of near-miss jumps.

Interactive Demo

same jump, same corner overlap — only the right one has a correction budget · ✓ nudged past, ✗ bonkno correctionwith correction
Corner Overlap10px
Correction Budget12px

Use Cases

Platformer head bonksDashes clipping wall cornersFast characters threading tight gapsProjectiles grazing cover edges

Best Practices

Do

  • ✓Test offset positions BEFORE zeroing velocity — correction must run in the same frame as the collision.
  • ✓Keep the budget proportional to the character (an eighth of their width is a good start) and tune with playtest footage.
  • ✓Apply the same idea to all fast movement — upward jumps, dashes, even shots grazing cover.

Don't

  • ✕Don't correct when the player is standing still or moving slowly — the nudge is cover for momentum, not a magnet.
  • ✕Don't slide the character INTO hazards; validate the corrected spot against spikes and enemies, not just solid tiles.
  • ✕Don't stack correction with a huge collision box 'for safety' — shrink the box first, correct the leftovers.

Common Mistakes

Implementation

Paste this into your AI assistant (Cursor, Copilot, Claude) to add the effect to your project.

Prompt
Add the "Corner Correction" game-feel effect to my project: Clip a platform's corner by a few pixels and the game quietly nudges you past it — the bonk that never happens.

How it works: Jump up next to a ledge and catch its corner by three pixels: honest collision says you bonk your head, lose all upward velocity, and fall. The player, meanwhile, is certain they were clear. Corner correction sides with the player — if the overlap is small enough, the game slides the character sideways just enough to pop past the corner and the jump continues as if nothing happened.

Guidelines:
- Test offset positions BEFORE zeroing velocity — correction must run in the same frame as the collision.
- Keep the budget proportional to the character (an eighth of their width is a good start) and tune with playtest footage.
- Apply the same idea to all fast movement — upward jumps, dashes, even shots grazing cover.

Avoid:
- Don't correct when the player is standing still or moving slowly — the nudge is cover for momentum, not a magnet.
- Don't slide the character INTO hazards; validate the corrected spot against spikes and enemies, not just solid tiles.
- Don't stack correction with a huge collision box 'for safety' — shrink the box first, correct the leftovers.

Implement the effect in whatever engine/stack the project already uses and follow its existing code style. Wire it up where it makes sense.

References

Related Effects

Comments

…