Tile Match: The Daily Puzzle Revolution
Tile Match is 3D tile-matching puzzle game built natively for Reddit. This project is a complete re-imagining of our previous "UGC" concept. We pivoted from a standard puzzle game to a Daily Community Ritual—bringing the viral engagement of games like Wordle directly into the Reddit feed using the latest Devvit 0.12+ features.
Inspiration
The inspiration for Daily Dose of Tile Match came from the realization that while "match-3" and "tile-matching" games are incredibly popular, they are often solitary experiences. We wanted to take the addictive, Zen-like unmatched gameplay of classics like Mahjong or 3 Tiles and inject it with the community spirit of Reddit.
We asked ourselves: "What if everyone on the subreddit played the exact same puzzle every day?"
Inspired by dynamic daily games like Wordle, we wanted to create a shared daily ritual. We didn't just want a game; we wanted a community event—a system that automatically generates a new challenge, resets the leaderboards, and creates a discussion thread every single day, keeping the subreddit alive and engaged without manual intervention.
What it does
Daily Dose of Tile Match is a fully featured tile-matching puzzle game embedded directly into Reddit via Devvit.
- Daily Challenges: Every 24 hours, the game procedurally generates a unique, deterministic level. Every player in the world faces the exact same layout and tile order.
- Global Leaderboards: Players compete for the fastest time or highest score on the daily seed.
- Automated Subreddit Manager: Utilizing the new Devvit 0.12 Scheduler, the app acts as an autonomous bot. It automatically posts a "Daily Challenge" thread to the subreddit each morning and updates it with the day's stats.
- Smooth Gameplay: A polished, responsive UI with satisfying haptic/audio feedback and zero layout shifts, optimized for the Reddit mobile app.
How we built it
We built this project pushing the boundaries of the Devvit 0.12 platform, leveraging the latest "Entrypoint" architecture.
- The Game Engine: Built with React and Vite for maximum performance. We engineered a custom hook-based state machine (
useGameLogic) to handle the complex 3-layer tile matching logic. - Devvit 0.12 Scheduler: We moved away from simple cron jobs to Devvit's native generic scheduler. This powers the heartbeat of the game, triggering the
DailyChallengereset andAutoPostbot logic precisely at 00:00 UTC. - Redis & State: We used Reddit's Redis plugin to store the "Daily Seed" (ensuring determinism) and the high-speed leaderboards.
- Design System: We avoided heavy UI libraries, opting for Vanilla CSS with a mobile-first approach. We implemented a "Layered Slot UI" architecture—separating the background placeholders from the active moving tiles—to allow for 60FPS animations without triggering browser reflows or layout thrashing.
1. The daily challenge
- Seeded RNG: This is the heart of the "Daily" mechanic. We use the current date (e.g.,
20260213) as the random seed. This ensures that the procedural generation creates the exact same layout for every player, every time, without needing to store thousands of levels in a database. - State Management: Implemented a rigorous "Stack" logic to manage the 7-slot inventory system, ensuring match-3 detection is instant and bug-free.
2. The Backend: Devvit 0.12+ (TypeScript)
We leveraged the newest features of the Reddit Developer Platform to make the game feel "native."
- The Scheduler & Auto-Bot: We utilized the new
schedulerAPI to create a self-sustaining ecosystem. The bot wakes up at UTC Midnight, calculates the new day ID, generates a dynamic "Daily Challenge" post, and pins it to the subreddit—zero human intervention required. - Redis Leaderboards: We architected a multi-layer Redis strategy (
ZSETfor ranks,HASHfor player details) to track not just high scores, but Global Win Rates and Total Unique Players for the day.
3. The "Native" UI (Blocks)
Instead of a static splash screen, we used Devvit's Blocks UI to build a dynamic launcher. The card in the feed shows live data—today's date, difficulty, and player count—before the game even loads.
Challenges We Faced
The "Ghost Layout" Glitch
One of our biggest headaches was integrating the GameMaker HTML5 export with React's DOM management. We initially faced a "Ghost Layout" issue where clearing tiles caused the inventory slots to expand and break the UI.
- Solution: We moved from a Flexbox-based layout to a strict CSS Grid architecture with a "Layered" approach—separating the background slots (Layer 1) from the animated tiles (Layer 2). This ensured the UI remained pixel-perfect on both mobile and desktop.
The Mobile Audio Trap
We discovered that iOS Safari aggressively blocks volume changes via JavaScript, causing our "Mute" button to fail on iPhones.
- Solution: We learned that while
volumeis read-only on iOS, the.mutedboolean is respected. We refactored our audio hook to rely entirely on themutedproperty for cross-platform compatibility.
State Synchronization
Syncing the GameMaker "Win" state with the Devvit Redis backend required careful handling. We had to ensure that if a user finished the game, their score was verified against the daily seed ID to prevent submitting old scores to new leaderboards.
🚀 What We Learned
This project pushed us to master the bridge between Game Logic and Web Infrastructure.
- Procedural Generation is Powerful: We learned that you don't need a massive database to have infinite content; you just need a smart algorithm and a seed.
- Devvit is a Full Stack: Moving from simple scripts to a full Application with Schedulers, Redis, and Blocks showed us the true potential of apps on Reddit.
- UX is King: The difference between a "browser game" and a "native app" is often just how you handle the loading screen. Implementing the dynamic launcher made the game feel 10x more professional.
What's Next?
- Weekly Tournaments: Aggregating daily scores into a weekly "Champion" flair.
- Tile Skins: Allowing users to unlock new tile sets (Pixel art, Minimalist) based on their streak.
- Dark Mode: A requested feature for our late-night puzzle solvers!

Log in or sign up for Devpost to join the conversation.