400 × 600Drag · Arrows · Space60 fps
Canvas Arcade · 8 × 4 block field
Where the ball lands on the 60px paddle decides the exit vector — centre is vertical, the last 3px throw it out at 60°.
Every sub-step scans overlapping blocks, ranks them by penetration depth, and resolves only the closest. No tunnels, no double-hits, speed magnitude preserved.
Physics runs on an accumulator, so a 120 Hz phone and a 60 Hz monitor play identically. Touch drag feeds a smoothed paddle target.
Blocks, particles, ball trail, CRT scanlines, overlays and the restart button are drawn with the Canvas 2D API. Zero libraries, zero images.