BOREDOMBLASTER
A fast, neon space shooter that runs in any browser. Steer, power up, beat the bosses and climb a global high-score table that cannot be faked. Free, no install, no sign-up.
Works with touch, keyboard and game controllers.

Easy to start, hard to put down
Every wave brings new formations, and every few waves a choice of upgrade. Runs are short enough for a coffee break, and the next world is always one wave away.
Pick your build
Seven upgrade families (more shots, faster shots, lasers, orbiting moons, a magnet and more), each climbing to MASTERED and ULTRA-MAD.
Bosses and worlds
Five enemy types and two mini-bosses that fly curved entry paths, across five worlds with their own sky, colors and music.
Play anywhere
A thumb stick and buttons on the phone, a left-hand mode, keyboard keys you can remap, and controller support.
In motion
Real captures from the live game.



How it's built
Written from scratch in plain JavaScript and the HTML canvas, with no game engine or framework. Static hosting for the game, plus one tiny serverless function for the shared scores.
A score table that refuses fakes
Every run gets a signed ticket from the server (HMAC with the server's own clock). A score is only accepted with a valid, unused ticket, and only if its waves, play time and points fit the real time that passed. Hand-made or replayed requests are refused. Practice runs never post.
Privacy first
No accounts, no cookies, no IDs. The only stats are anonymous counts of finished runs (wave, length, phone or desktop). Only three initials are ever kept with a score.
A run, end to end
- Start: the game asks the Worker for a ticket.
- Play: everything runs in the browser at 60 fps.
- Game over: initials, score and ticket go to the Worker.
- Check: signature, age, one-time use, rate limit and plausibility.
- Store: the top 10 is kept in Cloudflare KV.
Tested and shipped safely
338 automated tests cover game rules, upgrades, input, the score server and its anti-cheat checks. Each change is tested locally before it goes live, and the page always loads the newest version.