About the project
Filament Frenzy is an incremental clicker game that lives natively inside Reddit posts. Players tap to 3D-print emoji collectibles, upgrade through five real-world printer tiers (from an Ender 3 all the way to a Voron 2.4), and chase daily challenges alongside their community. With 42 unique prints to collect, a combo-streak system that rewards fast fingers, lucky print bonuses, and a shared community counter, there is always a reason to come back and tap some more.
Inspiration
The 3D printing community on Reddit is one of the most active and passionate hobbyist groups on the platform. We wanted to capture that excitement of watching a print come to life layer by layer and turn it into a bite-sized game anyone can enjoy. Incremental clicker games are perfect for short Reddit browsing sessions, so combining the two felt like a natural fit. The idea of upgrading through real printer models that the community already knows and loves gave us a progression system that feels authentic rather than arbitrary.
What it does
Players tap to complete 3D print jobs on a virtual build plate, earning coins for each finished print. Those coins fuel a progression loop: upgrade to better printers for higher multipliers and fewer taps per job, unlock auto-print automation, and discover daily filament bonuses for a 3x coin boost. A streak system rewards rapid tapping with escalating multipliers up to 5x at "FRENZY" level. Every day brings a new community challenge (print a target number of a specific emoji) and a hidden filament discovery mechanic. There are 42 emoji objects across three complexity tiers to collect and 20 achievements to unlock. A live community counter shows how many prints everyone on the subreddit has completed today.
How we built it
Filament Frenzy runs on Reddit's Devvit platform with a React frontend and a Hono server backend, all written in TypeScript. The client uses optimistic UI updates so taps feel instant, while a batching system debounces network requests at 150ms intervals and sends at most 20 taps per sync to keep things efficient. State reconciliation uses a "never go backwards" strategy with Math.max() to prevent the progress bar from jumping. The server is stateless — all player data lives in Redis as JSON, keyed per user. Daily challenges and filament types are generated deterministically with a seeded random function so every player sees the same challenge each day. We hand-crafted 42 SVG objects and 5 unique printer illustrations, and built a clip-path reveal animation that fills the build plate from bottom to top as the player taps. All animations (pop-in, float-up, sparkle, shake, pulse-glow) are pure CSS keyframes to keep performance smooth.
Challenges we ran into
The biggest challenge was making tapping feel responsive over a network round-trip. We solved this with optimistic updates and tap batching, but had to carefully handle race conditions where the client could get ahead of the server. Another tricky problem was preventing the progress bar from jumping backwards during reconciliation — a single Math.max() guard on tap counts fixed that. Balancing the game economy required iteration: printer costs, coin rewards, auto-print scaling (1.8x exponential), and streak multipliers all had to feel rewarding without letting players skip tiers. Working within Devvit's constraints (webview-based rendering, Redis-only persistence, serverless execution) pushed us to keep the architecture lean and efficient.
Accomplishments that we're proud of
The tap-to-print interaction feels genuinely satisfying — the combination of the build-plate reveal animation, streak feedback, and coin float-ups creates a tight feedback loop. We're proud of the deterministic daily system that creates shared community experiences without any coordination infrastructure. The data migration strategy means we can evolve the player state schema without wiping saves. And the fact that the entire game runs inside a Reddit post with no external services beyond Redis is a testament to keeping things simple.
What we learned
Building for Devvit taught us how to work within platform constraints creatively. We learned that optimistic UI is essential for any tap-heavy game over a network, and that batching plus debouncing can dramatically reduce server load without sacrificing responsiveness. Designing an incremental game economy is harder than it looks — small changes to multipliers cascade through the entire progression curve. We also gained a deeper appreciation for SVG as a lightweight, scalable format for game art.
What's next for Filament Frenzy
We'd like to add leaderboards so players can compete for daily and all-time print counts within their subreddit. A trading or gifting system for rare filament types could add a social layer. More printer tiers and seasonal emoji collections would keep the content fresh. We're also exploring multi-post support so different subreddits can run their own Filament Frenzy instances with unique themes and challenges.
Built With
- devvit
- eslint
- hono
- node.js
- react
- redis
- svg
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.