Inspiration

We wanted to create a game that captures the "one more try" magic of Wordle but with physics-based gameplay. The idea of a ball ricocheting off walls felt inherently satisfying, simple to understand, but with surprising depth when you try to plan your angle. Daily puzzles create a shared experience where every Reddit user faces the same challenge, sparking discussion in the comments about strategies and angles. We were inspired by classic billiard puzzles and wanted to bring that to Reddit as a quick daily brain teaser.

What it does

Ricochet Daily generates a unique (8 \times 8) grid puzzle every day using a date-based seed, so every player worldwide gets the same layout of walls and targets. Players aim a ball from a launch point and fire it into the grid, where it bounces off walls leaving a glowing trail. The goal is to collect all (5) orange targets in just (3) shots. After completing the puzzle, players can share their results in a Wordle-style grid format, showing which targets they hit. Scores are tracked on a community leaderboard via Redis, encouraging competition and daily return visits.

How we built it

We built Ricochet Daily on Reddit's Devvit platform using its Interactive Posts feature. The game engine is written in HTML5 Canvas with TypeScript, handling the ball physics, collision detection against grid-based walls, and seeded random puzzle generation. The backend runs on Hono (a lightweight web framework) with Devvit's Redis integration for persistent state, score tracking, and leaderboards. We also built a parallel version in GameMaker targeting the Reddit WASM export. The daily seed system uses a deterministic PRNG (Mulberry32) seeded with the date integer ((YYYYMMDD)) to guarantee identical puzzles for all players.

Challenges we ran into

The biggest challenge was ball collision detection at grid boundaries. Our initial implementation clamped cell indices before comparing old vs. new positions, which meant the ball couldn't detect border walls and got permanently stuck in corners. We solved this by separating border collision (explicit bounds checking) from internal wall collision (unclamped cell index comparison). Touch input handling across desktop and mobile Reddit also required careful event management to make drag-to-aim feel responsive. Working within the Devvit webview constraints and getting the GameMaker-to-Reddit pipeline configured on macOS added unexpected setup complexity.

Accomplishments that we're proud of

The game feels genuinely satisfying to play. The ball trail, screen shake on bounces, and glowing target animations create a polished experience despite being built in under (24) hours. The daily seed system works perfectly, deterministic puzzle generation means every player gets the exact same challenge. The share feature produces clean emoji grids that look great in Reddit comments. We're also proud of the physics engine, it handles corner bounces, diagonal wall crossings, and edge cases reliably with a clean architecture.

What we learned

We learned the full Devvit development workflow from scratch, project setup, webview integration, Redis-backed APIs, and deployment to Reddit. We gained a deeper appreciation for how grid-based collision detection has subtle edge cases that simple approaches miss. We also learned that building for the Reddit post container requires thoughtful responsive design since the game needs to work in both compact post view and expanded fullscreen mode across desktop and mobile.

What's next for Ricochet Daily

We plan to add a predicted trajectory preview showing the first few bounces of your aim line, making the game more strategic. A community leaderboard displayed in-game would drive competition. We want to add special tile types like bumpers (pinball-style deflectors) and portals to increase puzzle variety. Sound effects and haptic feedback for mobile would enhance the feel. Difficulty scaling over the week (easier Monday, harder Sunday) would keep players engaged. Finally, we want to add a streak counter and badges for consecutive daily completions to maximize retention.

Share this project:

Updates