Bumpershot: A Daily Trick-Shot Game for Reddit

I built Bumpershot for the Reddit hackathon. It’s a daily physics trick-shot game that lives inside a subreddit, built on Reddit’s Devvit platform.

How it works

Every day at midnight UTC, the subreddit gets a new rig, a little contraption of ramps, bumpers, and blocks. Everyone gets the same one. You have three shots, and a shot is just an angle and a power. Your best one lands on the leaderboard.

The rig is generated from the date and the subreddit, so there’s nothing to schedule and nothing for a mod to babysit. On top of that there are three daily missions, streaks that survive the occasional missed day, and a shared parts pool. Once the subreddit has played enough, tomorrow’s rigs get more interesting for everyone.

The comment trick

This is the part I like most. A shot is two small numbers, so it fits in a Reddit comment. After you play, you can post your best shot. Anyone reading the thread can tap ”🎯 Watch this shot,” see that exact line replay, and go try to beat it. The comments end up being where people trade shots.

Keeping it fair

Scoring happens on Reddit’s servers. Your browser shows an instant preview so aiming feels snappy, but the server re-runs every shot with the same physics, and only its result gets saved. Shot counts live on the server too, so refreshing the page won’t get you a fourth try.

My first end-to-end AI-driven project

Bumpershot is the first project where I let AI drive from the first design doc to the last commit. A few patterns did most of the work:

  • Design docs before code. The project has a design/ folder with the concept, architecture, and a phase plan. Commits reference it, like “Phase 2.4: Streaks, with the freeze, and the gentleness the doc asked for.” The plan kept each session pointed at one thing.
  • A CLAUDE.md for the hard parts. It records the invariants I didn’t want broken, such as the physics sim being deterministic, the server being the only source of scores, and no Math.random() in shared code (an ESLint rule enforces that one).
  • Tests as a gate. Snapshot tests on the sim and rig generators meant a diff was a signal to look closer, not something to accept blindly.
  • Real-world checks. Unit tests can’t cover Redis or Reddit’s iframe, so I ran playtests against an exit checklist. The standalone harness that compared physics across engines caught things I wouldn’t have found otherwise.

Several bugs only showed up live. A permission I hadn’t declared broke “Post my shot,” and a prompt()-based dev tool failed inside the sandboxed iframe. Neither would have shown up in a test suite.

What surprised me most was how much work a game this small turned out to be. Deterministic physics, fair scoring, art, sound, typography, streaks, and all the little bugs in between. Without AI, this would have taken far more effort than I could have put in. And Bumpershot is a tiny game. I can’t imagine what it takes to build a AAA title, and I have a new respect for game developers everywhere.

I didn’t win the competition. That stings a little, but I shipped a working game and learned a lot doing it. What I’m taking away is the workflow: write down the decisions, keep the rules where the AI will read them, and verify in the real environment.

Try it

Mods don’t configure anything. They install the app and it runs. You can play it in r/Bumpershot.

Nick Kelly