Runnin' Mules! logo, three cartoon horses inside a lucky horseshoe

Runnin' Mules! real-time multiplayer racing arcade

Role creator 路 Where: personal (cege7480/sigma-derby) 路 Built: April鈥揓uly 2026 Stack: Three.js + React Three Fiber 路 Rapier physics 路 Socket.IO 路 React 18 + TypeScript 路 Node/Express 路 Firestore 路 Google Cloud Run

A real-time multiplayer digital horse-racing arcade: five horses, ten quinella bets, continuous race cycles. The Socket.IO server is authoritative on outcomes and payouts; clients are pure renderers, and a session can reconnect mid-race and slot back in without losing balance or wagers.

It is also the project that proves a point the other three can't: a solo developer with AI can now ship a full product across disciplines they don't personally practice: 3D art, rigged animation, voice acting, sound design.


How it was built, the AI angle

This is generative AI in the product, not just assistive AI in the editor.

Discipline Normally needs Here
3D horse models a character artist Meshy AI-generated GLBs, one per horse, each rigged with Walk/Trot/Gallop/Rest
Broadcast announcer a voice actor + booth Google Chirp 3 HD (en-US-Chirp3-HD-Charon), the whole phrase library rendered to MP3 on boot and cached in GCS
Splash / tutorial art an illustrator generated stills, reused as the four-step first-time-player walkthrough so the tutorial reads native to the brand
Jockey rig a technical animator a v3 rig with a proper racing seat, plus a 13-joint procedural fallback horse with velocity-driven crossfade

Measured 511 commits across all branches over ~12 weeks, 360 of them (70%) AI-attributed, mostly Claude co-authorship, plus 20 authored outright by copilot-swe-agent and anthropic-code-agent. A further 139 commits come from semantic-release, which automates versioning and changelog; those are release plumbing, not AI, and aren't counted.

The hand-built parts are the ones you'd expect to be hand-built: the authoritative race simulation, the payout math, the reconnection protocol, and the security model.


The screens

The stadium

Runnin' Mules stadium overview: grandstands, mowed infield, tote board, and the full oval track

Procedural grandstands, pine-tree perimeter, lamp posts, scoreboards, and a stadium-shaped infield, with procedural mowed turf and rake-lined dirt. Alfa Slab One for display headings; JetBrains Mono for every live numeral: odds, balance, timer.

Board + phone: the whole loop

Board view in the betting phase, showing a full-screen attract overlay with station code and QR code for phones to scan
Board / kiosk: a full-screen attract overlay with the station code and QR. Phones scan it (or type the 4-character code) to pair.
Board view during the race, the race-cam follows the field around the oval with a TV broadcast HUD
Racing: the QR fades out and the race-cam follows the field around the oval with a TV broadcast HUD.
Board results screen showing the winning quinella and payout summary
Results: winning quinella and payout summary, then straight into the next cycle.
Mobile bet view: quinella picker with all ten horse pairings and odds, four wager amounts, and a Join Rider Queue button Mobile jockey view: rhythm minigame where the active side glows and tap timing scores PERFECT through MISS
Phone: quinella picker with all ten pairings and odds (left), and the jockey rhythm minigame that modulates your horse's speed (right).

The parts I'm proudest of


Why it matters

Everything else in this portfolio is enterprise plumbing. This one is the counter-example: the same AI-assisted method, pointed at a domain with no requirements document and no stakeholders, still produced a deployed, monitored, security-reviewed, continuously-released product, with 3D art and a broadcast voice a solo developer could not have made five years ago at any price.

Also, the jockeys throw their teeth. That part was not AI's idea.