Inspiration
Two things collided. First: the one-tap stealth genre (Thief Puzzle, Stealth Master) has some of the highest play counts in hyper-casual gaming, but every entry is single-player and disposable — you clear the level, you forget it. Second: the best Reddit games are never really single-player. Games like Rock Bottom (where players leave flags for strangers) showed us that the smallest asynchronous trace of another human transforms a puzzle into a community.
So we asked: what if a stealth puzzle let every player leave one object behind in the room — and the next redditor had to play around it? A squeaky toy that distracts the dog. A banana peel that speeds you up. A cardboard box that blocks a flashlight. Some placements genuinely help. Some are bait. You never know which — and that ambiguity is the comment section.
Also, raccoons are objectively funny.
How we built it
- Devvit Web + Phaser 4, mobile-portrait first, with all art drawn procedurally (vector shapes, gradient light cones, zero external assets) and every sound synthesized with Web Audio.
- The heart is a deterministic 60 Hz fixed-timestep simulation shared verbatim between client and server: threat patrols, vision cones, vacuum circuits, item effects. The client submits only your tap stream; the server re-simulates the entire run and derives your time and stars itself. A forged score isn't rejected — it's simply impossible to express.
- Every room (12 handcrafted, plus a daily permutation) is validated by an A*-over-time solver that must find a silent 3-star route before a layout is allowed to ship. The daily seed re-rolls itself until the solver approves.
- Community items are placed via an atomic one-per-user-per-day claim, sampled into other players' rooms with the placer's username attached.
Challenges I ran into
The nastiest bug of the project: our solver was allowed to wait before its first move, but a real player's night is frozen until their first tap. The solver "proved" Room 10 clearable using a route that began with a 129-frame pause — a route no human could ever take. Every automated gate was green while the campaign silently dead-ended at room 10 of 12. The fix went four layers deep: constrain the solver's first action to frame 1, re-tune Room 10's threat timings (a 256-configuration search), make the server reject any run whose first tap isn't frame 1, and add a frozen-start assertion to CI so this entire bug class can never pass again.
What I learned
Determinism is a superpower — one shared simulation gave us cheat-proof leaderboards, provable level fairness, and replayable verification for free. But we also learned its sharp edge: your verifier must play by exactly the same rules as your player. Any gap between "provably solvable" and "humanly solvable" will find you.
What's next
Weekly heist leagues, more item types voted in by the community, and rooms that permanently accumulate the sub's most legendary bait placements.
Built With
- devvit
- hono
- phaser.js
- phaser4
- redis
- typescript
Log in or sign up for Devpost to join the conversation.