Inspiration

Most drawing games reward the clearest artist. We wanted the opposite - a game where the most interesting drawing wins, not the most accurate one.The spark was a simple observation about how people actually behave on Reddit. The best threads aren't agreement, they're the near-misses: the "wait, is that a teapot or a watering can?" moments where everyone's a little unsure and wants to argue about it. So we built deception into the core loop. Every drawing becomes a small act of misdirection, and the comment section becomes the place people contest what they saw. That argument is the engagement.

What it does

Every day at midnight UTC, one theme drops for the whole community - In the kitchen, Things that fly, At the beach. The shared prompt means everyone's solving the same puzzle, which is what makes it feel alive in the feed.

When you sit down to draw, you're dealt two words: a TRUTH (say, teapot) and a DECOY (say, watering can). The two are deliberately confusable. Your job is to make one drawing that reads as teapot - but lean into the ambiguity so guessers nearly pick watering can first.

Everyone else then guesses on the drawings made before them, choosing from four options.

How we built it

DECOY runs entirely on Devvit Web, with both frontend and backend hosted on Reddit. The client is a React shell wrapping a Phaser canvas. The drawing surface is a constrained carving tool - a finite block of "ink" you spend rather than a bar you fill. When the ink runs out, the stroke stops dead. That constraint is deliberate: it forces economical, intentional strokes, so even rough drawings look composed and nothing ever reads as AI-generated art.

Strokes are stored as normalized vector paths, not bitmaps. Each drawing is a few kilobytes of JSON instead of an image. That keeps storage tiny, makes drawings resolution-independent, and - critically - lets us replay each drawing stroke-by-stroke during the Reveal, one of the most satisfying moments in the game.

The server is Node endpoints on Devvit handling submission, guess capture, and scoring. State lives in Redis - drawings keyed by day and user, guess telemetry per drawing, and two sorted sets driving the daily and all-time leaderboards. The daily machine runs on @devvit/scheduler: one cron job drops the theme and creates the day's interactive post, another resolves yesterday's drawings, computes scores, and freezes the board for the Reveal.

Challenges we ran into

The signature mechanic - the +5 near-miss bonus - depends on knowing when a guesser almost fell for your decoy. That meant building hesitation telemetry into the guess screen: tracking which options a player dwells on and whether they switch their selection before committing. Getting it to feel fair, and to work reliably on mobile touch rather than just desktop hover, was the real engineering problem. We landed on a model combining dwell time with selection-switching, so a genuine moment of doubt is captured without punishing fast, confident guessers.

The second challenge was the empty-room problem every daily UGC game faces: on day one there's nothing to guess. We solved it by seeding the game with drawings across several themes before launch, so a first-time player always lands in a populated, living game with a real leaderboard.

Accomplishments that we're proud of

The scoring model is the thing we're proudest of. Rewarding the near-miss instead of the clean hit flips drawing-and-guessing on its head - it makes deception a skill, gives bad artists a real path to winning, and turns every drawing into a tiny argument the community wants to have. It's a genuinely different game from the drawing apps that came before it, not a reskin.

We're also proud of how disciplined the craft stayed. The constrained canvas, the vector-stroke pipeline that doubles as the Reveal animation, the single-accent carving identity that runs from the ink meter straight through to the share card - every piece earns its place, and it holds together as one product rather than a pile of features.

What we learned

That constraint creates quality. Every time we removed freedom - capping the ink, limiting the palette, forcing the two-word deception - the drawings got better and the game got more fun. The discipline did the design work for us. We came in thinking we were building a drawing tool and left understanding we'd built an argument machine.

What's next for DECOY

  • Themed seasons and weekly "master deceiver" titles
  • Community-submitted word pairs - the players designing the deceptions
  • A spectator mode for the Reveal, so the daily unveiling becomes a shared event.

Built With

Share this project:

Updates