CRT 400×600 · 60Hz fixed stepAttract
◀▶movemousemove
dragmove (touch)spacelaunch
PpauseRrestartMmute
Canvas arcade · single file · no libraries
The ball leaves the paddle at ±30° off vertical, alternating each life — never straight up. Tap, click or hit space to fire.
Contact within ±1px of the paddle centre sends it vertical; the tips throw it out to 65°. Centre, then edges, is how you carve a tunnel.
The ball sweeps in sub-steps and resolves only the nearest AABB contact, so it can never clip two bricks and cancel its own reflection.
Every bounce re-normalises the vector to a constant 3.44 px/frame with a vertical floor — no horizontal ping-pong stalls.