cab·04 — arcade reproduction

BREAKOUT

400×600 canvas · 8×4 brick grid · 32 bricks · 3 lives. Vanilla JS, one file, 60 Hz fixed step, hand-written AABB collision with closest-hit resolution and minimum-translation separation.

FPS 60
SCORE 000

Input // map

←→move paddle (or A / D)
SPACElaunch ball · pause
ENTERrestart after game over
Mmute / unmute
DRAGfinger slides the paddle

Telemetry // live

stateREADY
speed px/f3.44
vector dx / dy—
heading45.0°
paddle x170
streak0
bricks32 / 32
score0 / 320
vbreak-32 · ntsc 400 × 600

tap / click the screen to launch

Field map // 8×4

ROW 1 · TOPCOL 1→8

Collision bus

WALL
PADDLE
BRICK
MISS

Scoring

+10per brick destroyed — every brick takes exactly one hit.
320maximum score. 32 bricks × 10, no multipliers.
×3lives. Ball past the paddle floor costs one.

Machine constants // build plate

ball r 3px
speed 3.4 → 4.0 px/f
launch dx 2 / dy −2.8 normalized
brick 50 × 20
grid 8 × 4
paddle 60 × 10 @ y580
paddle travel 0 – 340
max paddle angle 62°
collisions AABB + MTV
bricks/frame 1
loop rAF @ 60Hz fixed
deps none