Inspiration

Reddit is asynchronous by nature. You visit, you do something small, you come back tomorrow. I wanted a game with that same rhythm: a run short enough to play in a comment-scroll pause, attached to a leaderboard that keeps living while you're gone. The hook is loss aversion. Your ledge can be taken overnight, so you come back.

What it does

One tap, one timing bar. A knot sweeps across the bar, and you tap when it crosses the scoring zone. Perfect taps build flow, which multiplies your meters and speeds up the knot. Chain perfects and the game escalates: streak banners, a spin jump between perches, a Golden Knot that pays double, and drifting holds that relocate the scoring zone the hotter you get.

Every run posts your best height to the expedition ladder, a persistent per-post leaderboard where 15 rival climbers gain ground every few hours. You can challenge the climber above you or spend stamina to fortify your ledge before you log off. Rivals are capped below the human ceiling, so any height above 5,000m on a board is a real person, and the summit is always takeable.

How I built it

Devvit Web with Phaser 4, TypeScript, and Redis for the persistent ladder, stamina, and shield state. The design process ran screen by screen: rough drafts and layout passes in Figma, then design specs, then implementation, with every screen and system verified in an automated test harness before it shipped.

The art direction is a locked ten-color palette enforced in code. I built a Python mastering pipeline that takes raw art from any source, including AI generation, and makes it consistent: auto-calibrated pixel-grid detection recovers each asset's true resolution, majority-vote resampling cleans the grid, and palette quantization locks every pixel to the game's colors. The soundtrack is three chiptune themes plus a full effects kit, with my own bitcrushed voice doing the countdown and streak calls, all loudness-normalized to broadcast targets.

Challenges I ran into

The perfect-tap window shrinks to 66 milliseconds at max speed, which collides head-on with real touch latency, so grabs are judged against a rewound input buffer the way proper rhythm games do it. The rival economy inflated past 80,000m during extended testing and had to be redesigned twice before humans could reliably take and hold the top. Browser autoplay policy shaped the entire audio architecture. A dev server that silently served stale builds cost me two rounds of debugging phantom bugs, and the fix was byte-level verification of what the player's browser actually receives. And a strict webview CSP meant the loading screen had to paint with zero JavaScript.

Accomplishments

A leaderboard where the summit belongs to humans by design. A complete 16-bit audiovisual treatment in a game that loads inside a Reddit post. An input feel that survives max difficulty. Frame-perfect verification, visual against logical state, across 1,140 frames with zero desync. And shipping every system with zero console errors as the standard, not the goal.

What I learned

Consistency is the product: a pipeline that makes every asset match beats any single great asset. Verify what the player's browser serves, not what the build produces. And the difference between a mechanic and a game is whether the loser immediately taps Climb again.

What's next for Summit Ascent

A real duel mode where challenges race the rival's ghost pace live on the wall, positional stakes on the ladder, and the board slowly retiring rivals as real climbers populate it.

Built With

Share this project:

Updates

Submission history