Inspiration
I edit by swapping one word and reading the sentence again. Sometimes that tiny change flips the mood completely. Driftword started there: I wanted the edit itself to be the move, then I wanted a subreddit to leave behind a sentence that no single player wrote alone.
What it does
Driftword has three ways to play.
In Eddies, you reshape a five-word signal one word at a time and get distance feedback after each attempt. The opening difficulty is mechanical: fresh Depths 1, 2, and 3 require exactly one, two, and three moves across the same number of semantic ranges, and Depth 3 adds a locked non-solution stone. At Depth 9, a solution has to redirect all five word slots; deterministic seeds keep producing new routes after that. Editing or undoing a route clears the old replay and result before the next test.
The Daily Current is the shared mode. It creates a 24-buoy route for the day. At each buoy, the player sees a clue and three word choices. Only the marked word advances the Current. A player gets one successful contribution per day, but a wrong choice does not use it.
Tributaries are player-made routes. A creator chooses a title from the game's safe word lists, charts a solution, and can publish only after the server replays that solution successfully. Other players can solve the route, leave a structured reaction, or remix it. A private journal keeps personal scores and mastery.
How we built it
The custom post uses React and TypeScript for the controls and mobile layout. Phaser replays the word changes. Hono routes on Devvit Web validate moves, while Redis stores the shared Current, personal runs, Tributaries, reactions, and journals. Devvit Scheduler rolls the Current over each day.
All word choices come from a fixed, reviewed vocabulary. That keeps generated routes testable and avoids free-form player text.
Challenges
Two problems shaped most of the server design. First, two people can answer the same buoy almost simultaneously. The later player needs the new buoy without losing the chance to contribute. Second, a Tributary creator cannot simply claim that a route is solvable.
I versioned the shared Current so stale clients can refresh cleanly, and I made the server replay every creator route before saving it.
Accomplishments
The part I like most is that the same one-word rule has three different tempos. Eddies are a quick score chase, the Current is one small daily decision, and Tributaries let players become puzzle makers.
I also kept the awkward community cases honest. An empty Current is archived as a curator route instead of fake participation. Public histories use neutral labels rather than exposing account IDs. On mobile, the word bank opens beside the word the player selected.
What we learned
I expected a bigger vocabulary to make the game better. It did not. A smaller, typed vocabulary made the feedback clearer and made generated routes much easier to validate.
I also learned to treat stale shared state as normal. If somebody reaches a buoy first, the game should refresh the choice instead of blaming the next player.
What's next
First, I would use real solution paths to tune the vocabulary and route generator. After that, I would add seasonal Currents, broader accessibility settings, and moderator tools for removing a published Tributary without breaking its remix history.
Built with
Devvit Web, Reddit custom posts, React, TypeScript, Phaser, Hono, Redis, Devvit Scheduler, Vitest, Testing Library, and Playwright.
The paper river-chart background was generated specifically for Driftword with OpenAI image generation on July 14, 2026. The word stones, current lines, interface, and replay are original CSS, React, and Phaser work.
Significant hackathon updates
During the hackathon I built unlimited Eddies, the 24-buoy Daily Current, proof-gated Tributaries, mobile onboarding, a private journal, and server-side protection against stale or duplicate actions.
Built With
- devvit-web
- hono
- phaser.js
- playwright
- react
- redis
- typescript
- vite
- vitest
Log in or sign up for Devpost to join the conversation.