ShitboxInfinity/levels/southbank/junctions.json
m3ultra aac4384c05 Per-junction medal targets, measured; fix the last unplayable junction
Medal targets are no longer one uniform 15/35/60k guess across every event.
tools/tune_junctions.gd plays each junction 12 times with varied launches and
sets bronze/silver/gold at the 35th/65th/88th percentile of actual damage, so
they now range from $4k at Cliffs Corner to $73k gold at Melbourne x Merivale.
The old numbers made half the events impossible and the other half trivial.

Grey x Glenelg scored $0 in 12/12 runs and took three fixes, each found by
measuring rather than reading:
- The launch sat on the street centreline, so the car drove cleanly BETWEEN the
  two convoy lanes -- closest pass 2.9 m, almost exactly the 2.7 m lane offset.
  It now launches in a lane. (The first attempt offset the wrong way and widened
  the pass to 5.5 m, which is how the sign error announced itself.)
- int(L / headway) floors to one car on a short clipped stream, so that junction
  fielded 9 convoy cars against the usual 20-25. Minimum 3 per stream, evenly
  spaced to fit.
Result: $0 -> $91k, convoy 9 -> 18, and 0 of 9 junctions now unplayable.

The tuner has turned out to be the event validator as much as a balance tool --
"scores nothing in every run" is an unplayable event, not a tuning problem.

Also from the review: the deformer no longer crumples det_* panels after they've
been shed onto their own body, and notes that rebuilding an ArrayMesh drops any
imported LODs.

Honest gap: Cliffs Corner and Bridge Approach show median == max at ~$4.7k --
winnable and correctly tuned, but the run ends on scenery before the convoy is
reached. Both are curved approaches; they want better crossings picked by hand.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 00:15:05 +10:00

347 lines
5.0 KiB
JSON

[
{
"name": "Melbourne x Merivale",
"spawn": {
"dx": 0.852877329272599,
"dz": -0.522111349438832,
"x": -596.868944790812,
"z": -210.352681833747
},
"streams": [
{
"interval": 1.5,
"pts": [
[
-522.243146999435,
-263.291609906853
],
[
-513.298474365917,
-268.564620105823
],
[
-505.766456184546,
-272.847714331466
],
[
-497.908990415611,
-277.262924417905
]
],
"speed": 12.0
},
{
"interval": 1.5,
"pts": [
[
-518.331960424561,
-316.208166257863
],
[
-502.539989208635,
-289.117722143497
],
[
-501.031072012682,
-286.533998911906
],
[
-499.307492099731,
-283.769724904009
],
[
-498.930545303579,
-283.241377841783
],
[
-494.345014474119,
-276.414559193545
]
],
"speed": 12.0
},
{
"interval": 1.8,
"pts": [
[
-495.263684530077,
-272.555233182069
],
[
-503.109412344477,
-268.146638068316
],
[
-510.589252181608,
-263.893419493984
],
[
-519.500789611495,
-258.639784893289
]
],
"speed": 11.0
},
{
"interval": 1.8,
"pts": [
[
-498.827660471569,
-273.403598406429
],
[
-503.407264010886,
-280.221611358154
],
[
-503.859919895901,
-280.865348695483
],
[
-505.652275149097,
-283.740348688276
],
[
-507.204986888727,
-286.397833056652
],
[
-522.997174842978,
-313.488648942198
]
],
"speed": 11.0
},
{
"interval": 1.5,
"pts": [
[
-497.709720982148,
-277.364279299137
],
[
-489.265341389724,
-281.217004706688
],
[
-470.163954224667,
-292.974174195101
],
[
-453.397320014964,
-303.36964984342
],
[
-438.717138348101,
-313.023771847006
],
[
-428.175689682796,
-319.695221818248
]
],
"speed": 12.0
},
{
"interval": 1.5,
"pts": [
[
-490.912703075514,
-271.24169070377
],
[
-487.079481353019,
-265.232181447622
],
[
-460.796114039586,
-221.705738945924
],
[
-449.787661487498,
-203.621656847663
]
],
"speed": 12.0
}
],
"targets": [
35500,
38000,
73000
]
},
{
"name": "Grey x Glenelg",
"spawn": {
"dx": 0.5279471843098,
"dz": 0.849277204792024,
"x": -137.35790798426,
"z": -96.075818860076
},
"streams": [
{
"interval": 1.5,
"pts": [
[
-66.8941396578206,
18.0214549249385
],
[
-68.9372122719242,
14.7292502722074
],
[
-74.0341764510855,
5.78813512164328
],
[
-78.6658442785157,
-1.69267819146961
],
[
-82.8206925318667,
-8.34435236597675
]
],
"speed": 12.0
},
{
"interval": 1.5,
"pts": [
[
-33.0502081552841,
-14.7586201862311
],
[
-35.0675152831888,
-14.5994094114893
],
[
-37.270016261863,
-13.9961460505448
],
[
-43.3585248193085,
-10.7606682738875
],
[
-53.6949181138706,
-4.20452046261836
],
[
-56.3314625884028,
-2.47024586902805
],
[
-63.0911519484621,
2.2185465904455
]
],
"speed": 12.0
},
{
"interval": 1.8,
"pts": [
[
-78.2407420345622,
-11.2051308338488
],
[
-74.079811043889,
-4.54369540834144
],
[
-69.3883249482344,
3.03567007854908
],
[
-64.2732751867703,
12.0075429283282
],
[
-62.3066015113759,
15.1728598756354
]
],
"speed": 11.0
},
{
"interval": 1.8,
"pts": [
[
-66.1688465571084,
-2.2185465904455
],
[
-59.3783588139033,
-6.92854413081255
],
[
-56.6027334256873,
-8.75475233718959
],
[
-46.1200499391949,
-15.4011401262142
],
[
-39.5077365181293,
-18.9106763490265
],
[
-36.1005431869604,
-19.8996785886188
],
[
-33.5155306840827,
-20.1385342138149
]
],
"speed": 11.0
},
{
"interval": 1.5,
"pts": [
[
-62.4286691941866,
-1.5633764655738
],
[
-56.2253414936718,
7.17631569340894
],
[
-31.6082945749603,
46.3990126063831
]
],
"speed": 12.0
},
{
"interval": 1.5,
"pts": [
[
-105.444153258371,
17.2933813892185
],
[
-124.855497585617,
29.0280377160981
],
[
-145.965198973204,
41.6802343084808
]
],
"speed": 12.0
}
],
"targets": [
22500,
25000,
29000
]
}
]