Racing games are the hardest thing to fake. Art direction can carry a shooter, but you judge a racing car by how it behaves in your hands, within about four corners. Apex Grand Prix set out to see whether a browser tab could hold the whole thing and still be something you can send someone as a link. That meant a twenty-car field, a five-kilometre permanent road course with sixteen named corners, three DRS zones, a pit lane that works, and tyres that heat and wear.
The constraint was the appeal. Everything an engine normally supplies is written directly against WebGL through Three.js, in vanilla ES modules on an import map. That covers the render pipeline, the vehicle model, the tyre curves, the camera director, and the timing tower. There’s no bundler, no build step, and nothing to compile. The build is readable, and every system in it is one file you can open.
The rule that shaped everything: not one binary asset. That rules out image files, audio files, and models. Every texture on the circuit (asphalt, kerbs, grass, crowd, livery, and tyre wall) is drawn procedurally with Canvas2D and noise the moment the page loads, and every sound is synthesised in WebAudio. Skipping binary files keeps a full race weekend down to a few megabytes that start in seconds. It’s also why the whole look can be re-tuned by changing a number instead of re-exporting a texture.
The handling was developed the way a real car is: by driving it and complaining. Rounds of play-testing produced specific, physical complaints (the car spins under a keyboard, the sharp turn will not close), and I chased each one to a measured cause instead of a guess. The game is live, free, and linked from this page. The production brief behind it is in the prompt shop, and the build is in the template gallery.