Inspiration

Stacking games (Stack, Tower Bloxx) are perfect one-tap mobile loops, but they're always solo — your tower disappears the moment you miss. Reddit posts are inherently shared and long-lived. We wanted a stacker where the tower itself is the post: one physical structure that the whole subreddit builds together, hand to hand, over a day.

What it does

Skyline — Subreddit Stack drops a Devvit custom post into a subreddit. Tap to drop swinging blocks and stack floors, just like a classic stacker. But every floor you place is added to one shared tower for the whole sub, for that UTC day. The tower's starting width is whatever width the last builder left it at — sloppy runs erode it toward a thin, harder minimum, and a perfect run (zero overhang) repairs it, widening it back out for the next player. It's a two-way community economy, not just a shared counter: your run changes the difficulty of the next Redditor's session.

The tower's visible silhouette is real history — the server records a width sample after every accepted run, so the ghost tower renders the day's actual carved shape: pinched where the sub struggled, swollen where someone went flawless. It's a different sculpture in every subreddit, every day.

It's also live: every submit broadcasts over Devvit realtime, so two Redditors on the same post watch the shared bar tick, the tower reshape, and a "u/name +N" chip land in a live feed at the same moment, backed by a "N building now" presence pill.

How we built it

  • Devvit Web with a Hono server (/api/*) and a Phaser 4 client (Boot → Preloader → MainMenu → Game → GameOver).
  • Phaser drives the actual game feel: tween-based block swing, camera follow/shake/zoom-out "money shot," procedural particles, a day/night sky gradient with a deterministic parallax city skyline, squash/stretch on landing, and a procedural Web Audio engine (no asset files at all — everything is generated at runtime).
  • Redis holds the daily seed, the shared tower width and its history, per-user streaks and personal bests, milestone floor ownership, lifetime achievements, and a self-pruning live-presence hash.
  • Devvit realtime broadcasts a server-authoritative snapshot on every submit so the shared tower updates live for everyone in the post.
  • A daily UTC seed drives palette, swing speed, and the community goal, so the whole sub gets the same named challenge (e.g. "Stardrop Saturday").
  • User contribution is deliberately constrained: players submit numeric run data plus, optionally, one curated label (from a fixed list) for a milestone floor they own — no free-form text box. Both the floor tag and a "share your score" comment are posted as the player in reply to a single distinguished, stickied daily "activity" comment on the post, so all of it is reportable/removable through Reddit's normal comment tooling, not just a custom in-app control.

Challenges we faced

  • Making the shared-tower mechanic visible, not just mechanically true. Early versions only narrowed the tower and rendered it as a plain column — the hook was invisible in a screenshot. We added the two-way erode/repair economy, the real carved-silhouette rendering, a HUD "tower integrity" meter, and a "u/X handed it to you 4m ago" line so the collaboration lands even for a judge playing alone in the post.
  • Getting realtime right without letting it ever affect a run: the client is receive-only, every broadcast path is best-effort, and a monotonic floor-count guard stops late/duplicate snapshots from corrupting another player's live state.
  • Passing Reddit's app review: the review flagged that our curated floor-tag UGC needed a reportable home, and that automated score-share comments needed to be posted as the player rather than the app account. We fixed both by routing both surfaces through a single stickied daily comment thread, replied to as the player.

What we learned

Devvit realtime and Redis are enough to make a genuinely live shared object out of a Reddit post — not just a leaderboard, but state players visibly reshape for each other in real time. The hardest design problem wasn't the mechanic itself, it was making an invisible community effect readable in a single screenshot.

What's next

A weekly "tallest sub" league across participating subreddits, and a "Mason" achievement for cumulative tower-repair contribution.

Built With

Share this project:

Updates