Inspiration - Reddit communities already organise around daily rituals — Wordle threads, daily discussion posts, prediction games. We wanted to build something that fits that rhythm: a game short enough to finish in under a minute, fair enough to compare scores across a community, and deep enough to keep people coming back. The "hook" is that every player on a given day plays the exact same round, seeded from the UTC date, so a score posted in a comment is a real claim anyone can verify by playing themselves. The secondary hook came from thinking about what makes a number-recognition game interesting beyond pure speed. Two mechanics emerged: an Impostor figure that briefly swaps its label to misdirect you, and a Ghost Chain that reshuffles the upcoming target to reward players who read patterns rather than just react.
What it does - StickTag Relay is a Devvit Web Interactive Post with two play modes:
- Daily Challenge — a deterministic round seeded from the UTC calendar date. Every player in the subreddit sees the same stick figures in the same positions with the same flagged-number sequence. Scores are submitted to a server-side leaderboard and compared in real time.
Core mechanics:
Combo multiplier — consecutive correct taps scale points up to 4×
Hyper Mode — at combo ≥ 10, figures start moving at 1.5× speed
Impostor figure — one figure (visible by orange outline and wobble) swaps its label with the current target 1.5 s after each correct tap, then restores after 1 s
Ghost Chain — 30% chance per correct tag that the sequence is quietly reordered to place a mathematical neighbour of the just-tagged number next; the HUD shows a subtle hint (👻 chain → N?) for players who learn to read it
Daily leaderboard — top 25 scores per subreddit per UTC day, shown on the Game Over screen
Streaks and flair — consecutive daily plays earn Reddit flair at 3, 7, 14, and 30-day milestones
Community Goal — the subreddit's cumulative correct tag count races toward a shared target that scales up each time it is reached
Quick Practice — a randomly seeded round for warming up or experimenting with strategy. No leaderboard entry, no streak effect.
How we built it - Stack is entirely within Reddit's Devvit Web platform:
### Client — Phaser 4 running inside a Devvit Web expanded view (game-daily.html / game-practice.html). Pure TypeScript throughout. A lightweight splash page (splash.html) serves as the inline feed preview with no Phaser dependency, keeping initial load under 2 seconds.
### Server — Hono on Devvit's serverless Node.js v22 runtime. Handles seed generation, player stats, leaderboard writes, community goal increments, streak and flair logic, and a daily summary comment trigger.
### Persistence — Devvit Redis for all game state: player hashes, sorted set leaderboards, community counters, daily seed cache, and idempotency guards.
Challenges we ran into - Cross-iframe state — requestExpandedMode opens the game in a separate sandboxed iframe. sessionStorage and URL parameters don't cross that boundary the way they do in a normal browser. Passing mode=daily vs mode=practice required creating two separate HTML entry points (game-daily.html, game-practice.html) that each bake the mode into a window.GAME_MODE global before the Phaser bootstrap runs.
Accomplishments that we're proud of - A fully deterministic daily challenge: any two players anywhere in the world see identical gameplay for a given UTC date, making leaderboard scores genuinely comparable. Two complementary mechanics — Impostor and Ghost Chain — that add strategic depth without complicating the controls. The game is still just "tap the right number," but knowing when to hesitate and when to predict creates a skill ceiling that pure reaction speed does not.
What we learned - Devvit Web's iframe sandboxing is stricter than a typical web view. Anything that relies on shared browser storage between the inline view and the expanded view needs to be redesigned around entry-point separation or postMessage patterns. Phaser 4's scene lifecycle (init → create → update → shutdown) maps cleanly onto the Devvit round lifecycle, but the Phaser logo default splash is baked into the template assets and will show if asset paths are wrong — worth checking early.
What's next for StickTag Relay - Weekly tournament mode — a special seed announced at the start of each ISO week, with a separate leaderboard and a unique badge for the top 3 finishers
### Cosmetic unlocks — stick figure colour themes and animated expressions unlocked at level milestones, stored in player Redis hashes ### Spectator mode — a read-only view that replays the daily round in real time for players who want to watch before committing to a score
Accessibility improvements — high-contrast label mode, larger tap targets at low-vision settings, and reduced-motion option that replaces Hyper Mode movement with a colour flash
Push notification streaks — opt-in daily reminder via Devvit's notification API when a player's streak is at risk of breaking
Cross-subreddit leaderboard — an opt-in aggregate that lets communities compare their top scores for the same daily seed
Built With
- devvitweb
- hono
- phaser4
- typescript6
- vite8
Log in or sign up for Devpost to join the conversation.