-
-
Moonstack — a one-tap climb from the launch deck to the moon, built to run inside a Reddit post.
-
Every run starts on the launch deck. One tap to jump, nothing else to learn.
-
Everyone in the post faces this exact same tower.
-
Deep in the space zone, right inside the Reddit app. The moon waits at floor 200 — and the climb doesn't end there.
-
The badge shelf: one badge every 20 floors, the moon at 200, and legendary badges hidden in deep space. Progress survives failed runs.
-
Each post keeps its own top-10 leaderboard. Same tower, same rules, so every score is a fair fight.
Inspiration
This is my first Reddit game. I build things solo on evenings and weekends, and I joined this hackathon because I wanted to understand what a game becomes when it lives inside a Reddit post instead of a normal app.
I wanted the game to be simple enough to understand in a few seconds, but still fair enough for people to compete. The idea that stayed with me was this: everyone in the thread should face the same climb. No random layout. No lucky board. Just one shared tower, one leaderboard, and a clear goal at the moon.
What it does
Moonstack is a one-tap climbing game that runs inside a Reddit post. Bars slide left and right above you. Tap at the right moment to jump, land, breathe for a moment, and jump again. You start on a launch deck, climb through the sky and space, and try to reach the moon at floor 200.
The main rule is that everyone in the same post climbs the exact same tower: same layout, same bar speeds, same energy-drink placements. The tower is generated from a fixed seed, so the leaderboard is about learning the same course rather than getting a lucky run. If someone reaches floor 163 and I keep dying at 148, I can go back and practice that exact section.
Progress survives failure. Your best floor is saved account-wide, badges unlock every 20 floors, and falling does not immediately throw you back to the bottom. You lose a life and revive on the floor where you fell. You start with 5 lives, zone gates give you a small refill, and some faster side bars carry energy drink cans. Five cans give one extra life, so there is a small risk/reward choice inside the one-tap loop.
Reaching the moon unlocks a short 7-act ending, but the game does not stop there. After floor 200, the climb continues into endless deep space, with legendary badges waiting at floors 400, 700, and 999.
The Reddit part is the shared challenge. Each game post has its own top-10 leaderboard, moderators can create a new Moonstack arena from the subreddit menu, and players can share a run back into the thread as a comment from their own account. The text is prepared, but still editable before posting.
How we built it
Moonstack is built with Devvit Web, Phaser 4, TypeScript, Hono, Redis, Vite, and Web Audio.
Phaser handles the game itself: arcade physics, tweens, camera movement, parallax layers, loading, audio cues, and the HUD. I drew the HUD as a small instrument panel inside Phaser instead of layering DOM UI over the game, because I wanted it to feel like one cohesive piece inside the Reddit webview.
The tower generator is shared TypeScript. It produces deterministic floor data, and the Phaser scene renders that data. Redis stores per-post leaderboards and account-wide badge progress. Hono handles score submission, leaderboard loading, badge progress, and result sharing.
I also wrote an offline verifier for the tower. It checks that the 200-floor moon climb is reachable, including bar overlap, jump reach, second bars that carry cans, and revive positions. That verifier caught real problems that type checks and normal playtesting missed.
A lot of the engineering was shaped by Reddit itself. The game runs at a fixed virtual resolution so screen size does not change the difficulty. Sound is silent in the feed and only starts after the player enters the game. Audio also suspends and resumes cleanly when Reddit pauses the webview. I reduced the startup payload from 22.5MB to 3.6MB by downscaling art and converting assets to WebP, because the post needs to open quickly in the Reddit app.
Challenges we ran into
The hard part was not making the character jump. The hard part was making the game fair, readable, and polite inside Reddit.
At first, different screen sizes changed the feel of the tower. That is a serious problem for a leaderboard game, so I moved everything to a fixed virtual resolution. I also had to think about the feed experience: the first screen has to explain the challenge quickly, audio should not surprise people, and sharing should create a useful comment rather than noise.
The hardest decision was removing a feature I had already built. I made a ghost-racing system where you could choose a rival from the leaderboard and race their recorded run. It worked, but it made the menu busier and the game harder to explain. Moonstack is better when the promise stays simple: one tap, one shared tower, one leaderboard. Deleting a working feature hurt, but it was the right call.
Accomplishments that we're proud of
I am proud that Moonstack feels like a complete small game, not just a prototype with a score counter.
The parts I am happiest with are the shared deterministic tower, the per-post leaderboard, the badge shelf, the moon ending, and the fact that failed runs still leave progress behind. I am also proud of the quiet polish: identical difficulty across devices, a smaller startup payload, custom UI, careful audio behavior, and a verifier that helps prove the climb is fair.
Mostly, I am proud that the finished game is still one tap.
What we learned
I came in with no real experience building games for Reddit, so most of what I learned was about the platform itself.
A Reddit game is not just a canvas. It is a post, a feed item, and a thread. The jump physics were the easy part. The real work was making the game explain itself quickly, keeping competition fair across devices, respecting the player's attention, and turning results into comments people might actually want to post.
I also learned that polish is not only about adding more. Sometimes polish is cutting the thing that makes the game less clear.
What's next for Moonstack
If Moonstack finds players, I want to build more around the thread-as-arena idea: post-level events, clearer run summaries in comments, more badges, and lightweight community goals like how many people reached the moon this week.
I also want to keep tuning the tower from real play data. A game this simple lives or dies by feel, so the next changes should come from watching real climbs, not only from my own playtesting.
Built With
- devvit
- hono
- phaser.js
- redis
- typescript
- vite
Log in or sign up for Devpost to join the conversation.