-
-
Points overview for every user's profile
-
A leaderboard for all users taking the challenge
-
Community contributes to a pool of challenges for upcoming days
-
Map where it shows the tiles using Phaser and marked in red are claimed tiles for winning the challenge for that day
-
View who's territory it is by clicking on the claimed tiles of a faction
-
Game play with hints
-
Game play questions
-
Before game play
-
Onboarding Flow 1
-
Onboarding Flow 3
-
Onboarding Flow 2
Inspiration
Reddit communities already fight over everything, sports rivalries, console wars, tabs vs spaces. TideShift channels that energy into a game: a persistent map where factions literally fight for territory, one daily brain-teaser at a time. The name comes from the win condition, hold 60% of the map and the tide turns: the season ends, a victor is crowned, and the war starts over.
What it does
TideShift turns a Reddit post into a living hex-grid territory war:
- One challenge a day: unscramble, math, trivia, or riddle. Solve it and claim tiles for your faction, growing outward from your territory.
- Streaks: play consecutive days for bonus tiles and a 1.5× score multiplier.
- Seasons: the first faction to control 60% of the map wins the season; the victory is announced in the comments and the map resets.
- Community-written challenges — players submit challenges in-game; they rotate into the daily pool with author credit ("challenge by u/…"). The subreddit writes the game's content.
- Daily recap: a scheduled job comments faction standings every midnight UTC, pulling players back.
The map persists for weeks: every hex shows who owns it, empires are visible at a glance in the live control legend, and the leaderboard tracks the topplayers.
How I built it
- Devvit Web: devvit.json config, a Node (Hono) server with REST endpoints for game state, submissions, leaderboard, and community suggestions; Redis for all persistence; scheduler cron for the daily recap; mod menu actions to create/reset the game post.
- Phaser 3: the entire map layer: flat-top hex grid math (offset coordinates), per-tile graphics, particle bursts and wave ripples on captures, camera pan / pinch-zoom / wheel-zoom, screen shake.
- React 18 + Tailwind: HUD, challenge/leaderboard/profile views, onboarding tutorial, faction legend, suggest-a-challenge form. Fully theme-aware(light/dark via prefers-color-scheme).
- WebAudio: all SFX are synthesized in ~100 lines (rising blips per tile claimed, streak fanfare, victory swell), zero audio assets.
- Anti-cheat by design: the daily answer never leaves the server; challenges are deterministically seeded from the date so everyone gets the same one.
Challenges I ran into
- Platform archaeology: I initially built on the classic Devvit API, then migrated the whole server layer to Devvit Web mid-hackathon, rewriting message-passing into REST endpoints while keeping the client almost untouched.
- Hex math everywhere: offset-coordinate neighbors (different for even/odd columns), pixel↔hex conversion under a zooming/panning camera, and centering a fixed-aspect map inside an arbitrary portrait webview.
- Season resets at scale: wiping every player's territory on a win would need a scan of all player keys, instead each player record carries a season stamp and territories are cleared lazily on next load.
Accomplishments that I'm proud of
- A complete, polished game loop, load → see the living map → solve → watch your tiles burst in → come back tomorrow, that works end-to-end on mobile.
- The community challenge pool: the game's content is user-generated, credited, and self-refreshing.
- Full light/dark theming down to the Phaser canvas, and a synthesized soundtrack with zero asset files.
What I learned
- Devvit Web's endpoint model (plain fetch + Redis + cron) is a genuinely pleasant way to build multiplayer-ish games, no infra at all.
- Determinism is a superpower for daily games: seeding the challenge from the date eliminates state-sync classes of bugs.
- Juice sells the loop: the particle bursts, screen shake, and per-tile claim blips did more for the "one more day" feeling than any number I tuned.
What's next for TideShift
- Tile decay and raids on enemy territory so late-joining factions can come back.
- Weekly "spring tide" events with double rewards.
- Moderator review queue for community challenges, and challenge upvoting.
- Season history page, a hall of fame of past faction victories.
Log in or sign up for Devpost to join the conversation.