Rebuilding Bomberman, a game I grew up with, written from scratch in JavaScript.
No game engine. Just p5.js and a childhood memory. I spent hours on this game as a kid, so rebuilding it was the most honest way to learn JavaScript properly. Every mechanic I remembered had to be translated into code.
No install. No download.
Runs in the browser with keyboard controls.
Real JS ability. No shortcuts.
Systems thinking
A game is just a loop: read input, update state, render. Building this forced a clean architecture before a single line of logic was written.
p5.js as a creative tool
p5.js gives you draw(), setup() and input. The rest is yours. Using it for a game meant understanding exactly what the library handles and what you still have to build yourself.
Debugging without a net
There is no tutorial for "build Bomberman." Every collision, every explosion radius, every timing bug was solved from first principles.
A glimpse into the code.
Not the full source, but enough to see how it is structured. Real functions, real logic, written from scratch.


What building it taught me.
Games are just state machines
Every feature in the game, collisions, timers, animations, is just a variation on the same pattern. Understand the loop, and the rest follows.
Frame-rate independent movement
Tying movement to delta time instead of frame count was the first real breakthrough. Physics that break at 30fps but work at 60fps teach you fast.
p5.js is a runtime, not a game engine
It gives you setup(), draw() and keyPressed(). Collision logic, game state and bomb timers are all yours to build. The boundary was clearer than I expected.
Multiplayer via WebSockets
Bomberman was built for two players. Real-time multiplayer is the natural next step. Same grid, two browsers, one connection.