Inspiration
Time-attack racing has the oldest hook in gaming: someone beat your time. Trackmania proved people grind for hours over strangers' records — but those strangers are anonymous. Reddit has rivals with names. So: what if the leaderboard was haunted? The record holder's actual replay races beside you, username overhead. Beat it and you become the ghost everyone hunts.
What it does
- Physics rally racing — rear-wheel-drive buggy, soft suspension, gas/brake/lean controls. Land your flips or wreck.
- You never race alone — live ghost replays of the top-3 racers (👑🥈🥉) plus your own PB.
- Records are social events — stealing one posts a dethronement comment on the track's post.
- The community builds the game — players sculpt tracks in the built-in editor, prove them beatable with a mandatory test run (which seeds the first record ghost), and publish: every track becomes a Reddit post whose preview shows the real elevation profile and time to beat.
- Daily Rally — a new seeded track every midnight UTC, with its own leaderboard and streak multipliers.
How we built it
Devvit Web: Hono server on Reddit's serverless runtime; Redis sorted sets for leaderboards
and podiums; Reddit API for track posts and dethronement comments; postData-driven feed cards.
Phaser 4 + Matter.js: chassis + wheels in a negative collision group with constraint
suspension; terrain is a Catmull-Rom spline rasterized into both graphics and physics via one
deterministic code path — ghosts replay against the exact same ground. Ghosts are 30fps
[x, y, rotation] recordings, interpolated on playback. The daily track is never stored:
the UTC date is hashed into a seed and every client generates the identical track.
Zero asset files — all art drawn procedurally at boot, all audio (engine included) synthesized live with WebAudio.
Challenges we ran into
- Matter.js vehicles: the buggy crawled until we realized the wheels were colliding with the chassis — one negative collision group beat two rounds of "add more power."
- UI under a zooming camera breaks Phaser input hit-testing — solved architecturally with a static-camera overlay scene for the HUD and a backdrop scene behind the game.
- Fair ghosts: 120Hz screens stepped physics twice as fast, making records device-dependent. Physics now runs a locked 60Hz accumulator on every device.
- Our anti-cheat rejected honest runs: a 3s "impossibility floor" met a player-built track beatable in 2.65s — and failed silently. Validate against what players actually build; never fail silently.
Accomplishments that we're proud of
- A complete social loop on Reddit-native mechanics: build → post → race → dethrone → comment → revenge — with zero external services.
- Ghost racing that feels personal: three named community members on track with you, every run.
- The whole game ships without a single asset file — every sprite procedural, every sound synthesized — and stays crisp on any screen.
- Publish-with-proof: no unbeatable troll tracks, because your test run is the first record.
What we learned
The platform is the game design. Once tracks became posts and records became comments, Reddit's own mechanics — feeds, comments, usernames — did the retention work games usually build from scratch.
What's next for Ghost Rally
Weekly cups, subreddits tracks, spectate mode (watch two ghosts duel), track ratings, and seasonal leaderboard resets with flair rewards for champions.
Log in or sign up for Devpost to join the conversation.