Where it started
My nephew plays Roblox. Instead of just watching, we built our own game together: he knows how a racing game should feel, and I can write the code. The rule is that his playtest decides. Every fault he finds becomes a round of fixes, and there have been many rounds.
How it is built
A Rojo project in Luau with server, client and shared definitions. The tracks are built procedurally from curves, about 9,000 studs per lap, and the cars have real wheel physics: springs, servo steering and hinge motors, not a floating box. Laps, checkpoints, nitro and coins are decided on the server, so a client cannot cheat its way to a win.
The steering is derived from the bicycle model rather than tuned blindly: the lock is computed from speed and wheelbase, so the car can physically make the sharpest corner on any track without throwing itself sideways.
What is in it
Six tracks, each with its own light and road surfaces: asphalt, cobbles and gravel behave differently because the road's friction actually decides. A practice mode per track, daily quests every player shares because the day's set is derived from the date, cars and light trails as cosmetics, a spectate mode once you finish, a podium ceremony and a minimap.
Where it stands
The game runs in Roblox Studio and has been tuned through more than fifteen playtest rounds. It is not published yet: that happens when the test driver signs it off.
What I learned
That physics sign conventions are merciless: one wrong sign mirrors the car, with no error anywhere. That tooling beats guessing: a single broken string killed the whole client at startup, and it was found with a language server, not with another guess. And that a demanding playtester who does not care how hard something was to build is the best quality assurance there is.