← Back to Writing

Building Ricochet Daily: A Daily Puzzle Game for Reddit

2026-02-13
#Game Development#Prototyping#AI-Assisted Development#Reddit

Ricochet Daily is a daily puzzle game that runs natively on Reddit. Players fire a ball into an 8x8 grid of walls, bouncing it through orange targets. Three shots, five targets, one puzzle per day.

Play it | Source | Devpost


Deterministic daily puzzles

The central constraint: every player must see the same puzzle on the same day.

The solution is a seeded PRNG — Mulberry32, seeded with the date as an integer (YYYYMMDD). This produces identical wall placement, target positions, and launch points for all players worldwide, without any server coordination. The same approach Wordle uses. The puzzle is a pure function of the date.

Ball physics on a grid

The ball moves in sub-steps (4 pixels per frame) and checks for wall crossings at each step. Walls are stored as two boolean arrays — horizontal walls on row edges, vertical walls on column edges.

When the ball crosses from one grid cell into another, it checks whether a wall exists on that edge and reflects accordingly. Corner cases (literally — the ball hitting where two walls meet diagonally) required checking both horizontal and vertical walls simultaneously.

No physics library, no game engine runtime. Just arithmetic and a requestAnimationFrame loop running at 60fps on Canvas 2D inside a Reddit iframe.

Platform constraints

Reddit's Devvit platform runs the game inside an iframe with a serverless Node.js backend. The backend uses Hono on Devvit for player authentication, state persistence, and leaderboards via Redis. The frontend is an HTML5 Canvas rendered entirely in TypeScript.

GameMaker was used to prototype and compile to WebAssembly, but the final game logic lives in a single TypeScript file — roughly 600 lines.

AI-assisted development

This project was built with substantial use of large language models as a development tool. The workflow was iterative: describe intent, review generated code, test, refine.

What worked well: rapid prototyping of game mechanics, exploring the Devvit API surface, and scaffolding server routes.

What required human judgment: getting collision detection edge cases right, tuning the game feel (screen shake, trail rendering, aim constraints), and making architectural decisions about what belongs on the client vs. server.

The term "vibe coding" has emerged for this style of development. In practice it is closer to directing than writing — you remain the architect, but iteration speed changes fundamentally.

What I would change

The game could benefit from predicted trajectory visualization (showing bounces before firing), better mobile touch feedback, and animated statistics on the game-over screen. The daily puzzle generation could also be smarter — currently walls are placed independently, which occasionally produces trivially easy or blocked layouts.


Built for the Reddit Daily Games Hackathon 2026. Licensed MIT.