docs(simulation-report): 📝 Refine simulation mechanics documentation with updated details for clarity and completeness

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-04-09 00:25:43 -07:00
parent 0196390f01
commit 20c1194d7a

View file

@ -1,6 +1,6 @@
# Simulation Mechanics — What's Real, What's Designed
*A reference guide to what the scenario sweep actually simulates*
*A reference guide to what the scenario sweep actually simulates -- updated post-iter-7o sweep (2026-04-09)*
---
@ -12,7 +12,7 @@
- Site quality score (lair distance, terrain quality)
- Strategic axis weight (`expansion` parameter per profile)
Expansionist (expansion=5) founds cities aggressively and reliably reaches 28 cities by T500. Militarist (expansion=2) and Merchant (expansion=2) reliably reach 17. The Scientist (expansion=3) reaches 21. These counts are consistent across map sizes, confirming the city count is expansion-rate-capped, not territory-capped.
Expansionist (expansion=5) founds cities aggressively and reliably reaches 26 cities by T500. Militarist (expansion=2) and Merchant (expansion=2) reliably reach 17. The Scientist (expansion=3) reaches 20. These counts are consistent across map sizes, confirming the city count is expansion-rate-capped, not territory-capped.
**What doesn't happen:** Cities do not acquire tiles. There is no "worked tile" radius. No citizen is assigned to any hex. The city has no territory boundary — "city territory" in the encounter system refers to proximity to the city center coordinate, not an explicit tile ownership set.
@ -24,10 +24,10 @@ The gold values in the scenario reports are fully deterministic by profile:
| Profile | T500 Gold |
|---------|-----------|
| Militarist | 25,142 |
| Expansionist | 43,166 |
| Merchant | 25,592 |
| Scientist | 36,728 |
| Militarist | 27,244 |
| Expansionist | 45,560 |
| Merchant | 68,020 |
| Scientist | 33,700 |
These values are **identical across 2AI, 3AI, and 4AI scenarios** regardless of map size, other players, or ecological conditions. This is because gold is computed as:
@ -86,7 +86,7 @@ defense: 1
No unit tier field exists. Units don't advance or differentiate. A "unit" at turn 500 is mechanically identical to the starting units at turn 1.
**What this means for kill rate data:** The T7-T10 kill rate (73-81%) reflects a T7-T10 apex predator fighting a fixed-stat dwarf warrior. The T4-T6 kill rate (11-17%) reflects the same warrior against a mid-tier lair species. The kill rate data is valid for *this unit configuration* but would change substantially once unit tiers are implemented a T6 veteran unit should survive T4-T6 encounters much more reliably.
**What this means for kill rate data:** The T7-T10 kill rate (60-63%) reflects a T7-T10 apex predator fighting a fixed-stat dwarf warrior. The T4-T6 kill rate (20-27%) reflects the same warrior against a mid-tier lair species. The kill rate data is valid for *this unit configuration* but would change substantially once unit tiers are implemented -- a T6 veteran unit should survive T4-T6 encounters much more reliably.
**Fauna tier vs player unit tier:** Fauna are tiered T1-T10. Player units have no tier equivalent, but their stats (`atk: 12, hp: 60`) place them roughly at the low end of T4 in the encounter formula. This is intentional for the baseline — the bench is testing raw ecological pressure against a standard unit, not a tiered army.
@ -143,11 +143,10 @@ Given all of the above, here is what the scenario sweep's numbers actually repre
## What's Next
The scenario sweep established that the ecology is balanced at the 64×64 / 2-player scale. The systems still needing implementation to move toward a complete simulation are:
The scenario sweep established that the ecology is balanced across all map sizes (48x48 through 96x96) and all player counts (1-4). The systems still needing implementation to move toward a complete simulation are:
1. **Tile yield calculation** — read terrain JSON, sum worked-tile yields per city; rewire gold/prod/food to come from tiles
2. **City territory / worked-tile system** — city radius, citizen assignment, tile ownership
3. **Building construction** — wire `score_building()` evaluator to actually queue and build buildings; wipe hardcoded `food_yield: 4, prod_yield: 4`
4. **Research progression** — accumulate science from cities, call `pick_tech()` when threshold crossed, unlock buildings/units
5. **Unit tier differentiation** — multiple unit types with tier values; higher-tier units survive mid-tier encounters reliably
6. **Map-size production scaling** — starting production yield should scale with map area to keep armies viable on 80×80+
1. **Tile yield calculation** -- read terrain JSON, sum worked-tile yields per city; rewire gold/prod/food to come from tiles
2. **City territory / worked-tile system** -- city radius, citizen assignment, tile ownership
3. **Building construction** -- wire `score_building()` evaluator to actually queue and build buildings; wipe hardcoded `food_yield: 4, prod_yield: 4`
4. **Research progression** -- accumulate science from cities, call `pick_tech()` when threshold crossed, unlock buildings/units
5. **Unit tier differentiation** -- multiple unit types with tier values; higher-tier units survive mid-tier encounters reliably