๐Ÿ’ก Inspiration

We fell in love with the Rooster Teeth "3D mini-golf" chaos feeling โ€” the joy isn't a clean putt, it's watching physics betray everyone at once. Reddit already has turn-based golf, so we went the other way: real-time, slingshot, chaos-physics mini-golf that lives inside a post.

๐ŸŽฎ What it does

Open the post, drag to aim, release to putt (pull opposite your target). Then:

  • A shared daily โ€” the whole community plays the same hole with the same wild mutator (Ice Rink, Super Bounce, Poolโ€ฆ), computed C day so everyone's in sync with zero coordination.
  • One leaderboard, ranked by strokes *the sortable score:

$$\text{score} = \text{strokes}\times 10^{6}

  • Streaks to pull you back tomorrow.
  • Build your own โ€” an in-app editor to design, submit, upvote, and play community courses.

๐Ÿ› ๏ธ How we built it

  • Devvit Web + Phaser 4 + TypeScript, a Hono server, and Redis for state.
  • A custom top-down physics engine โ€” slill banks ($\varepsilon = 0.9$), per-frame friction, and a mechanic library that all reflect + interact: power/elastic bumpers, decoupled portals, ts, ice/sand/water, boost pads, and breakable walls.
  • Determinism-first: portals, breakablesiming are pure functions of the shot + load time, so the same inputs always reproduce โ€” the engine is replay-ready by construction.
  • Redis, siloed per subreddit: sorted sets for the leaderboard, keyed strings for streaks, and a JSON-per-course index for UGC (submit / delete).
  • An empirical playtest harness we're weirdly proud of: Playwright drives the real game engine headlessly and fires fans of shots vability, ace-rate, forgiveness, and route diversity** โ€” so holes were tuned from data, not vibes.

๐Ÿ“š What we learned

Top-down golf with no gravity is a completely different design space. The ball bank-and-settles instead of being guided, ow arrival โ€” so a far cup is nearly unsinkable straight-on, and "just add a backstop" doesn't save you. We had to re-derive mini-golf from first principles: w, dogleg, windmill, gateway, carry) survive our physics, and which (ramps, loops, slopes) simply don't.

๐Ÿง— Challenges we faced

  • No-gravity sink physics. Banked/lag putts wouldn't drop. We added a gentle "gutter" pull toward a nearby slow ball โ€” then di like a magnet, and spent real effort measuring the effective catch width to tune it back to "cup, not magnet."
  • Water is brutal here. A splash resets iggers at any speed โ€” so a long water channel is nearly impossible to thread. Our risk/reward "gamble" hole only became fair after we shrank the crossing t
  • Timing can't be tuned headlessly. Windmills only spin in real time, so on-device testing caught things the harness couldn't โ€” incluots into a hazard for an unfair double-penalty.
  • A sneaky harness bug. Our probe wasn'tween simulated shots, silently capping every scan at one sink and invalidating a batch of results until we caught it.
  • No native cross-community state. Redisthe leaderboard is a per-community daily board โ€” a deliberate, reliable scope instead of chasing external infra.

Built With

Share this project:

Updates

Submission history