workshop

← all creations

Penalty Kick

mechanics · created 2026-08-24

Aim-and-curl penalty mechanic — charge power, curve the shot, beat a keeper who reads where the ball is heading, not where it lands.

game-feelphysicscanvas

A penalty-kick mechanic built around a deception trick rather than raw power: the keeper doesn’t know your target, it reads the ball’s position and heading at one reaction instant partway through flight and extrapolates a straight line from there. A curved shot bends after that read — so curling the ball away from its own early trajectory is what beats a keeper who has otherwise “solved” your aim. Straight, hard, and dead-center is honest and easy to save; a bent shot toward a post the ball didn’t look like it was going to reaches goal even against a sharp keeper.

Timed to the 2026 World Cup final having just been played down the road at MetLife Stadium.

Reuse

The mechanic lives in src/penalty-kick.js as a framework-free ES module:

Port notes for DragonRuby: update() and the trajectory math have no DOM dependencies; ballAt(t, shot) and keeperGuess(t, shot) translate directly into a tick method, with the goal-to-screen mapping owned by the renderer.

Gotchas