Cabinet BRKR‑01 · HTML5 canvas · no libraries · v1.4

BREAKOUT

Field 400 × 600. Eight by four bricks of cyan glass, 50 × 20 apiece. One 3 px yellow ball that never changes speed mid‑flight — only its direction. Three lives. Ten points a brick.

INSERT COIN
STANDBY 400×600 · 60HZ
HOLD TO STEER · OR DRAG THE SCREEN

Field spec

everything the machine knows about itself

Playfield400 × 600logical pixels · devicePixelRatio‑scaled buffer, capped at 2×
Brick grid8 cols × 4 rows @ 50 × 20x = col · 50, y = row · 20 + 52 header offset · 32 bricks total
Ballr = 3 px · 3.44 px/framespawn (200, 570) · launch vector (2, −2.8) normalised, magnitude locked
Paddle60 × 10 @ y = 580x clamped 0 → 340 · exit angle mapped to hit offset, ±68°
CollisionExplicit AABBswept axis test picks one closest hit per frame · ball snapped out of brick, velocity magnitude preserved
LoopFixed 16.67 ms stepaccumulator over requestAnimationFrame · max 3 substeps, then drop
Scoring+10 × combo multipliermultiplier climbs every 4 paddle‑less bricks, caps at ×3 · wave clear +250