ShitboxInfinity/levels/story_bridge/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

220 lines
3.2 KiB
JSON

[
{
"name": "Bridge Approach",
"spawn": {
"x": 35.51608905758518,
"z": -118.5964830886139,
"y": 6.7,
"dx": -0.11409585864571734,
"dz": -0.9934697454074263
},
"streams": [
{
"pts": [
[
21.82446567810751,
-237.81387509878263,
37.66
],
[
23.145720027383163,
-226.45520770652828,
37.76
],
[
24.788209612143817,
-213.84815371354867,
35.66
],
[
26.145569174952232,
-200.29741976993301,
31.44
]
],
"speed": 12.0,
"interval": 1.5
},
{
"pts": [
[
2.199941588527042,
-240.32717119002737,
36.31
],
[
-2.5248172223755736,
-243.91950536774928,
35.81
],
[
-6.325349530807717,
-247.60965512377,
35.17
],
[
-15.183983237537262,
-255.2613583327868,
33.26
],
[
-19.822722086570074,
-258.6729952966697,
32.36
],
[
-24.279515332983824,
-261.70335578638884,
31.56
],
[
-29.011437974400625,
-263.89076106496833,
30.9
]
],
"speed": 12.0,
"interval": 1.5
},
{
"pts": [
[
20.772447151780117,
-199.75931223039953,
31.4
],
[
19.423377981138138,
-213.23286388675078,
35.3
],
[
17.78654515972297,
-225.7924522932427,
37.39
],
[
16.46063564037367,
-237.18991410136036,
37.31
]
],
"speed": 11.0,
"interval": 1.8
},
{
"pts": [
[
-26.737042902514784,
-268.7884265350654,
30.16
],
[
-21.61124337794858,
-266.3980682135746,
30.89
],
[
-16.704188313209045,
-263.0814811029762,
31.77
],
[
-11.761774350471743,
-259.43849686691397,
32.83
],
[
-2.7224195143774796,
-251.63195487598963,
34.86
],
[
0.9839307874462617,
-248.02422063236523,
35.6
],
[
5.4649806575202335,
-244.6282780101317,
36.2
]
],
"speed": 11.0,
"interval": 1.8
},
{
"pts": [
[
11.27070084290225,
-197.84784324166512,
31.27
],
[
10.896175804718348,
-204.76641770228525,
33.12
],
[
10.476477879675205,
-211.20975788808624,
34.75
],
[
9.92304078347784,
-216.20700696593718,
35.63
],
[
8.932958301853615,
-221.62531766816238,
36.37
],
[
7.508738699199866,
-226.8653717079938,
36.97
]
],
"speed": 12.0,
"interval": 1.5
},
{
"pts": [
[
28.875188928696993,
-229.49242546244793,
38.44
],
[
28.72548025209394,
-214.05366159277472,
35.92
],
[
28.150874632761848,
-209.45956029627345,
34.63
],
[
27.279147353059784,
-204.7812989955361,
32.98
],
[
26.094879529030933,
-199.44340263065618,
31.15
]
],
"speed": 12.0,
"interval": 1.5
}
],
"targets": [
15000,
35000,
60000
]
}
]