← all posts
·4 min read

Random Balloon: may the force be with it

The Random Balloon homepage on desktop, with floating balloons behind the title

Why I built a balloon-popping random picker, what makes it fun, and why it launched on May the 4th.

Every team has the same tiny problem, several times a week. Who runs the standup? Who buys the coffee? Where are we ordering lunch from? Somebody suggests a spinning wheel, everyone watches a colourful disc slow down, and nobody remembers it five minutes later.

Wheels are forgettable. Coin flips feel arbitrary. Pointing at someone is never fair. So I built Random Balloon: a shared room full of floating balloons, one dart, and whoever owns the balloon you pop is the pick.

How it works

  1. Create a room. One click gives you a link. No account, no sign-up.
  2. Add the players. Give everyone a name and a balloon colour. Want to tip the odds? Give someone extra balloons: two balloons, twice the chance of getting picked.
  3. Share the link. Anyone with it joins the same room and sees the same game.
  4. Throw. Click or tap anywhere to throw a dart. Pop a balloon and its owner is the pick. Miss, and you just throw again.

After a pick you can Play again to re-roll, or Save the result so it counts toward the room's leaderboard and history.

Physics that feel right

The whole idea only works if the game feels good, so most of my time went into the physics. Random Balloon runs its own physics simulation on a <canvas>, frame by frame, with no game engine underneath.

  • Smooth. Balloons drift, sway and bounce like real balloons in a room with a draught. The motion is tuned so it always looks alive, never jittery, and never so fast you can't follow it.
  • Fast. The simulation is light enough to run at full frame rate on a phone, with twenty or more balloons on screen, touch controls, and a burst of particles on every pop.
  • Accurate. Darts fly in a natural arc, shaped by gravity, wind and a touch of randomness on every throw. Hit detection is precise: a pop happens when the dart actually hits the balloon, not when it brushes past.
  • Consistent. Everything is calculated relative to elapsed time, so the game behaves the same on a 60 Hz laptop as on a 120 Hz phone.

That balance is what makes it work as a picker. You're aiming, so it feels like you're in control, but the drift and the dart's flight mean you can't actually choose who you hit.

Game modes

The classic mode is a dart cannon at the bottom of the screen. Two more modes are coming to Pro:

  • Cat mode. A pixel-art cat sits on a shelf at the top of the canvas. Slide it left and right with your cursor (or finger), and it throws rocks down at the balloons, with the same physics as the darts. There are six cat colours, because of course there are.
  • Machine gun. Hold the mouse button, or keep your finger down, to fire a non-stop stream of darts. It works in cat mode too, where the cat throws a rapid stream of rocks.

Pro will also let room owners tune the physics, like balloon size, dart speed, gravity and wind, plus a handful of dart skins.

From weekend build to launch

The first version came together over a weekend in late April, built on Firebase and deployed to Vercel. It worked, and people were using it within days. That's also when I realised I wanted full control of the data, auth and costs before opening it up properly.

So version 2 was a rewrite of everything behind the game: a Postgres database, my own authentication, rate limiting and bot protection, all on a server I run myself. The game you see didn't change much. Everything underneath it did.

Why May the 4th

v2 was ready at the start of May, and the calendar made the decision for me. A playful little game deserved a playful launch date, so Random Balloon officially launched on May the 4th. Star Wars Day. May the force be with it.

You'll still find the date in the site's footer.

What's next

The core game is free and will stay that way. Next up is Pro: full game history, streaks and leaderboards, advanced stats, custom physics, cat mode and the machine gun.

Next time your team needs to pick someone, give it a throw.