DEV Community

Cover image for I Asked Claude Opus 5.5 for "Super Fast Fire Stuff." It Built Me a Need for Speed Style Game
akartit
akartit

Posted on Originally published at kartit.net

I Asked Claude Opus 5.5 for "Super Fast Fire Stuff." It Built Me a Need for Speed Style Game

My first message to Claude Code:

and also make the car game need for speed like super fast fire stuff

The first version it built had no physics, and the 3, 2, 1 countdown ended on a black screen.

By the end of the evening it was Kartit Nitro: a neon racing game in the browser with real physics, nitro, drifting, four cameras and six AI rivals.

Here's the full build, every prompt on screen:

Race it yourself. The AI driver's best lap is 33.3 seconds. Good luck.

Below: what I typed, what broke, and what it cost.

One sentence in, a brief out

Before writing any code, Claude turned my sentence into a short brief of its own: a three.js track, nitro flames, handbrake drifting, and a chase camera that lags a little more the faster you go.

Twenty minutes later I had a neon city, a car and six rivals on the grid. It was not perfect: no physics, a black screen where the countdown should be, no music, and a car that turned way too much.

My whole job was complaining

Claude wrote the code. I drove, got annoyed, and typed whatever annoyed me. These are real messages from that session, 21:01 to 22:18 UTC on 23 September 2026:

  • "car game lack physics"
  • "cannon js?"
  • "we need glowing car lights"
  • "where is speeding game and nitro"
  • "3 2 1 screen become black why"
  • "no music is blayed ... press to start"
  • "we need to show keyboard"
  • "is till hit wall"
  • "wait turns too much now"

I asked for physics, lights, nitro and keyboard controls, then kept reporting whatever broke next. The physics ended up on cannon-es, a JavaScript physics engine.

The steering took the most rounds. My last message of the session, at 22:18, wasn't a two-word complaint anymore. It was a whole paragraph about how the car should turn.

What's in the game now

  • Physics with cannon-es
  • Nitro
  • Handbrake drifting
  • Four cameras
  • A "SUPER NEON" ghost mode, with its own meter
  • Six AI rivals
  • An online leaderboard

There's also an AI driver that does laps on its own. Every gameplay shot in the video is the AI driving, not me.

The game is 5.77 MB of static files and loads instantly on a phone.

Under the hood: two fixes worth stealing

I didn't write this code, but I did read it afterwards, and two of the fixes are worth knowing about if you ever build a driving game.

"wait turns too much now"

The steering in vehicle.js doesn't use a fixed angle. The faster you go, the less the front wheels are allowed to turn:

// full lock asks the front tyres for lockGrip x their grip at the current speed
// (never more than steerMax), so a tap at 250 km/h turns in cleanly
function lockAt(vf, hand, sup) {
  const L = VT.rearZ - VT.frontZ; // wheelbase
  const grip = VT.frictionFront * (sup ? VT.superGrip : 1) * (VT.g + VT.downforce * vf * vf);
  return Math.min(VT.steerMax, L * grip * VT.lockGrip / Math.max(vf * vf, 1)) * (hand ? VT.handLock : 1);
}
Enter fullscreen mode Exit fullscreen mode

The angle drops with the square of the speed (vf * vf), which is how cornering grip works on a real car. At low speed you get the full steerMax of 0.55 radians, about 31 degrees. At high speed a small tap stays a small tap. Pull the handbrake and you get 1.6 times more lock, which is what makes drifting possible.

Underneath, it's a 1,200 kg body on a cannon-es RaycastVehicle: four wheels with springs and dampers, plus a few assists, like a yaw limiter so normal steering can't spin you out.

"no music is blayed ... press to start"

This one wasn't a bug in the game. Browsers don't let a page play sound until you click or press a key. The fix in music.js waits for your first input and starts the music then (slightly simplified):

// first gesture anywhere starts the menu theme (autoplay policy needs a gesture)
const kick = () => {
  if (!started) play(game.state === 'title' ? 'intro' : 'menu', 1500);
  removeEventListener('pointerdown', kick);
  removeEventListener('keydown', kick);
};
addEventListener('pointerdown', kick);
addEventListener('keydown', kick);
Enter fullscreen mode Exit fullscreen mode

If you've ever wondered why so many web games open with "press any key", now you know.

The car: one picture, one free GPU

I didn't model the car. I asked Codex's image generation for a picture:

A single small red sports car, stylized clean 3D render, three-quarter front view from slightly above, the whole car fully visible and centered with space around it, all four wheels clearly visible with black tires and silver rims, pure white background, soft even studio lighting, no ground shadow, no reflections of other objects, no text, no logo, no license plate text. This image will be converted into a 3D model, so keep the shape clear and the edges clean.
Enter fullscreen mode Exit fullscreen mode

The last sentence is there on purpose. It pushes the image toward a clean shape, and image-to-3D models rebuild clean shapes much better.

Then TRELLIS, an open model that turns one picture into a 3D model with colour, did the conversion. On a free Tesla T4 GPU from Kaggle, this car took 39.4 seconds and came out with 12,444 faces. I run it through localfit, a small open source tool of mine:

localfit 3d generate car.png --model trellis --backend kaggle --quality standard --out car.glb
Enter fullscreen mode Exit fullscreen mode

I tried four free image-to-3D models on the same picture and the same GPU first:

Model What came out
TRELLIS textured mesh, 12,444 faces, 39.4 s
TripoSR 93,368 faces, blurry colours
TripoSG 1,696,424 faces, no colour at all
Hunyuan3D-2mini textured, but its licence excludes the EU

The first run also needed 676.5 seconds just to install TRELLIS. Plan a coffee.

One more problem: the model comes out as one solid piece, wheels included. A script in Blender, the free 3D editor, finds the four wheels from the car's shape and cuts them off the body, so they can spin and steer:

blender -b --factory-startup --python car_anim.py -- car.glb out/
Enter fullscreen mode Exit fullscreen mode

The cut takes about 4 seconds, 42 with a test render.

Music and sound from Lyria 3 Pro

For the music, I asked for no intro, no breakdown and no ending, so the track could loop:

Instrumental only, no vocals. Driving synthwave / outrun night-drive racing track: pulsing 16th-note analog bass, gated reverb drums, bright saw-lead arpeggios, neon 80s retro-futuristic energy, 124 BPM, minor key, relentless forward momentum. Constant full-energy groove from the first second to the last with no intro, no breakdown and no ending, so it loops seamlessly. About 90 seconds.
Enter fullscreen mode Exit fullscreen mode

For sound effects, I asked for several variations of the same sound with silence between them, then cut them apart:

Sound effects library recording for a video game. No music, no melody, no rhythm, no vocals, no background ambience. Six isolated variations of the same sound effect, each separated by three seconds of total silence: a bright electronic synthwave lap-complete jingle, a quick rising synth arpeggio chime, about one second each.
Enter fullscreen mode Exit fullscreen mode

The race announcer is Gemini 3.8 Flash text to speech: 14 short lines.

What I can account for

  • Lyria: 13 calls at $0.08 each, $1.04 in total. Eight of them made the audio that's in the game ($0.64). Five were discarded, and two of those came back empty.
  • The 3D car: generated on Kaggle's free GPU hours.
  • The code: Claude Opus 5.5 in Claude Code, 11 files and 2,506 lines.
  • The announcer: 14 lines. Its cost wasn't logged, so it's missing from my total.

Not included: my subscriptions and my Mac.

Next up

Every prompt and command is also written out in the companion post on my blog, and the full video is here.

The next build is FAST CHEF, a cooking game in the spirit of Hell's Kitchen. Its 3D chef is animated from a video of real movement. The full tutorial is planned for 11 October 2026. Subscribe on YouTube if you want to follow that one.

What broke first in your AI-built game? And if you beat 33.3 seconds in mine, post your time.

Top comments (0)