Skip to content

test(construction): measure start-zone building capacity (21.1, #92) - #100

Merged
cubetribe merged 1 commit into
mainfrom
feat/s21-startzone-capacity
Aug 18, 2026
Merged

test(construction): measure start-zone building capacity (21.1, #92)#100
cubetribe merged 1 commit into
mainfrom
feat/s21-startzone-capacity

Conversation

@cubetribe

Copy link
Copy Markdown
Collaborator

Was

Paket 21.1 aus Sprint 21 (#92, korrigierte D-108), zwei Lieferungen:

  1. Messung statt Gefühltools/Nova.SimRunner.Tests/BuildZoneCapacityTests.cs beziffert die Kapazität der kanonischen Startzone in zwei Spuren: eine echte Systemspur über ValidatePlacement + PlaceCompletedBuilding am unveränderten System, und ein parametrisiertes Geometriemodell, das die Systemspur beim geltenden Wert Zelle für Zelle reproduzieren muss, bevor seine Variantenzahlen zählen.
  2. Docstring-KorrekturBuildInfluenceRadiusCells nennt jetzt die Ankerrollen (HQ, Lager, Kraftwerk, D-104) statt des mehrdeutigen „an own construction anchor", das die Fehlprämisse der ursprünglichen D-108-Fassung gespeist hat. Reine Dokumentation, kein Verhalten.

Warum

Der Testbericht T-01 meldete, der Bauplatz sei „nach einigen Kraftwerken relativ schnell ausgeschöpft". Die Messung (kanonische Startlage: HQ (4,4), alle fünf Felder, einheitlicher 3×3-Footprint, Kraftwerke als Maßstab):

MinimumBuildingDistanceCells Gebäude in der Startzone
2 (Ist, D-104) 15
1 23 (+53 %)
0 23 — identisch zu 1, weil die Footprint-Belegung jede Konfiguration mit Abstand < 1 ohnehin verbietet; der einzige wirksame Hebel wäre 2 → 1

Die 15 sind eine untere Schranke für die Anfangszone, keine Kapazitätsgrenze: Kraftwerke sind heute schon Anker und schieben die Grenze mit. Die gemeldete Enge ist damit kein Abstandsproblem — Sichtbarkeit (21.4) ist die Antwort, nicht der Wert.

Entscheidungen (Inhaber, korrigierte D-108)

  • Beide Konstanten bleiben unverändert (8 und 2); der Test pinnt sie und macht das Paket erneut auf, falls eine fällt.
  • Die Öffnung der Ankerliste (jedes eigene fertiggestellte Gebäude wird Anker) ist eine Verhaltensänderung mit eigenem Regel-PR, zweitem Baseline-PR und Merge-Fenster mit dem Einheitenstrang — bewusst nicht Teil dieses PRs.

Betroffene Bereiche

  • tools/Nova.SimRunner.Tests/BuildZoneCapacityTests.cs (neu)
  • Assets/_Project/Scripts/Simulation/Construction/ConstructionSystem.cs (nur Docstring)
  • CHANGELOG.md (eine Zeile unter [Unreleased], an die bestehende 21.1-Messungszeile angehängt)

Nachweis

  • dotnet test tools/Nova.SimRunner.Tests -c Release lokal: 725/725 grün (~15 s, Repo-SDK 8.0.318), Stand nach Rebase auf e650864.
  • Kein Verhaltens-PR: keine Baseline-Bewegung, keine Golden-Bytes betroffen.
  • Nicht gespielt: der PR ändert kein Spielverhalten (Test + Kommentar); es gibt nichts Spielbares abzunehmen.

Sprint 21 package 21.1 (issue #92, D-108): the reported tightness of the
build zone gets a number before any value changes.

Two lanes keep it honest: a real-system lane drives ValidatePlacement +
PlaceCompletedBuilding at the current constant, and a geometric model must
reproduce that lane cell-for-cell before its variant numbers count.
Result for the canonical HQ anchor zone (uniform 3x3 footprints, Power
plants as the yardstick): 15 buildings at MinimumBuildingDistanceCells = 2,
23 at 1, and 23 at 0 — footprint occupancy already forbids every sub-1
configuration, so the only effective lever would be 2 -> 1. Both constants
stay unchanged per the corrected D-108; the 15 are a lower bound for the
opening zone, not a cap, since every anchor pushes the boundary outward.

Also rewrites the BuildInfluenceRadiusCells docstring to name the anchor
roles (HQ, Storage, Power — D-104) instead of the ambiguous "an own
construction anchor" that fed the D-108 misreading. The corrected D-108
rule change (every own completed building becomes an anchor) is a separate
PR and deliberately not implemented here.
@cubetribe
cubetribe merged commit 9281341 into main Aug 18, 2026
7 checks passed
@cubetribe
cubetribe deleted the feat/s21-startzone-capacity branch August 18, 2026 08:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant