Skip to content

devlog

The car was driving on the roofs

2026-08-28

One bug that presents as three, found once before and fixed in one place out of nine. Solving the instance instead of the class.

Every place here stores a height map of itself. A grid, half a metre to a cell, one number per cell. It was built to answer one question, which is whether there is any capture in a given spot, and it answers that well: it is how the game knows where a place ends and where you have driven off the edge of the world.

It was also, quietly, being asked a second question. What is under the wheels.

Those are not the same question and the map only holds one answer. The number in each cell is the top of whatever stands in it, which is the right reading for coverage and, in a town, is roofs, tree canopies and the tops of parked vans.

Half the grid over one square sat above two metres and a quarter of it above nine. The car was not driving on the street. It was driving on the upper surface of the town, with the gaps between roof and road smoothed into ramps it could climb.

That is one fault and it arrives as three complaints. It hovers over the visible road. It bounces along it. And it falls out of the world at the edge of a capture, because where nothing was scanned the map holds the lowest point in the entire scene, which in one of the hill towns is twenty metres down.

The part I am least comfortable writing down: this had already been found. Three weeks ago, in one place, where it showed up as a car being thrown into the air every time it accelerated. I fixed that place by switching its collider off and letting it drive on the flat plane instead, wrote a careful note explaining exactly what the height map contains and why it was wrong under a car, and moved on. The note is accurate. It describes the cause correctly. It describes it as a property of that one arena.

Eight other places carried on driving on the roofs, and it read as fixed because the place I had fixed was the one anybody drove.

This is the mistake I make most and it is not a technical one. Finding a cause and then scoping it to where you found it feels like diligence, because you did understand the thing. What it actually costs you is the eight places you never went back to.

There are two maps now. The same grid, asked a different question, and the one the wheels read gives the ground. Across nine places the step between one cell and the next fell from about half a metre to eleven centimetres, and three of them turned out to have a second problem underneath the first: the flat plane that catches the car had been set above their own street, sealing off between a seventh and a quarter of the road you can walk.

The part I am still uneasy about is that I cannot see any of this. The machine I build on has no WebGPU, so all of the above was measured by rebuilding the physics outside the browser and driving it there a few thousand times. Every number moved the way it should have. None of it has been looked at.