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>
536 lines
7.9 KiB
JSON
536 lines
7.9 KiB
JSON
[
|
|
{
|
|
"name": "Alice x George",
|
|
"spawn": {
|
|
"x": -163.58628244865508,
|
|
"z": 162.06599199440433,
|
|
"y": 14.0,
|
|
"dx": 0.7668331983120437,
|
|
"dz": -0.6418464348787193
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
-71.62300756706763,
|
|
85.0918821008208,
|
|
15.68
|
|
],
|
|
[
|
|
-72.10279819575109,
|
|
85.49061753866586,
|
|
15.69
|
|
],
|
|
[
|
|
-82.55345192912239,
|
|
94.80588029839768,
|
|
16.5
|
|
],
|
|
[
|
|
-104.44928325520195,
|
|
113.36472803055571,
|
|
16.93
|
|
],
|
|
[
|
|
-114.55295338424757,
|
|
122.93815788447793,
|
|
16.38
|
|
],
|
|
[
|
|
-118.63551709634598,
|
|
126.33214688818488,
|
|
16.11
|
|
],
|
|
[
|
|
-124.17972594270637,
|
|
130.60060399325408,
|
|
15.66
|
|
],
|
|
[
|
|
-132.4126578466066,
|
|
136.84137198262476,
|
|
15.15
|
|
],
|
|
[
|
|
-135.42619497476394,
|
|
139.13115862719584,
|
|
15.05
|
|
],
|
|
[
|
|
-137.0173915026139,
|
|
140.32992242527928,
|
|
15.02
|
|
],
|
|
[
|
|
-142.22691046279974,
|
|
144.18129435873087,
|
|
14.99
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-75.361941989609,
|
|
84.82292365250544,
|
|
16.0
|
|
],
|
|
[
|
|
-80.93953886827424,
|
|
78.61163770120406,
|
|
16.61
|
|
],
|
|
[
|
|
-82.56599989409156,
|
|
76.7348960854059,
|
|
16.75
|
|
],
|
|
[
|
|
-115.40558143561937,
|
|
38.74155522137386,
|
|
23.41
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-145.4370805808313,
|
|
139.83908204087984,
|
|
15.0
|
|
],
|
|
[
|
|
-140.2367304705485,
|
|
135.99450357474848,
|
|
15.01
|
|
],
|
|
[
|
|
-138.6871885076824,
|
|
134.82698377267795,
|
|
15.02
|
|
],
|
|
[
|
|
-135.67603860636424,
|
|
132.53900681717874,
|
|
15.1
|
|
],
|
|
[
|
|
-127.45466133363814,
|
|
126.30702760692736,
|
|
15.64
|
|
],
|
|
[
|
|
-121.99640893818653,
|
|
122.1055163120108,
|
|
15.97
|
|
],
|
|
[
|
|
-118.19749682812089,
|
|
118.9535245154313,
|
|
16.16
|
|
],
|
|
[
|
|
-108.01476176313997,
|
|
109.30919316947609,
|
|
16.87
|
|
],
|
|
[
|
|
-86.07852578965569,
|
|
90.71517690194068,
|
|
16.9
|
|
],
|
|
[
|
|
-75.68968831102165,
|
|
81.45400766143295,
|
|
16.16
|
|
],
|
|
[
|
|
-75.08305996358739,
|
|
80.94603629889595,
|
|
16.14
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-111.32018174165945,
|
|
35.21033597859207,
|
|
22.71
|
|
],
|
|
[
|
|
-78.48079808538708,
|
|
73.20344791473178,
|
|
16.61
|
|
],
|
|
[
|
|
-76.9072614072839,
|
|
75.01987789888024,
|
|
16.48
|
|
],
|
|
[
|
|
-71.34412554104603,
|
|
81.2149947472113,
|
|
15.86
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-72.11668883510822,
|
|
80.61865688274891,
|
|
15.94
|
|
],
|
|
[
|
|
-63.31551687082244,
|
|
85.23196646473183,
|
|
15.12
|
|
],
|
|
[
|
|
-54.55178175870453,
|
|
95.53822905343011,
|
|
14.31
|
|
],
|
|
[
|
|
-39.78320194928109,
|
|
112.96784568335697,
|
|
16.67
|
|
],
|
|
[
|
|
-38.24953472930413,
|
|
114.64142478239386,
|
|
16.96
|
|
],
|
|
[
|
|
-37.466790819459995,
|
|
115.77089209241056,
|
|
17.13
|
|
],
|
|
[
|
|
-36.90754547102499,
|
|
116.86830840435711,
|
|
17.26
|
|
],
|
|
[
|
|
-36.64154284861633,
|
|
117.96012844030032,
|
|
17.36
|
|
],
|
|
[
|
|
-36.54962586770791,
|
|
118.92829018795193,
|
|
17.43
|
|
],
|
|
[
|
|
-36.58380403095183,
|
|
120.63163096695364,
|
|
17.52
|
|
],
|
|
[
|
|
-36.733516672801336,
|
|
121.77324800253669,
|
|
17.57
|
|
],
|
|
[
|
|
-36.949600973076684,
|
|
122.55506784741175,
|
|
17.58
|
|
],
|
|
[
|
|
-37.31118692587169,
|
|
123.40422578212599,
|
|
17.59
|
|
],
|
|
[
|
|
-38.02064964168787,
|
|
124.38554265247478,
|
|
17.56
|
|
],
|
|
[
|
|
-39.45793344555888,
|
|
125.80100694689808,
|
|
17.47
|
|
],
|
|
[
|
|
-41.96015977939887,
|
|
127.8781767661959,
|
|
17.33
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-45.40767874247836,
|
|
123.72190283402932,
|
|
16.65
|
|
],
|
|
[
|
|
-43.03089623055088,
|
|
121.75206425317394,
|
|
16.81
|
|
],
|
|
[
|
|
-41.9792929338678,
|
|
120.7127857471952,
|
|
16.87
|
|
],
|
|
[
|
|
-41.99739811738572,
|
|
120.72105141795794,
|
|
16.87
|
|
],
|
|
[
|
|
-42.06268798731611,
|
|
120.81830615252781,
|
|
16.87
|
|
],
|
|
[
|
|
-42.041735423545425,
|
|
120.78187839726885,
|
|
16.87
|
|
],
|
|
[
|
|
-41.974164266802894,
|
|
120.30911503284231,
|
|
16.85
|
|
],
|
|
[
|
|
-41.94908321684239,
|
|
119.00484301205215,
|
|
16.78
|
|
],
|
|
[
|
|
-41.975684667956976,
|
|
118.80092035936316,
|
|
16.76
|
|
],
|
|
[
|
|
-41.94671891520851,
|
|
118.80911519521383,
|
|
16.77
|
|
],
|
|
[
|
|
-42.0788310934576,
|
|
118.57964350736775,
|
|
16.74
|
|
],
|
|
[
|
|
-42.38250615411705,
|
|
118.1168452176333,
|
|
16.67
|
|
],
|
|
[
|
|
-43.89081206390128,
|
|
116.47320431640294,
|
|
16.4
|
|
],
|
|
[
|
|
-58.67282832403665,
|
|
99.02778134654227,
|
|
14.55
|
|
],
|
|
[
|
|
-66.81772305118318,
|
|
89.3422647349603,
|
|
15.08
|
|
],
|
|
[
|
|
-74.5893786955468,
|
|
85.41926151696784,
|
|
15.91
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
},
|
|
{
|
|
"name": "Margaret x Edward",
|
|
"spawn": {
|
|
"x": 274.9079157711072,
|
|
"z": -373.12117782739404,
|
|
"y": 13.91,
|
|
"dx": -0.7427057931255263,
|
|
"dz": 0.6696178797327494
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
185.8338152967176,
|
|
-292.8126451679154,
|
|
14.05
|
|
],
|
|
[
|
|
193.65593395098287,
|
|
-299.88251164434115,
|
|
14.74
|
|
],
|
|
[
|
|
211.37786867540518,
|
|
-315.2307257048046,
|
|
15.6
|
|
],
|
|
[
|
|
216.02310568686988,
|
|
-319.25459820267537,
|
|
16.29
|
|
],
|
|
[
|
|
237.6429961947087,
|
|
-338.58229333857753,
|
|
18.91
|
|
],
|
|
[
|
|
239.66099718191472,
|
|
-341.2883463335457,
|
|
19.31
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
179.81812157632743,
|
|
-304.16623584225226,
|
|
14.19
|
|
],
|
|
[
|
|
181.35983927566346,
|
|
-302.4069925620872,
|
|
14.27
|
|
],
|
|
[
|
|
184.2133034529848,
|
|
-299.1448137854387,
|
|
14.28
|
|
],
|
|
[
|
|
189.71555797124375,
|
|
-292.5416508365839,
|
|
14.26
|
|
],
|
|
[
|
|
194.9234531376747,
|
|
-286.3366793395667,
|
|
14.2
|
|
],
|
|
[
|
|
234.05675616721896,
|
|
-241.1315253602194,
|
|
16.15
|
|
],
|
|
[
|
|
244.50993125963066,
|
|
-229.32934036140196,
|
|
14.64
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
243.95347049022743,
|
|
-338.01196526635846,
|
|
16.8
|
|
],
|
|
[
|
|
241.32949950132615,
|
|
-334.63644826175323,
|
|
16.37
|
|
],
|
|
[
|
|
219.61114951437548,
|
|
-315.21901379742513,
|
|
15.39
|
|
],
|
|
[
|
|
214.91318335480702,
|
|
-311.1488694949895,
|
|
15.27
|
|
],
|
|
[
|
|
197.21785955435436,
|
|
-295.8238559560563,
|
|
14.84
|
|
],
|
|
[
|
|
189.45480420951895,
|
|
-288.8065948320647,
|
|
14.03
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
240.4674984004257,
|
|
-225.74901403845038,
|
|
13.81
|
|
],
|
|
[
|
|
229.982416914263,
|
|
-237.5875502401286,
|
|
14.69
|
|
],
|
|
[
|
|
190.83429465784906,
|
|
-282.80981346079136,
|
|
13.75
|
|
],
|
|
[
|
|
185.5730615349928,
|
|
-289.07758916339617,
|
|
13.81
|
|
],
|
|
[
|
|
180.09260788812207,
|
|
-295.6548470145767,
|
|
13.73
|
|
],
|
|
[
|
|
177.29669340310514,
|
|
-298.8501898379666,
|
|
13.58
|
|
],
|
|
[
|
|
175.7569318305437,
|
|
-300.6071997580377,
|
|
13.51
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
}
|
|
] |