Inspiration# Dig Dog Isle πŸ•πŸοΈ

Inspiration

Reddit already works like a shared place: a community gathers around a post, changes it, and comes back to see what changed while they were gone. We wanted a game with that same rhythm β€” not a lobby you join, but a place your subreddit owns. So every post spawns one island, generated from the post ID itself, shared by everyone who opens it. You play a dog because digging is the perfect communal verb: every hole is a mark someone left behind, labeled with their username. Sniff out buried treasure, claim it before the rest of the pack, and leave the island a little different than you found it.

How we built it

Devvit Web + Phaser 3, with a Hono server and TypeScript types shared across the client/server boundary.

The core trick: the island is a pure function of postId + season. Seeded value-noise fBm produces elevation, moisture, and temperature fields; a Whittaker-style lookup turns them into eight coherent biomes; a radial falloff sinks the edges into ocean. Same inputs, same island, every time β€” so the server never stores the map. When you dig tile $(x, y)$, it regenerates the island, verifies the treasure is real, and claims the tile with one atomic hSetNX: first dog wins, race-proof, no locks.

Everything multiplayer lives in Redis: a hash of dug tiles, a sorted set per season for the leaderboard, timestamps for server-authoritative stamina that refills in real time (one dig every 20 s, whether you're playing or not). When the last treasure is claimed, the season ends live for whoever digs it β€” winners crowned, island reseeded.

The retention math had to close, too. Detectors gate treasure by depth, with deeper tiers rarer and richer (7% of treasure pays up to 300 πŸͺ™), tuned so the shallow loot on one island comfortably funds the full 690 πŸͺ™ detector ladder β€” the ❓ markers your gear can't reach yet always have a path to becoming ✨.

On the client, there isn't a single image asset: the customizable dog (colour, ears, accessory, three facing views), the terrain, and every effect are Phaser shapes, emoji, and the tween engine. Tiles are instantiated only near the camera and streamed in and out as you roam, so a 56Γ—56 scrolling world runs happily inside a mobile Reddit webview.

Players also build the island for each other: bury a canned πŸ“œ note for the next dog, or a πŸƒ decoy that renders pixel-identical to real treasure on rivals' screens β€” they get the full dig animation, then the reveal, and you collect a bounty.

Challenges we faced

  • No live netcode. Devvit's realtime channel caps at ~100 messages per second per installation β€” shared across every player on a post. We designed around it instead of against it: fully asynchronous communal play through atomic Redis claims, seasons, and planted pranks. No moment in the game requires two players online at once, yet every moment is shaped by other players.
  • Making async digs feel instant. The authoritative answer is a round-trip away, so digs are optimistic β€” dust, wiggle, and camera shake fire immediately, and the client quietly reverts on the rare conflict ("Another dog beat you to it! 🦴").
  • Trust nothing from the client. The full island is derivable client-side, so the server re-validates everything: stamina, detector depth, tile claims, purchases.
  • Season endings under race conditions. Two dogs can dig the last two treasures in the same instant; the end-of-season writes are idempotent so concurrent finishers converge on the same result. Stale clients detect the season change on their next dig and resync onto the new island.
  • Free-text moderation. Player notes wanted to be free text; on Reddit that's a moderation minefield. Canned messages keep all the personality with none of the risk.

What we learned

Constraints are free game design. The realtime cap dictated the async model, which dictated the shared island, which dictated seasons β€” the game is more Reddit-shaped because the obvious version was impossible. We learned that deterministic generation is a superpower on serverless (state you can recompute is state you don't store), and that "juice now, truth later" β€” optimistic feedback with graceful reverts β€” is what makes a serverless game feel native. Mostly we learned that a treasure map is a social network: give people one island and a shovel, and they'll start talking to each other through the ground.

What's next

A transformation spell that turns your dog into a cat to climb the mountain biomes, an activity feed of the island's latest finds, and subreddit-vs-subreddit season stats.

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for Dig Dog Isle

Built With

Share this project:

Updates

Submission history