Capture current mission, AI, map and administration development

Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
2026-10-13 22:52:53 +02:00
parent a951a96edc
commit 6a667d8deb
8104 changed files with 2124945 additions and 2061 deletions
+18
View File
@@ -17,6 +17,24 @@ A fixed profile selects a family deterministically; cloud variants, wind and oth
`startDateCode` is an internal compact integer: `(year - 1900) * 10000 + month * 100 + day`, with 0 meaning authored. For example, 1989-06-01 is 890601. It intentionally stays below 1,501,232, exactly representable by the existing settings reader's floating-point JSON path. A full `YYYYMMDD` number can exceed single-precision exact integer range and corrupt odd dates. Use the natural date command rather than constructing codes by hand.
## Mission view distance
Administrators can set **World → View distance** in `/esc menu`, or use:
- `/esc mission viewdistance set 3000` — request 3,000 metres for the mission.
- `/esc mission viewdistance set default` — release the mission override.
- `/esc mission viewdistance show` — show the saved request and server limit.
`viewDistanceMetres` accepts 500–10,000 metres, or 0 (`default`). Older valid settings files receive 0 in memory without being rewritten. Successful saves apply during the current round and persist for later rounds. Random selection is unavailable for this setting.
The server publishes the requested distance bounded by its configured maximum. Replicated state reaches existing clients and late joiners. Each graphical client also respects its platform limits. The override resumes within one second after closing inventory/video/admin menus, which can temporarily own the native view distance. Default and mission teardown release the temporary override; player video preferences are never written. If another camera owner has already changed the native distance at release, that value is preserved.
This controls camera rendering distance, not network entity streaming range or weather/fog. A saved request above the server maximum cannot increase that maximum.
`tests/test_view_distance.py` executes the production bounds, temporary override/restore and command bodies with substituted engine boundaries, including save failure, default, dedicated-server no-op and changes by another camera owner. The [native environment run](evidence/native-2026-09-30-view-distance/report.json) completed 90 assertions with no script/runtime failures: the camera reported 2,500 → 3,000 → 2,500 metres, and native JSON reload and unauthorized-command rejection passed. Cleanup and unchanged launch source were confirmed. The strict report retains 13 existing resource/property/localization errors plus one Steam statistics error; this is local Workbench evidence, not dedicated-server/client or join-in-progress qualification. The [full repository checks](evidence/check-2026-09-30-view-distance.log.txt) pass.
The [native admin-menu/prisoner-kit run](evidence/native-2026-09-30-view-distance-menu/report.json) completed 366 assertions without script/runtime failures, including the new Default control, help text fitting its 936×20 widget, and rejection of Random for this fixed-only field. The [initial run](evidence/native-2026-09-30-view-distance-menu-initial/report.json) retained a fixture failure from the old assumption that all menu fields support Random; the fixture now checks `Randomizable` and explicitly verifies rejection for fixed-only fields. The successful rerun retained the same 14 engine errors, with cleanup and unchanged launch source confirmed.
## Validation
`tests/test_environment_policy.py` executes the actual settings validator and production parsing/formatting functions through the existing C++ policy harness. It compares calendar boundary cases across every supported year against Python's independent `datetime` calendar, tests malformed dates and names, and checks defaults and native family names. Existing migration tests cover the added defaults and bounds. These checks pass; they are not Enforce compilation.