Inspiration
The hackathon brief asked for one thing above all: a hook that brings players back. The games that never leave our group chats - Wordle, the daily roguelites - they all share a secret: everyone plays the same puzzle, and scarcity makes it precious. So I fused them for Reddit, the one platform where the conversation around a game can be bigger than the game. Every midnight UTC, the Well generates one new dungeon - the same dungeon for every player on Reddit - and you get one scored descent per day. The comment section becomes the strategy guide, the spoiler zone, and the bragging board.
What it does
You are a Wickbearer descending 10 chambers toward the Heartcoal. Your lantern's wick is your life: every step burns 1, glowing coils restore 8, and greed (chests) and mistakes (sentinels) are priced in wick. Sentinels are your dark echo - they copy your previous move one turn late, so you're literally hunted by your own past decisions. Cracked floors crumble behind you. When your ember is spent, that's your day. You can practice on yesterday's Well to keep your streak flame alive, and climb the daily Ledger before it resets at midnight.
How it was built it
The heart of the architecture is one deterministic pure-TypeScript simulation, run twice. The Phaser 4 client runs it for play; when you finish, the server replays your exact move list against the daily seed and computes the score itself. The client never reports a score, only moves - just a simple anti-cheat system.
- Client: Phaser 4, turn-based grid engine, runtime canvas radial-gradient lighting, responsive scaling for mobile and web.
- Server: Hono on Devvit Web's serverless runtime; Redis for runs, streaks, and sorted-set leaderboards; a midnight cron that creates each day's post automatically — the content flywheel runs itself.
- Daily seed: FNV-1a hash of the day number plus a server-only salt, fed into a mulberry32 PRNG, with BFS-validated chamber generation so every dungeon is provably solvable.
- Art: AI-generated spritesheets pushed through a custom Python pipeline: alpha-projection slicing, palette repair, flood-fill keying, into 49 game-ready assets.
Challenges we ran into
- The lighting disaster. The AI-generated lantern halo had baked-in dithering that turned into opaque orange blobs under additive blending. Fix: generate the glow at runtime as a canvas radial gradient; pure math, no PNG.
- Spritesheets that weren't. Every AI sheet arrived as sprites floating loose in a 500×500 canvas. We built an alpha-projection slicer that finds each sprite by scanning transparency columns.
- Platform trench warfare. An 11MB sourcemap silently killing uploads, CommonJS-only server bundles, Redis with no key listing, Phaser's ScaleManager leaking resize listeners across scene restarts (each one a lesson the docs only half-warn you about)
Accomplishments that we're proud of
- Cheat-proof leaderboards by construction. Server-side replay of the deterministic sim means there is no score to forge, it's an architecture, not a patch.
- Balancing without players. We wrote a headless BFS "beeline bot" and ran it across 40 seeded dungeons. First pass: the bot won 39/40, far too easy. After tuning the wick economy, it wins 13/40, and every victory feels earned.
- A self-running community flywheel. The app posts its own daily challenge at midnight, seeds the discussion, and resets the Ledger, zero moderator effort required.
- A complete, polished game — splash card, graphical tutorial, practice mode, streak tiers, keyboard and touch controls, built end-to-end within the timeframe.
What we learned
Determinism is a superpower. One seeded simulation gave us anti-cheat, practice mode, shared daily dungeons, and headless balance testing for free. And scarcity is the retention hook: one ember a day turns a ten-minute game into an appointment.
What's next for Emberwell
- Memorials: where a Wickbearer gutters out, a small marker appears in everyone's dungeon ("die together, warn each other"). That'd be cool.
- Community-forged chambers: so player-submitted room layouts voted into the daily rotation, turning the subreddit into the level editor.
- Realtime town square: watch live counters of today's descents and deaths as the community digs.
- Sound: a wick that audibly gutters as it burns low.
Log in or sign up for Devpost to join the conversation.