SES Group
ExperimentGame2026

City GP: a street race built with my nephew

A night-time, F1-inspired street race in Roblox for up to ten players. He orders features and playtests, I write the code, and his bug reports decide what gets built next.

Role
All the code; my nephew is the test driver
Started
2026
Built with
Roblox · Luau · Rojo
Status
Runs in Studio, not published

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.

Server
Laps, checkpoints, economy
Client
Steering, camera, HUD
Shared
Track and car definitions

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.

Want to follow along?

The game ships on Roblox when the test driver is happy. Until then, the finished games live on games.sesnas.com.