tools/fetch_dem.py pulls the open AWS terrarium elevation tiles for each level's bbox (derived from the OSM geometry itself -- the fetch bboxes were never recorded) and writes an f32 heightmap. The builder bilinear-samples it: roads/footpaths/crossings drape (subdivided to ~8 m so long OSM segments stop chording across curved ground), buildings lift rigidly to the lowest terrain under their footprint with a 2 m foundation skirt, trees/props/planters ride their own base heights, and the flat ground slab becomes a real terrain mesh. Bridges get an explicit deck profile (lerp between end heights plus a hump) instead of draping down into the river, the truss follows the deck, and the Bradfield Highway now genuinely flies over Kemp Place -- the game has an underpass. Kangaroo Point's cliffs are an actual 20 m drop, Edward Street climbs to 55 m at Spring Hill. Junction events bake spawn/convoy heights (osm_junction.py grew a pure-python DEM sampler); the game respects marker heights everywhere it used to hardcode ground=0. Bugs the terrain surfaced, all found by measurement: - Long road segments chorded across curved ground: the car visually sank to its windows mid-block. Fixed by subdividing draped ribbons. - The 9 m terrain grid aliases cliff edges and bulged metres ABOVE the finely draped roads: a car spawning there was inside the terrain sheet and got depenetrated through the floor into the void (y = -710). Fixed by giving roads real collision and carving the terrain grid down wherever a draped road sample lands (11k+ carve samples on Kangaroo Point alone). - The junction validator and tuner drove throttle-only, which cross-slope drift turned into 40-86 m misses; they now hold aim like a player would. - Edward x Elizabeth launched down a 17% grade, went airborne at the crest and wedged off-street: unwinnable geometry, not a bug. Swapped for Elizabeth x George on the flat lower CBD. All 9 junctions validate. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
433 lines
6.3 KiB
JSON
433 lines
6.3 KiB
JSON
[
|
|
{
|
|
"name": "Albert x Adelaide",
|
|
"spawn": {
|
|
"x": 20.69205272588558,
|
|
"z": -24.71065228160878,
|
|
"y": 29.84,
|
|
"dx": -0.6633868531476461,
|
|
"dz": -0.7482766086621067
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
-58.84614846630014,
|
|
-114.42417420924829,
|
|
11.97
|
|
],
|
|
[
|
|
-53.880474905008,
|
|
-108.39185473942744,
|
|
12.77
|
|
],
|
|
[
|
|
-51.24051503498836,
|
|
-105.52578654474546,
|
|
14.25
|
|
],
|
|
[
|
|
-20.352984240690695,
|
|
-70.76962163514554,
|
|
23.48
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-86.70325250389301,
|
|
-94.08771386994844,
|
|
22.9
|
|
],
|
|
[
|
|
-77.60701968874399,
|
|
-101.92094169090129,
|
|
18.15
|
|
],
|
|
[
|
|
-72.06522503228508,
|
|
-106.94786296530025,
|
|
14.98
|
|
],
|
|
[
|
|
-68.79209061830386,
|
|
-109.50838129624599,
|
|
13.7
|
|
],
|
|
[
|
|
-62.692661313561906,
|
|
-114.75385541597699,
|
|
12.25
|
|
],
|
|
[
|
|
-56.45081914916183,
|
|
-120.13849830634709,
|
|
11.56
|
|
],
|
|
[
|
|
-53.14418135326541,
|
|
-122.9809049049611,
|
|
11.66
|
|
],
|
|
[
|
|
-38.75486932340002,
|
|
-135.5677577748611,
|
|
14.48
|
|
],
|
|
[
|
|
-8.138880164463979,
|
|
-163.05430391717795,
|
|
16.8
|
|
],
|
|
[
|
|
7.537426213222782,
|
|
-176.88629254786764,
|
|
19.45
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-24.38938905950134,
|
|
-67.18250076477023,
|
|
24.51
|
|
],
|
|
[
|
|
-55.272013374374126,
|
|
-101.93315225504524,
|
|
15.33
|
|
],
|
|
[
|
|
-57.98533525129133,
|
|
-104.88327646076375,
|
|
14.17
|
|
],
|
|
[
|
|
-63.01508813331892,
|
|
-110.99198219061685,
|
|
12.81
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
11.110167779562063,
|
|
-172.83715465195058,
|
|
20.06
|
|
],
|
|
[
|
|
-4.543064055336218,
|
|
-159.02564328250827,
|
|
17.14
|
|
],
|
|
[
|
|
-35.16387720923361,
|
|
-131.5347966250365,
|
|
14.59
|
|
],
|
|
[
|
|
-49.59536988091847,
|
|
-118.91077749494814,
|
|
12.53
|
|
],
|
|
[
|
|
-52.92601130212681,
|
|
-116.04756569366813,
|
|
12.11
|
|
],
|
|
[
|
|
-59.168575286057155,
|
|
-110.66230098388816,
|
|
12.46
|
|
],
|
|
[
|
|
-65.33626025215173,
|
|
-105.35901550369637,
|
|
14.71
|
|
],
|
|
[
|
|
-68.5423745958537,
|
|
-102.85524463438601,
|
|
15.97
|
|
],
|
|
[
|
|
-74.0429581637501,
|
|
-97.86416150877923,
|
|
18.58
|
|
],
|
|
[
|
|
-83.17948939242227,
|
|
-89.9958813300908,
|
|
23.25
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-63.049013950748005,
|
|
-111.03404120330288,
|
|
12.8
|
|
],
|
|
[
|
|
-67.67311197746825,
|
|
-116.88556835863362,
|
|
12.36
|
|
],
|
|
[
|
|
-69.33640432781439,
|
|
-119.01651536179543,
|
|
12.14
|
|
],
|
|
[
|
|
-72.74965354025018,
|
|
-122.55658461736515,
|
|
11.98
|
|
],
|
|
[
|
|
-98.24408864239251,
|
|
-142.51997682349207,
|
|
18.09
|
|
],
|
|
[
|
|
-106.03262882232805,
|
|
-149.46281622691504,
|
|
21.13
|
|
],
|
|
[
|
|
-127.2548410984026,
|
|
-167.5083127878196,
|
|
27.66
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-123.7567869560363,
|
|
-171.62214521234466,
|
|
28.43
|
|
],
|
|
[
|
|
-102.50831375382124,
|
|
-153.55417337313145,
|
|
20.4
|
|
],
|
|
[
|
|
-94.84937670776534,
|
|
-146.71949237661244,
|
|
17.28
|
|
],
|
|
[
|
|
-69.3394816295263,
|
|
-126.74355578269574,
|
|
11.23
|
|
],
|
|
[
|
|
-65.32529933336386,
|
|
-122.63190423762802,
|
|
11.48
|
|
],
|
|
[
|
|
-63.432906391639634,
|
|
-120.22931724123647,
|
|
11.7
|
|
],
|
|
[
|
|
-58.81222264887106,
|
|
-114.38211519656227,
|
|
11.97
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
},
|
|
{
|
|
"name": "Elizabeth x George",
|
|
"spawn": {
|
|
"x": -167.94554211176842,
|
|
"z": 282.4630938016437,
|
|
"y": 13.4,
|
|
"dx": 0.7551073297079488,
|
|
"dz": -0.6556011902226315
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
-151.6480512074991,
|
|
261.15863374688365,
|
|
20.11
|
|
],
|
|
[
|
|
-144.0595617023658,
|
|
254.3334990786212,
|
|
21.13
|
|
],
|
|
[
|
|
-143.3213169995492,
|
|
253.69278253341383,
|
|
21.21
|
|
],
|
|
[
|
|
-91.08224191170491,
|
|
208.5453042937327,
|
|
26.1
|
|
],
|
|
[
|
|
-88.11035783744204,
|
|
205.98090738044175,
|
|
25.99
|
|
],
|
|
[
|
|
-80.87164084704513,
|
|
199.7122732897846,
|
|
25.71
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-118.25454597584726,
|
|
162.31711832498388,
|
|
27.58
|
|
],
|
|
[
|
|
-141.88997628727992,
|
|
134.01017432495556,
|
|
28.01
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-77.33660099284295,
|
|
203.79436751079447,
|
|
25.77
|
|
],
|
|
[
|
|
-84.57742467711269,
|
|
210.06482501974904,
|
|
26.02
|
|
],
|
|
[
|
|
-87.55143656981038,
|
|
212.6310617067039,
|
|
26.03
|
|
],
|
|
[
|
|
-139.79024774732977,
|
|
257.7783118670535,
|
|
21.09
|
|
],
|
|
[
|
|
-140.45452335644003,
|
|
258.3539093219179,
|
|
21.03
|
|
],
|
|
[
|
|
-148.03695777611765,
|
|
265.1736062536181,
|
|
19.8
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-137.74491839162505,
|
|
130.5491780750776,
|
|
27.82
|
|
],
|
|
[
|
|
-114.10948808019242,
|
|
158.85612207510593,
|
|
26.89
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-80.89109247754493,
|
|
199.7292817019625,
|
|
25.71
|
|
],
|
|
[
|
|
-74.7953733286614,
|
|
194.34772839631796,
|
|
25.24
|
|
],
|
|
[
|
|
-35.46218143888725,
|
|
160.46495405823146,
|
|
21.98
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-81.10769187758535,
|
|
203.56321084385132,
|
|
25.83
|
|
],
|
|
[
|
|
-86.41612277054091,
|
|
197.68669995304248,
|
|
25.87
|
|
],
|
|
[
|
|
-97.11136428582687,
|
|
185.75737187487675,
|
|
26.43
|
|
],
|
|
[
|
|
-118.18679983484368,
|
|
162.3951682081065,
|
|
27.58
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
}
|
|
] |