What is this?

Stationery is a daily physics game on Reddit where you don't design the level — Reddit does.

Every day a new board goes up on r/PlayStationery. All the obstacles on it — the ruler, the eraser, the paperclip, the rubber band — were placed there by real people commenting on the previous day's post. You get one shot. Drag your stapler back, aim, let go, and try to bounce your way to the target. Land it and you get credit for whose obstacles you hit, your streak goes up, and you show up on the leaderboard.

Want a say in tomorrow's board? Just comment:

!eraser x y !ruler x y angle !paperclip x y !rubberband x y

If you get the syntax wrong, the bot tells you exactly what to fix. Nothing just silently fails.

Why I built this

I wanted to build something for the "Games with a Hook" hackathon that actually used Reddit as more than a place to embed a game. Most game jam entries just live on Reddit — I wanted something where Reddit's comment threads were literally part of the gameplay loop. The idea that a stranger's random Tuesday-afternoon comment becomes an obstacle someone else has to bounce a stapler off of the next day felt like the kind of small, weird, delightful thing that only makes sense on this platform.

How I built it

The game runs on Devvit with Phaser handling the actual game rendering on the client, and the physics simulation is shared between client and server so nothing the player does locally can fake a score — every shot gets independently re-simulated and validated server-side before it counts.

Boards are generated daily by a scheduler that reads the last day's valid comment submissions, runs them through a parser that checks syntax, position limits, and collision clearance, then builds the board and posts it fresh. There's also a solvability check that runs a grid search across possible shots before a board goes live, so a board never gets published that can't actually be completed — if there aren't enough valid community submissions to guarantee that, it falls back to a safe default layout.

Scoring is a mix of a flat base for landing the shot, a bounce bonus for how many obstacles you ricochet off before landing, and an efficiency bonus for doing it cleanly. All of that lives in Redis along with the daily leaderboard, streaks, and contribution history.

Challenges I ran into

The biggest one wasn't code, it was product: making sure people actually understood what was happening. Early builds had usernames only appearing during the aim pull-back animation, which meant a first-time player could take their one shot and never even notice the board was built by other people — which is the entire point of the game. I ended up reworking the UI so usernames are visible from the moment the board loads, not hidden behind an action new players wouldn't know to take.

I also had to fix a board that turned out to be too easy — a straight, unobstructed line from the launcher to the target with nothing forcing a bounce. Fun to hit, but it undercut the whole "trick shot" idea, so the solvability check now specifically rejects boards where a direct shot is possible.

The other real challenge is one I'm still actively working on: the whole concept depends on the board being genuinely built by real people by the time anyone judges it. A freshly made subreddit with no organic comment activity would make the big reveal moment — the camera pulling back to show a board full of real usernames — feel hollow. So getting real people commenting on r/PlayStationery before submission mattered as much as any of the code.

What I learned

Building something where user-generated content is load-bearing for the core mechanic (not just decoration) is a different kind of hard than building a normal game. You have to design for the case where nobody shows up too, and make sure the game still works and still feels intentional even when the fallback kicks in.

What's next

More obstacle types, a proper credits/retirement view when a board rotates out, and probably letting a board carry over more than one day's worth of comments if it's still gathering contributions. Longer term I'd like to see if this kind of "comment-as-level-design" mechanic could work for other physics or puzzle formats beyond just ricochet shots.

Built With

Share this project:

Updates

Submission history