Frame 07A game 2026

Retro Pong

Pong rebuilt from scratch with canvas, Web Audio, and zero dependencies

View source↗
first to 7 wins

The story

I rebuilt Pong to see how much game feel I could get out of a canvas and nothing else. No libraries, no framework: a hand-rolled game loop, collision code, three AI difficulty levels, local two-player, CRT-style visuals, and sound synthesized with the Web Audio API. First to 7 wins. You can play it right here on the site.

What I learned

  1. 01Game feel comes almost entirely from small things, the angle the ball leaves the paddle and the way the AI misses, not from the physics being correct.
  2. 02Web Audio meant no sound files at all, every blip is synthesized at runtime, which kept the whole game to a page that loads instantly.
  3. 03Three difficulty levels are really three different amounts of deliberate imperfection in how the AI tracks the ball.
  4. 04Writing the game loop by hand is worth doing once, because it is the part every engine is quietly handling for you.

Stack · as built

Frontend

  • HTML5 Canvas
  • Vanilla JavaScript
  • CSS3

Backend

  • Web Audio API
  • Game Loop Logic

Infra

  • Static Hosting
  • Browser-Only Runtime

More prints

the menu
three difficulties
match point

Want the full story behind this one?

More projects→