The OSM pipeline pointed at actual mountains. Both levels ride the real
terrarium DEM (Coot-tha's range tops at 287 m, Gravatt's at 196 --
matching the survey numbers) with the real roads draped and carved over
it: Sir Samuel Griffith Drive winding up one side of town, Mount
Gravatt Outlook Drive zigzagging up the other. Race mode is 3 laps of
the mountain; the drag finder even discovered a 1080 m strip through
Mount Gravatt's suburbs (Logan Road, of course it is).
Pipeline upgrades earned along the way, all reusable:
- trace: RacePath mode now STITCHES every OSM way sharing the name into
one chain by shared endpoints (SSG Drive is 19 segments; tracing only
the longest produced a fraction of the route) and samples densely --
16 points cut hairpins cross-country and gridded race starts in a
paddock.
- 9th builder arg selects the raw-terrain texture. Bushland levels pass
"grass" (tiled at 3 m -- 18 m tiling reads as macro-photography lawn
blades under the car) which also enables forest fill: ~2600 extra
gums, 65% biased to within ~150 m of roads, where the driver's eyes
actually are.
- amenity=parking polygons are now PAVED (draped asphalt) as well as
stocked with parked shitboxes -- a summit lookout carpark is a
burnout pad, not a dirt patch. Both summits come ready.
- man_made mast/tower ways become tapered lattice towers with a cage
and whip antenna, built from beams into the steel bucket. Mount
Gravatt's telecom tower stands over its carpark.
- Levels can carry their own sky: levels/<id>/sky_<time>.jpg overrides
the global panorama for any time of day, including day (previously
always procedural). Both mountains ship FLUX skies with the Brisbane
skyline on the horizon; Gravatt also has a sunset one, because John's
reference photo demanded it.
Suite green at 11 levels. Next burnout spot: the Gateway Bridge, when
the details arrive.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
southbank, albert_parklands, story_bridge, kangaroo_point + queen_st_mall
rebuilt textured. Level builder now does: FLUX facade/road/grass/water/rock/
steel materials with box-projected UVs (roofs split to plain grey), parks,
multipolygon river water (solid, cars skim it), tree nodes as low-poly cones,
natural=cliff walls, and a procedural steel cantilever truss along a named
bridge way (Story Bridge / Bradfield Highway, 338m). osm_xml_to_json.py
assembles water relations; osm_level_args.py gains trace: mode for race paths
that follow one iconic road. 11 textures via Cloudflare Workers AI
flux-1-schnell (tools/flux_texture.sh, creds from .env never printed).
Data (c) OpenStreetMap contributors, ODbL.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
tools/build_level_osm.py extrudes OSM buildings (-col), lays road strips,
Spawn + RacePath empties; osm_level_args.py computes a building-clear spawn on
a named way and race-loop corners from street intersection nodes. game.gd
builds Path3D from GLB RacePath empties, sanitizes spawn bases, and places
bodies BEFORE add_child. Three real bugs fixed: mall canopies (building=roof)
extruded as solid blocks, underground busways rendered at surface, and the
km-wide ground trimesh breaking suspension raycasts (now -convcol). Cars get
continuous_cd for thin building shells. tests/probe.gd is the physics
raycast debugger that found it.
Data (c) OpenStreetMap contributors, ODbL.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>