FIELD NOTES — TERRAIN
Roads that lie on the land
Our roads were railway track laid over bumpy ground. One day later they are gravel, cut and filled into the hillside, and never under the sea. What a half-resolution mesh taught us about a four-meter road.
Every Orebound map ships with a road network: a handful of routes between places worth going, laid down by the world generator, free to use, and the fast way home — you run half again as fast on a road as across open country. Until October 4 those roads looked like a railway. Each road tile carried two sleepers and two rails, a little instanced model repeated some seven thousand times across the map, riding on ground the generator had only half-heartedly smoothed. It read as track, and we have no trains.
Now they are gravel roads. Here is what it took, in the order it went wrong.

FIG. 1 — The same route as before, now a road. The cutting on the left and the drop on the right are the generator's work, not the texture's.
Painting a road instead of building one
The rails were a model. The gravel is paint, and the ground itself is the canvas.
The terrain is one big shader that knows, for every vertex, which biome it stands in and which texture pack that biome wears. Roads became one more entry in that lookup: a texture pack, up to three variant packs, a tiling size and a tint, exactly the knobs a biome has, editable in the admin console like the rest. The road's own mask is a 2,112 by 2,112 texture, one byte per tile, with the generator's two-tile road bed widened by a tile on each side and a half-strength shoulder beyond that. The shader reads it with bilinear filtering and mipmaps, so the edge is soft up close and a road a kilometer away fades into the ground rather than shimmering. Two octaves of noise fray the edge so the gravel bleeds into the grass instead of stopping on a tile line.
The patchiness is borrowed from something we already had. Large uniform ground in Orebound is broken up by a hex lattice about nine meters across; every lattice vertex picks one of a biome's packs at random, and each pixel blends the three vertices around it. Roads use the same lattice with four packs from Poly Haven: packed gravel, old cobbles, muddy tyre tracks and a rocky trail. One change: a road squares its random pick, so gravel wins about half the time and the others show up as patches along the way. Four packs sharing a road evenly did not read as a road. Gravel with things happening to it does.
Our first primary pack was called "gravel road". It came out brown and disappeared into every forest floor. The lighter packed gravel replaced it the same afternoon, after the first review found the road not distinct enough to be one.
A road that is only two meters wide
The second complaint was that on a hillside the road was a sliver.
Flattening the ground under a road is the generator's job, and its old grading pass was polite to a fault: it nudged each road cell 55 percent of the way toward a smoothed profile and faded that nudge out over two cells. On a slope that leaves a road that still tilts across its width, with grass growing on the high side of it.
The new pass is a civil engineer's. First it smooths the height along the road graph — 24 rounds of averaging each road cell with its road neighbors, endpoints pinned to the natural ground — and pulls each cell most of the way to that run. Then every cell within three cells of the center line is set to the nearest road cell's height: a level bed. Outside the bed the ground is clamped into an envelope that slopes away at 1:1.5 from the road height. Ground above the envelope is cut down to it, ground below is filled up to it, and ground already inside is left alone. So a cutting or an embankment ends exactly where it meets the hill, with no feathering and nothing to fade.
cut ----\
\____bed____
\
\---- fill
natural ground ·····························
FIG. 2 — Across a road on a side slope. The bed is level; the banks are the envelope, 1:1.5, and stop where they meet the land.
We first levelled two cells each side, which is the width of the gravel, and shipped a sliver. The reason is a trade we made long ago for performance: the drawn terrain mesh uses every second height sample. A four-meter flat bed is two mesh cells wide, and when a road's center line falls on an odd vertex, the mesh sees one flat cell and two sloping ones. About half the roads rendered at half width. Three cells each side gives six meters of flat ground, which the mesh renders as four to six, enough for a four-meter road and a grass verge whichever way it falls.

FIG. 3 — A road across an open slope, seen from below. The level shelf is the bed; the bank rising behind it is the cutting, the one falling toward the camera is fill.
Water, three times
The third report was roads lying under water along shorelines.
Roads are routed before the rivers are carved, so a road can cross a river without knowing it. Our first version said: never touch a river or lake cell. True to the letter, and a disaster in practice. A road cell standing in a river kept the channel's carved height, and the bed-levelling then dragged every bank cell around it down to that height. Every crossing became a wide, flooded dish, and the road along it lay under water.
The second version floored every road cell at the local water surface plus 70 centimeters: the sea, a lake's level, a river's bank. Crossings became causeways. They also became dams, a river stopped dead by four meters of gravel, and that is not what a road through a river looks like.
The rule now is the one the designer asked for: roads may cross water, but may never run beside it under water. A river or lake cell is never cut or filled, and a road cell standing in water levels nothing around it — the crossing is a ford, and the run still smooths down into it from both banks. On land, the road is floored at sea level plus 70 centimeters, before and after the smoothing, so a stretch along the coast rides a low embankment instead of the beach.

FIG. 4 — A ford. The banks on either side are untouched; the road simply goes in and comes out.
On the reference map that gives 7,595 road tiles, of which 90 are wet, all of them at fords, and none on land below the water.
Trees
Trees have never been allowed on a road tile. They had been allowed right next to one, and a trunk a meter from the gravel stands on the new, wider bed. The generator now keeps trees off the painted bed and its shoulder: 18,046 trees on the reference map, none of them on the road.
What this cost, and what is still rough
The shader pays one extra texture read per terrain pixel for the road mask, and only pixels on a road pay for the road's packs. On our development-build frame bench the terrain costs the same 1.5 milliseconds it did before. The grading is a few thousand road cells stamping a 33 by 33 window each, a rounding error in an 18-second world build. Every map regenerates, which resets saves, as every generator change does before launch.
Still rough: the banks are steep enough that the slope-to-rock shading kicks in, so a cutting in a meadow shows bare rock, which is right for a cutting and wrong for an embankment. A ford has no bridge, and a road that crosses a lake will go through it. A road on the diagonal is a staircase of one-meter terraces that the mesh smooths into a slope. And the one thing that did not change at all is the Trunk Line's rule that a Siding must stand beside the road — the road is still exactly where it was. It just lies on the land now.