Inspiration

The best Reddit games aren't apps that happen to live on Reddit β€” they're excuses for a community to talk to each other. Daily puzzle games like r/hotandcold and r/dailyguess kept pulling me back with the same loop: one shared puzzle, one comment section full of trash talk, and the quiet pressure of a streak counter. Emoji riddles felt like a perfect fit for that loop β€” everyone reads emojis, everyone thinks they're good at decoding them, and everyone is wrong at least three times before they get it.

What it does

Emoji Enigma posts one riddle a day to your subreddit: a string of emojis encoding a movie, song, idiom, or piece of internet culture (πŸΊπŸ§±πŸ“ˆ = "The Wolf of Wall Street").

  • 5 guesses, Wordle-style feedback: 🟩 cracked it, 🟨 so close (right words or a near-miss spelling), πŸŸ₯ nope. Word-length blanks guide you, and a hint unlocks after 2 wrong guesses.
  • Scoring & streaks: 100 points on guess 1 down to 25 on guess 5, plus a streak bonus (+5/day, capped at +50). Miss a day, lose the πŸ”₯.
  • Leaderboards: daily and all-time boards with medals, plus a community guess-distribution chart when you finish.
  • The community writes the game: anyone can submit a riddle (clue + answer + hint + category). Submissions queue up and become future daily posts, credited to the author in the post title.
  • Comments as gameplay: one-tap spoiler-free result sharing ("🧩 Emoji Enigma #12: πŸΊπŸ§±πŸ“ˆ β€” 2/5 🟨🟩 πŸ”₯7") turns the comment section into the scoreboard.

How we built it

Devvit Web end to end: a vanilla TypeScript web view (no framework β€” an inline splash entrypoint for the feed and an expanded game view), a Hono serverless backend, and Redis for every piece of state β€” per-post riddles, per-player game records, streak hashes, guess-distribution hashes, sorted-set leaderboards, and a sorted-set queue of community riddles. A scheduler cron task (0 14 * * *) creates each day's post, pulling from the community queue first and falling back to a 24-riddle built-in pack. An onAppInstall trigger posts Enigma #1 the moment the app lands on a subreddit, and moderators get menu shortcuts to post manually and check the queue.

Challenges we ran into

  • Answers had to stay secret. The answer never leaves the server until your game is over β€” the client only ever sees word lengths and feedback. That forced all guess-judging, scoring, and streak logic server-side from day one.
  • "Close enough" is hard. Nobody types "The Lion King" exactly. The matcher normalizes unicode and punctuation, forgives leading articles, and combines Levenshtein distance with word-overlap detection so "lion heart" earns a 🟨 instead of a cold πŸŸ₯.
  • TypeScript vs. Devvit's split runtime. @devvit/web ships browser and server code behind package export conditions, so one tsconfig can't type-check both β€” the fix was per-target tsconfigs with different customConditions.
  • Testing without Reddit. The client detects when the Devvit API is unreachable and switches to a self-contained demo mode, which made it possible to iterate on the whole UX locally before ever creating a real post.

Accomplishments that we're proud of

The full retention loop works end to end: scheduled daily posts, streaks that actually hurt to lose, leaderboards, and a UGC pipeline where a player's riddle becomes tomorrow's post with their name on it. The game is genuinely self-sustaining β€” after the seed pack runs out, the community is the content.

What we learned

Devvit Web makes the client/server boundary feel like a normal web app, but designing for Redis-only state changes how you model a game β€” sorted sets turn out to be a shockingly good fit for both leaderboards and content queues. Also: hint timing is game design, not a feature flag. Unlocking at 2 wrong guesses (not 3) is the difference between "fun struggle" and "rage quit."

What's next for Emoji Enigma

  • Upvote-driven queue: let the community vote on submitted riddles so the best ones jump the line.
  • Flair rewards: automatic user flair for streak milestones and riddle authors whose puzzles stump the most players.
  • Weekly tournaments: themed weeks (movie week, song week) with their own boards.
  • Difficulty rating: auto-tag riddles by community solve rate, and let players pick their pain level.

Built With

Share this project:

Updates

Submission history