ShitboxInfinity/levels/queen_st_mall/junctions.json
m3ultra 65da434678 Real terrain: DEM elevation under every level
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>
2026-07-30 15:08:42 +10:00

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
]
}
]