Inspiration
Polyloop is my two-year side project, an implementation of Slitherlink, the classic loop puzzle. I got hooked on Loopy in Simon Tatham's Portable Puzzle Collection years ago and always wanted a standalone version that felt complete: a daily puzzle, hand-built packs, a real tutorial, progress that follows you between devices. So I built one.
What it lacked was the part where you compare times with someone afterward. The Devvit hackathon was my excuse to fix that: put the daily inside a Reddit post, let the community race it, and let the comment section be the water cooler it already is.
What it does
Every day, the moment the new puzzle goes live, Polyloop posts itself to r/Polyloop. The post is playable in the feed. The rules fit in a sentence: draw one closed loop and bring every number to zero. The in-game tutorial teaches them in under a minute.
Around the puzzle:
- A leaderboard for each day, ranked by solve time. Hint-free solves rank above any hinted time.
- Streaks for solving day after day.
- One-tap spoiler-free result sharing into the comments.
- Progress saved to your Reddit account, so you can start on your phone and finish on desktop.
- Logged-out visitors can still play. They just can't compete until they sign in.
How we built it
Two codebases. The game is Unity 6 (URP), compiled to WebGL. The Reddit side is a Devvit Web app: a Hono server plus a small hand-written HTML/CSS/TypeScript card for the feed. The game and server talk over plain same-origin HTTP.
Redis does the storage work. Leaderboards are sorted sets keyed by day, streaks and saves are per-user, and a scheduler cron creates the daily post at the exact minute the puzzle day rolls over.
Challenges we ran into
Unity's WebGL loader injects its framework as a blob: script, and Devvit's CSP forbids blob: scripts. The game simply would not boot. The fix was to ship the framework uncompressed and patch Unity's generated loader to pull it from a same-origin URL instead.
Webview storage on Devvit is ephemeral, since the origin changes with each app version. "Save locally" really means "lose everything on the next deploy." So all state goes through the server into Redis, including mid-puzzle progress and tutorial state.
Accomplishments that we're proud of
It's the whole game in the post, not a demo. Tutorial, daily puzzle, hints, undo, celebrations, saves, the works.
The daily post lands one minute after the new puzzle unlocks, worldwide, every day, with its date drawn into the board itself.
And progress genuinely follows your Reddit account. Solve half the puzzle on your phone at lunch, finish it on your laptop that night.
What we learned
Devvit's hosting model, mostly: Reddit runs your client, your server, and your Redis, and the constraints that come with that (CSP, ephemeral storage, data scoped per subreddit) pushed me toward better architecture than I would have picked on my own.
What's next for Polyloop
The game already has a full in-engine puzzle editor, the same one I use to build the official packs. Community-submitted puzzles, voted on by the subreddit, are the obvious next step and most of the machinery already exists.
Beyond that: integrate with Reddit Gold to offer additional puzzle packs, plus a weekly puzzle that can save a player's streak.
Built With
- devvit
- hono
- redis
- typescript
- unity
Log in or sign up for Devpost to join the conversation.