Inspiration

What makes redditors come back tomorrow? That was the only question that mattered when I started building Unlit Game.

My first answer was wrong. I wanted players to rotate puzzle pieces on a grid until they locked into clean vector art. Silhouettes that felt satisfying when the last piece snapped in. I thought Reddit would eat up daily "what shape is this?" posts with comments full of screenshots and smug one-move solutions.

Then I watched real people try to learn it. Rotations, parity, silhouette logic, mobile touch on tiny pieces, explaining the goal without a tutorial novel... clever on paper, exhausting in a feed. Reddit interactive posts do not give you five minutes of patience. They give you a thumb, three seconds of curiosity, and one chance to feel something.

So I pivoted. I kept the app name and the core idea of Light, but rebuilt around a question that hits immediately: can you steer fast enough, and bank before you choke? That became Unlit Game, a Phaser neon maze speed-run where Reddit is the leaderboard and the level browser, not a skin on a generic game.

The hook is a ten-second panic loop on the same track every day. // UNLIT · DAILY #N PUZZLE · 4 Difficulty Levels is that track. Popular is the prize if you build a maze worth running.

What it does

Unlit is a synth-wave maze speed-run inside Reddit posts. You guide a pulse of Light through glowing tube routes. Speed ramps as you run. Steer wrong at a junction and you rewind to your last checkpoint. Any Light you had not banked yet is gone. Leave before completion and your unbanked stack wipes. That is the whole game.

Daily Puzzles is the calendar hook. One post per day, numbered (// UNLIT · DAILY #007, #008, and so on), with four difficulty tiers in a single post: Easy, Medium, Hard, Expert. Pick your tier and replay it as many times as you want. Each tier has its own speed ladder, so the same post stays alive for racers chasing different lines.

Community Builds is the merit hook. Publish a maze through the Level Designer for 50 Light and it becomes a real Reddit post plus an entry in the Builds library. The Popular tab holds up to 25 player-created mazes, ranked purely by total plays. The more people run your route, the higher you climb. Fall out of the top 25 and someone else's maze takes your spot. The Puzzles tab lists everything newest first, so fresh uploads have a home before they catch fire. Play counts are server-side. Popular is a live scoreboard of what the community actually wants to run, not what I hand-picked.

Retention is not one mechanic. It is a stack of small signals that make the lobby feel like a place worth reopening.

The pathway map is the home screen: glowing portal nodes for Play, Board, Create, Builds, and Endless Mode, each with its own color and sound when you hover or enter. You are not clicking through a menu. You are picking a door.

Music and SFX run through every layer. The lobby theme keeps playing under the Phaser run (embedded webviews love to kill audio when gameplay starts; I fought that). Grid Run has its own level music plus steer, checkpoint, bank, and death cues. Portal nodes chirp when you focus them. The game sounds like a place, not a silent canvas.

Three global leaderboard identities sit on the Board: fastest daily time, highest Light balance, most total fails. You can grind speed today, hoard Light tomorrow, or lean into failure stats for fun. Land in the top 3 for Light balance and your currency pill in the header turns gold, a status flex that follows you back to the lobby every session.

VIP is not a stat bump hidden in settings. Members tap the VIP badge next to their username on the home screen and get a perks menu: toggle half-speed mode for easier runs, toggle VIP Glow on your tube trail. Rainbow shortcut lines still reward route knowledge in the maze itself. Perks persist server-side across webview reloads.

Endless Mode is a different mood: pick Chill, Cruise, or Sprint before you start and the maze generates ahead of you with no finish line. When the generator dead-ends, a green teleport spot appears so the run can fork into fresh geometry instead of ending on a wall. It is procedural comfort food for players who already cleared today's tier.

Around the edges: optional bonus Light detours on dailies, live achievement flair synced from stats, an activity ticker in the footer broadcasting records across the lobby, and a route-complete screen with your stats, daily rank for your tier, and a nudge toward the subreddit without being annoying. That is the flex you bring back to the thread.

How I built it

Devvit Web hosts the app. Inline splash expands into the full game view. The server is Hono on Devvit with Redis for dailies, queues, leaderboards, VIP prefs, and join state. Supabase backs balances, stats, and persistence across sessions.

Phaser powers the Grid Run: tube rendering, junction steering, checkpoint banking, speed scaling, VIP lines, spin-node detours, and the in-run HUD. The shell is TypeScript and DOM (pathway home, level designer, leaderboards, store modal, VIP perks menu). Gameplay stays in Phaser. Everything social or economic stays in the web shell. That split is why the run feels like a real arcade game inside a Reddit post instead of a webpage pretending to be one.

Daily content generates procedurally, stores per date and difficulty, and posts on a schedule. The Puzzle Builder dev pipeline queues sets before they go live. Community mazes pass server validation, a mandatory creator playtest, then bind to a Reddit post.

Mobile was not an afterthought. Swipe steering, on-screen D-pad, and expanded viewport layout because that is where most Reddit play happens.

Challenges I ran into

Procedural generation had to feel fair at four difficulty levels without blowing up memory (early VIP pathfinding OOM'd the server and surfaced as "warming up" errors). Daily posts moved from one difficulty per post to one post with four tiers without breaking leaderboards or cron logic. VIP perks had to survive Devvit webview reloads, so toggles moved from localStorage to Redis.

Polish on Reddit is a thousand small product decisions: inline preview, expanded mode, subscribe permissions, Gold payment for a permanent VIP tag, live flair, a route-complete screen that invites people to join without being annoying.

Accomplishments that I'm proud of

Unlit already feels like a game people could return to tomorrow, not a demo that begs for forgiveness.

  • In-app dev pipelines: Puzzle Builder queues four-tier daily sets; Cosmetics Builder mass-adds skins via JSON with live preview — both run inside the expanded home screen
  • Layered retention design: pathway portals, lobby audio that survives Phaser boot, gold Light pill for top-3 hoarders, VIP badge perks menu, Endless teleport recovery
  • Phaser execution with intent: speed pressure, checkpoint color shifts, VIP rainbow lines, tube-field results screen
  • Reddit Gold monetization live: Permanent VIP with half-speed, VIP Glow, and shortcut-line perks
  • Creator publish gate: server validation plus mandatory playtest before a maze costs 50 Light and becomes a real subreddit post

What I learned

Simple input beats clever input on Reddit. One stick, one decision, one reason to retry.

Retention is not a feature you bolt on at the end. It is tomorrow's post already waiting, your rank one second away, a community maze you need to beat, and a dozen small status signals that make opening the app feel different from closing it.

Devvit Web plus Phaser works when you respect the boundary: Phaser for the run, the shell for everything that makes the run matter on a social platform.

If your generator can infinite-loop, it will, at 9am Chicago time, on the daily cron.

What's next for Unlit Game

What ships today is the race, the rank, and the Popular board. What comes next is identity and circulation.

Cosmetics store (Coming Soon on the pathway map): tube skins and trail effects during Grid Run, plus long-term community-created cosmetics where sellers earn Light back on sales.

Limited drops and a Surge spin wheel for curated catalog rewards are wired in the codebase but not shipped yet. VIP Glow is live today as a preview. The spin room and post-run wheel stay gated until store and circulation rules are ready, so launch does not feel half-finished.

Play today. Post tomorrow. Look different next week.


Steer the Light. Bank or bust. Come back for // UNLIT · DAILY #___.

Built With

Share this project:

Updates

Submission history