Improve small-terrain placement and show startup failure causes; record Workshop 0.0.120
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-10-24 03:03:10 +02:00
parent 253dde90cd
commit 3768ce7ed8
25 changed files with 4058 additions and 51 deletions
+25 -1
View File
@@ -124,8 +124,32 @@ candidate still passes terrain, navigation, slope and aircraft-clearance checks;
a missing airport does not allow an unsafe spawn. Searches have finite time and
attempt budgets and never fall back to coordinates from another map.
Terrain-generated placement allows up to 48,000 candidates or 120 seconds per
site, whichever comes first, keeping the existing cooperative 8 ms work slices.
Airport-only extraction searches broaden after 12,000 candidates or 30 seconds
without resetting that total budget. The fallback surveys the terrain for a
helicopter landing zone and retains the normal primary/secondary aircraft
clearance and navigation checks.
On terrain-generated maps, prison-to-airport separation is 15% of the shorter
world axis, clamped to 200–1,500 m (300 m on a 2 km map). This changes tactical
spacing, not the physical footprint or slope allowance. Original authored Everon
placement retains its 1,500 m airport buffer and existing search/fallback rules.
Maps without sufficient clear ground or a working Soldiers navigation mesh can
still fail preparation. See [placement validation](evidence/small-terrain-placement-2026-10-24/README.md).
Search diagnostics use the `Reintroduced [placement search]` log prefix. Each
summary identifies the site, attempts and elapsed milliseconds, with counts for
failed or deferred checks: water, uneven ground, obstacles, road/airport distance,
site spacing, navigation and aircraft clearance. Summaries appear on completion,
exhaustion and airport fallback, plus every 30 seconds during a long search.
Counts describe checks rather than unique candidates: a candidate awaiting a
navigation tile can be checked repeatedly. Mandatory placement failures also
include the site and rejection summary directly on the loading screen, so no
chat command is needed. The same detail remains available in mission status.
The selected scenario must supply `SCR_BaseGameMode`, a usable `Soldiers` navmesh,
world bounds spanning 2–100 km on both axes, and enough clear navigable ground.
world bounds spanning 1–100 km on both axes, and enough clear navigable ground.
Navigation remains the terrain author's responsibility. A plain exploration
scenario is the recommended starting point. Arbitrary scripted scenarios can
retain their own tasks and entities; saved campaigns and every third-party game