Schneeberg route revision 3
The first Alpine road is unchanged, including both its sampled centerline and editable controls. Their concatenated little-endian float32 SHA-256 remains f52127a9cb3e87d78501481a0fea57ea4e44cf1eecfec8f8a19921a6b52a6221. Its content revision remains 2.
Alps02 and Alps03 now follow the existing adapted Schneeberg DEM. The old second and third roads belonged to an earlier synthetic landscape and lay hundreds of metres above the replacement terrain. They are archived intact in ArtSource/Campaign/AlpineRoads-Revision2-Historical.json for historical geometry regression, not used as runtime roads. Existing revision-2 continuation snapshots are rejected by the existing revision check after this change; campaign completion records remain preserved.
| Authored geometry | Alps02 · Ostflanke → Nordschulter | Alps03 · Nordschulter → Hochplateau |
|---|---|---|
| Content revision | 3 | 3 |
| Road length | 4,099.81 m | 4,177.39 m |
| Maximum absolute grade | 23.50% | 17.70% |
| Minimum horizontal radius | 23.16 m | 35.95 m |
| Maximum convex curvature | 0.000810 /m | 0.000812 /m |
| Maximum road/DEM difference before shoulder grading | 12.18 m | 14.97 m |
| World elevation at endpoint | 808.76 m | 1,474.80 m |
| Adapted elevation above sea level at endpoint | approximately1,374 m | approximately2,040 m |
The roads meet at exactly the same exported point and share the tangent of one continuous authored alignment. Alps02 also starts with the preserved approach's heading. Ordered checkpoints, valid road surfaces and anti-shortcut logic retain their existing production implementations. The tighter mountain bends require braking; these radii do not imply that maximum-speed driving is safe.
Tools/Art/build-schneeberg-roads.py starts with the archived contour-following plan, smooths the horizontal alignment, and solves a constrained vertical fit against the unchanged DEM. Maximum ascent grades are 24% and 18%; the solver uses 23.5% and17.7% with margin for the final interpolated profile. Vertical curvature is explicitly bounded. Terrain and game physics are not changed to pass the route audit. The final frozen float32 arrays are generated by Tools/Art/freeze-alpine-roads.py. NumPy and SciPy are authoring dependencies only.
Editable Unity spline knots sample the final roadbed approximately every24m. CampaignTrackTools.BakeAll refreshes untouched seed scenes while retaining artist edits; root performs that native bake separately. The chapter relief now frames all actual road samples and the broad main massif, and fits elevated road samples as well as terrain vertices in projection.
The measured values above come from the offline authored-geometry report at Docs/QA/schneeberg-road-authoring.json. It checks finite float32 export, length, grade, horizontal radius, inner-edge direction, convex curvature, terrain difference and non-adjacent corridor overlap. CampaignVerification additionally checks the actual Unity route sampler, ordered gates, revision rejection, original approach fingerprint and relief bounds. Native collider driving, player map captures, art and target-GPU acceptance remain separate requirements; this document does not claim those have passed.