build(simulator): 📦️ Rebuild simulator binaries and fingerprint files after dependency or source code updates across all modules

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-04-10 08:53:49 -07:00
parent ba3944f202
commit bc8e4a5653
14 changed files with 485 additions and 0 deletions

View file

@ -0,0 +1,18 @@
---
name: Balance philosophy — luck and timing over strategy dominance
description: All AI strategies should be equally powerful; outcomes determined by map seed, spawn position, and timing, not inherent strategy advantage
type: feedback
---
Strategies should be equally powerful — the winner in any matchup should depend on luck (map seed, spawn position, encounter timing) not on which strategy inherently dominates.
**Why:** The user explicitly stated "luck and timing are more important than the AI strategy because they are equally powerful (except where timing-based attack is the point, like rushing)." This is the StarCraft balance model — all races have ~50% win rates at high level.
**How to apply:**
- In 1v1 tournament bench: run each matchup across MULTIPLE SEEDS (5+), not just seed=42
- A healthy matchup: 3-2 or 2-3 across 5 seeds (winner varies by spawn/map)
- A broken matchup: 5-0 across all seeds (one strategy inherently dominates)
- Balance lever priority: map RNG > encounter timing > axis values
- Diminishing returns on axis investment (5→5 shouldn't be 2× better than 3→3)
- Rushing IS allowed to be timing-dependent — that's the design intent
- Victory threshold tuning should make all paths REACHABLE but none GUARANTEED

View file

@ -0,0 +1,67 @@
# Axis Viability Assessment
## Dominion Bench — iter 8d (2026-04-10)
### Axis ranking by final game state (4AI, T500)
| Rank | Axis | Profile | Cities | Units | Gold | Culture | Victory? | Competitive? |
|------|------|---------|--------|-------|------|---------|----------|-------------|
| 1 | **Culture** | scientist (c=5) | 20 | 1,159 | 33,700 | 421,450 | YES (T179) | Dominant |
| 2 | Expansion | expansionist (e=5) | 26 | 611 | 45,560 | 228,000 | Yes (T254 in 2AI/3AI) | Strong |
| 3 | Wealth | merchant (w=5) | 17 | 202 | 68,020 | 136,240 | Structurally outpaced | Moderate |
| 4 | Production | militarist (p=5) | 17 | 64 | 27,244 | 136,240 | No | Weakest |
### Comparison: iter 8c → iter 8d
| Axis | Rank (8c) | Rank (8d) | Victory (8c) | Victory (8d) | Change |
|------|-----------|-----------|-------------|-------------|--------|
| Wealth | 1st (dominant) | 3rd | YES (T394) | Outpaced by culture | Dethroned |
| Expansion | 2nd | 2nd | No | YES (2AI/3AI) | Gained win-con |
| Culture | 3rd | **1st** | No (unwired) | YES (T179) | New dominant |
| Production | 4th | 4th | No | No | Still weakest |
### Per-axis breakdown
#### Culture (scientist) — DOMINANT
- **Strength**: Fastest culture accumulator at ~560 culture/turn. Wins 4AI by turn 179, 215 turns before the economic threshold would fire. Largest army at T500 (1,159 units) despite heavy PvP losses.
- **Weakness**: Lower city count (20 vs 26 expansionist). Takes the most PvP deaths (1,765) but compensates with massive production (1,262 units produced).
- **Verdict**: Auto-wins 4AI and would win any scenario where it's present with enough cities. Culture victory threshold may be too low relative to accumulation rate.
#### Expansion (expansionist) — STRONG
- **Strength**: Most cities (26), most raw map presence. Wins 2AI and 3AI by culture (reaches 100K at T254). Zero PvP contact in 3AI/4AI due to corner placement.
- **Weakness**: Lower culture axis (2) means slower culture accumulation per city. Loses to the scientist in 4AI despite having 6 more cities. Gold curve (45K at T500) is competitive but outpaced by culture victory timing.
- **Verdict**: Wins when the scientist isn't present. Strongest by territory but second in culture rate. The expansion axis indirectly enables culture victory through city count.
#### Wealth (merchant) — MODERATE, DETHRONED
- **Strength**: Highest gold (68K at T500). Economic victory would fire at T394 if culture didn't exist.
- **Weakness**: Culture victory fires 140-215 turns before economic. The merchant's economic advantage is real but strategically irrelevant — another player always reaches culture 100K first. No way to interfere with opponents' culture accumulation.
- **Verdict**: Went from the only viable winner (iter 8c) to structurally outpaced. Needs either a lower gold threshold, a higher culture threshold, or the ability to spend gold to disrupt opponents.
#### Production (militarist) — WEAKEST, BUT NOW LETHAL
- **Strength**: Most lethal combatant — 1,834 PvP kills at a 1.7:1 kill ratio. The production axis now has real military impact. Units actively seek and kill enemies.
- **Weakness**: PvP kills don't translate to strategic advantage. Zero cities captured. Unit count collapses to 64 by T500 (from peak 76). Culture rate is identical to merchant (272/turn), reaching 100K at ~T367 — too slow to win.
- **Verdict**: The fixes made the militarist dangerous in combat but the axis still has no path to victory. Needs city siege capability and domination victory to be functional.
### Blockers to balanced axis viability (updated)
| Issue | Blocks | Status | Fix priority |
|-------|--------|--------|-------------|
| ~~PvP damage non-persistent~~ | ~~Domination, militarist~~ | **FIXED in iter 8d** | — |
| ~~Culture accumulation unwired~~ | ~~Culture victory~~ | **FIXED in iter 8d** | — |
| ~~AI doesn't target enemies~~ | ~~PvP interaction~~ | **FIXED in iter 8d** | — |
| **Culture threshold too low** | Economic viability | NEW | P1 — culture fires 140-215 turns before economic |
| **No city siege AI** | Domination victory, militarist viability | Open | P0 — AI fights units but doesn't target cities |
| **Tech tree progression too slow** | Science victory | Open | P1 — tech progresses but no one reaches arcane_ascension |
| **City count threshold too high** | CityCount victory | Open | P2 — lower to 25 or scale by map size |
| **No gold raiding / pillaging** | Economic counterplay | Open | P2 — units can't reduce enemy gold |
### Recommended next steps
1. **Add city siege AI targeting** — when an enemy city is within range, target it for siege. This unlocks domination victory and gives the militarist a win condition.
2. **Rebalance victory thresholds** — culture at 100K fires too early relative to economic at 50K. Either raise culture to 200-300K or lower economic to 20-30K so both are competitive.
3. **Wire science victory fully** — ensure at least one player can research arcane_ascension within 500 turns to validate the science path.
4. **Lower city count threshold** — 30 exceeds the cap for all profiles. Lower to 25 (reachable by expansionist at 26 cities).

View file

@ -0,0 +1,166 @@
# 1v1 Tournament Results (iter-8j: spawn variance)
**Date**: 2026-04-08
**Map**: 64x64, 1K ecology ticks, 3 seeds (42, 123, 456)
**Max turns**: 1000
**Profiles**: 8 (loaded from `public/resources/ai/personalities/*.json`)
**Total games**: 24 (8 key matchups x 3 seeds)
**World gen time**: ~32-33s per seed (T5 ecology, 589 named species)
**Match time**: ~5.1s total (avg 213ms/game)
## Changes Since iter-8i
1. **Reverted axis^0.7 diminishing returns** — raw victory axis values restored (no scaling)
2. **Added spawn jitter (0-5 hexes)** — seed-based offset per player from corner bases via SplitMix64 hash, creating natural asymmetry per seed
## Rankings (across all 3 seeds)
| Rank | Profile | W-L | Win% | Primary Victory | Notes |
|------|---------|-----|------|-----------------|-------|
| 1 | Militarist (exp2/prod5/wealth2/culture2) | 8-1 | 89% | city_count/domination | Lost to Expansionist on seed 456 |
| 2 | Turtle (exp2/prod4/wealth4/culture1) | 5-1 | 83% | economic/city_count | Lost to Expansionist on seed 456 |
| 3 | Tech Rusher (exp1/prod3/wealth2/culture5) | 3-3 | 50% | culture | Beats Merchant 3-0, loses to Militarist 0-3 |
| 4 | Expansionist (exp5/prod3/wealth2/culture2) | 3-6 | 33% | domination | 3 wins on seed 456 — spawn variance unlocked viability |
| 5 | Boom (exp5/prod2/wealth5/culture1) | 2-1 | 67% | city_count | Lost to Balanced on seed 123 |
| 6 | Rusher (exp1/prod5/wealth2/culture1) | 2-4 | 33% | city_count | Beats Expansionist on 42/123, loses on 456 |
| 7 | Balanced (exp3/prod3/wealth3/culture3) | 1-2 | 33% | domination | Won 1 on seed 123 — first Balanced win since 8h |
| 8 | Merchant (exp2/prod3/wealth5/culture2) | 0-6 | 0% | none | Lost to both Militarist and Tech Rusher |
## Head-to-Head Results (3 seeds each)
| Matchup | Winner | Record | Variance | Victory Types | Avg Turn |
|---------|--------|--------|----------|---------------|----------|
| Rusher vs Expansionist | Rusher 2-1 | **SPLIT** | seed 456 flips | city_count / domination | T126 |
| Rusher vs Turtle | Turtle 3-0 | consistent | — | economic | T321 |
| Militarist vs Expansionist | Militarist 2-1 | **SPLIT** | seed 456 flips | city_count / domination | T114 |
| Militarist vs Merchant | Militarist 3-0 | consistent | — | city_count | T223 |
| Militarist vs Tech Rusher | Militarist 3-0 | consistent | — | domination | T179 |
| Expansionist vs Turtle | Turtle 2-1 | **SPLIT** | seed 456 flips | city_count / domination | T115 |
| Balanced vs Boom | Boom 2-1 | **SPLIT** | seed 123 flips | city_count / domination | T128 |
| Merchant vs Tech Rusher | Tech Rusher 3-0 | consistent | — | culture | T276 |
## Comparison: iter-8h → iter-8i → iter-8j
| Metric | iter-8h (terrain) | iter-8i (axis^0.7) | iter-8j (spawn jitter) | Change 8i→8j |
|--------|-------------------|---------------------|------------------------|--------------|
| Split matchups | 3/8 (37.5%) | 0/8 (0%) | **4/8 (50%)** | **+4 splits** |
| PvP kills/game | 462.3 | 368.8 | 218.2 | -41% |
| City captures/game | 32.7 | 26.5 | 17.5 | -34% |
| Victory types active | 4 | 4 | 4 | Same |
| Domination victories | 2 (8%) | 3 (12.5%) | **7 (29%)** | +4 |
| Expansionist wins | 0 | 0 | **3** | **FIXED** |
| Balanced wins | 1 | 0 | **1** | Restored |
| Merchant wins | 2 | 0 | 0 | Still 0 |
## What Spawn Variance Changed
### Positive
- **Split rate 50%** — best ever, up from 37.5% (8h) and 0% (8i). Four matchups are now seed-dependent.
- **Expansionist finally viable** — 3 wins on seed 456 (was 0-9 for two iterations). Seed 456 gives Expansionist a favorable spawn that enables early domination at turn ~87-98. This is the spawn jitter working as intended.
- **Balanced restored** — 1 domination win on seed 123 vs Boom (was 0-3 in 8i).
- **Domination 29%** — up from 8-12%. Proximity-dependent aggression creates more decisive military outcomes.
- **Militarist no longer undefeated** — 8-1 (was 9-0 in 8i). Expansionist beat it on seed 456.
- **Four victory types remain active** — city_count (46%), domination (29%), economic (12.5%), culture (12.5%).
- **Raw axis values restored** — reverting axis^0.7 removed the artificial compression that killed economic/culture win paths.
### Seed 456: The Proximity Seed
Seed 456 produced dramatically different outcomes in 3 matchups:
- Expansionist beat Rusher (domination T98) — reversed from Rusher 3-0
- Expansionist beat Militarist (domination T97) — reversed from Militarist 3-0
- Expansionist beat Turtle (domination T87) — reversed from Turtle 3-0
All 3 wins were fast domination (<T100), suggesting seed 456's jitter places players closer together, giving the high-expansion profile a proximity advantage for early aggression.
### Concerns
- **PvP kills dropped 41%** from 8i (218 vs 369). Many games end faster via domination before large armies form. This may be acceptable — faster decisive games are more interesting than long grinds.
- **Rusher vs Turtle: 0 kills on seed 456** — Turtle won economically at T321 with no combat at all. Seed 456's jitter may place these two far apart. Rusher seek range may need further tuning.
- **Merchant still 0-6** — no improvement. Needs a unique advantage (trade routes? gold generation?) to compete.
## PvP Combat Analysis
| Stat | iter-8j | iter-8i | iter-8h |
|------|---------|---------|---------|
| Total PvP kills | 5,238 | 8,851 | 11,095 |
| Average per game | 218.2 | 368.8 | 462.3 |
| Total cities captured | 420 | 637 | 785 |
| Avg captures/game | 17.5 | 26.5 | 32.7 |
### Kill patterns by matchup (3-seed totals)
| Matchup | Total kills | Total caps | Pattern |
|---------|-------------|------------|---------|
| Merchant vs Tech Rusher | 1,607 | 105 | Bloodiest matchup — long culture grind |
| Merchant vs Militarist | 1,487 | 69 | Militarist dominates but Merchant fights |
| Rusher vs Turtle | 103 | 2 | Minimal engagement — Turtle econ wins |
| Rusher vs Expansionist | 978 | 72 | Strong combat on seeds 42/123 |
| Militarist vs Expansionist | 788 | 64 | Decisive either way depending on seed |
| Expansionist vs Turtle | 576 | 59 | High cap count — territory war |
| Balanced vs Boom | 139 | 15 | Short games, light combat |
| Militarist vs Tech Rusher | 163 | 34 | Fast domination, few units |
## Victory Type Distribution (24 games)
| Victory Type | Count | Pct | iter-8i | iter-8h |
|--------------|-------|-----|---------|---------|
| city_count | 11 | 46% | 62.5% | 42% |
| domination | 7 | 29% | 12.5% | 8% |
| economic | 3 | 12.5% | 12.5% | 29% |
| culture | 3 | 12.5% | 12.5% | 21% |
| science | 0 | 0% | 0% | 0% |
Domination surged — spawn jitter creates proximity-dependent aggression windows. City_count dropped from 8i's 62.5% but remains the most common path.
## Per-Seed Detail
### Seed 42 (world gen: 32.8s, max_eco=T5, avg_eco=3.29)
| Game | Matchup | Winner | Victory | Turn | Kills (A+B) | Caps (A+B) |
|------|---------|--------|---------|------|-------------|------------|
| 1 | Expansionist vs Rusher | Rusher | city_count | 140 | 93+225 | 2+26 |
| 2 | Rusher vs Turtle | Turtle | economic | 321 | 19+43 | 1+1 |
| 3 | Expansionist vs Militarist | Militarist | city_count | 130 | 117+172 | 2+22 |
| 4 | Merchant vs Militarist | Militarist | city_count | 216 | 71+360 | 3+17 |
| 5 | Militarist vs Tech Rusher | Militarist | domination | 174 | 19+29 | 5+5 |
| 6 | Expansionist vs Turtle | Turtle | city_count | 130 | 82+135 | 3+23 |
| 7 | Balanced vs Boom | Boom | city_count | 131 | 36+28 | 1+4 |
| 8 | Merchant vs Tech Rusher | Tech Rusher | culture | 278 | 152+472 | 11+18 |
### Seed 123 (world gen: 31.6s, max_eco=T5, avg_eco=3.33, max_fauna=T6)
| Game | Matchup | Winner | Victory | Turn | Kills (A+B) | Caps (A+B) |
|------|---------|--------|---------|------|-------------|------------|
| 9 | Expansionist vs Rusher | Rusher | city_count | 141 | 125+189 | 1+25 |
| 10 | Rusher vs Turtle | Turtle | economic | 321 | 10+31 | 0+0 |
| 11 | Expansionist vs Militarist | Militarist | city_count | 115 | 55+145 | 2+22 |
| 12 | Merchant vs Militarist | Militarist | city_count | 221 | 96+335 | 2+16 |
| 13 | Militarist vs Tech Rusher | Militarist | domination | 185 | 21+46 | 11+10 |
| 14 | Expansionist vs Turtle | Turtle | city_count | 129 | 77+121 | 3+23 |
| 15 | Balanced vs Boom | Balanced | domination | 129 | 14+15 | 2+1 |
| 16 | Merchant vs Tech Rusher | Tech Rusher | culture | 278 | 142+287 | 14+24 |
### Seed 456 (world gen: 33.4s, max_eco=T5, avg_eco=3.27)
| Game | Matchup | Winner | Victory | Turn | Kills (A+B) | Caps (A+B) |
|------|---------|--------|---------|------|-------------|------------|
| 17 | Expansionist vs Rusher | Expansionist | domination | 98 | 55+51 | 6+12 |
| 18 | Rusher vs Turtle | Turtle | economic | 321 | 0+0 | 0+0 |
| 19 | Expansionist vs Militarist | Expansionist | domination | 97 | 51+48 | 5+11 |
| 20 | Merchant vs Militarist | Militarist | city_count | 233 | 126+424 | 9+22 |
| 21 | Militarist vs Tech Rusher | Militarist | domination | 177 | 10+9 | 2+1 |
| 22 | Expansionist vs Turtle | Expansionist | domination | 87 | 46+30 | 4+3 |
| 23 | Balanced vs Boom | Boom | city_count | 125 | 18+8 | 2+5 |
| 24 | Merchant vs Tech Rusher | Tech Rusher | culture | 272 | 111+489 | 11+27 |
## Remaining Issues
### 1. Merchant still 0-6 — needs a unique economic advantage
Three iterations with 0 wins. The wealth=5 stat alone does not create a viable win condition. Needs trade routes, gold generation bonuses, or economic threshold reduction.
### 2. Rusher vs Turtle has no combat on seed 456
0 kills, 0 captures — they never engage. Seed 456's jitter may place P0 and P1's bases such that Rusher's seek range 8 still can't reach Turtle. Consider increasing base seek range or adding scout behavior.
### 3. Science victory still absent (0%)
No science victory implementation. Tech Rusher wins via culture instead.
### 4. Spawn jitter range may need tuning
The 0-5 hex range creates strong variance (seed 456 flips 3 matchups), but some seeds produce 0 jitter. Consider a minimum jitter of 1-2 hexes to ensure every seed has some asymmetry.

View file

@ -0,0 +1,61 @@
# PvP Combat Statistics
## Dominion Bench — iter 8d (2026-04-10)
5 scenarios (0-4 AI), map scaled by player count, 50K evolution ticks, 500 turns, seed=42. All five victory conditions enabled (domination, economic, culture, science, city_count).
**Fixes since iter 8c:** PvP damage now persists to unit HP, culture accumulates per turn, science/tech progresses per turn, AI units target enemies within 5 hexes.
### Cross-scenario summary
| Scenario | Map | PvP Battles | PvP Kills | Cities Captured | Fauna Encounters | Fauna Deaths | Victory |
|----------|-----|-------------|-----------|-----------------|------------------|--------------|---------|
| 0AI | 48x48 | 0 | 0 | 0 | 0 | 0 | none |
| 1AI | 48x48 | 0 | 0 | 0 | 9,222 | 5,211 | none (no victory config) |
| 2AI | 64x64 | 25 | 8 | 0 | 19,611 | 11,089 | P1 expansionist — culture T254 |
| 3AI | 80x80 | 0 | 0 | 0 | 24,855 | 14,459 | P1 expansionist — culture T254 |
| 4AI | 96x96 | 10,115 | 3,129 | 0 | 23,548 | 14,192 | P3 scientist — culture T179 |
### Comparison: iter 8c → iter 8d
| Scenario | PvP Kills (8c) | PvP Kills (8d) | Victory (8c) | Victory (8d) |
|----------|---------------|---------------|-------------|-------------|
| 2AI | 0 | 8 | none | P1 culture T254 |
| 3AI | 0 | 0 | P2 economic T394 | P1 culture T254 |
| 4AI | 0 | 3,129 | P2 economic T394 | P3 scientist culture T179 |
Key changes:
- **PvP kills are non-zero.** 3,129 kills in 4AI (was 0 across 25,721 battles).
- **Culture victory fires before economic.** Culture threshold (100K) is reachable by T179-254 depending on city count and culture axis. Economic threshold (50K gold) wouldn't fire until T394.
- **Different profiles win different scenarios.** Expansionist wins 2AI/3AI, scientist wins 4AI.
### Per-player attrition (4AI scenario)
| Player | Profile | Produced | Fauna Deaths | PvP Deaths | PvP Kills | Cities Captured | Cities Lost | Peak Units | Peak Cities |
|--------|---------|----------|--------------|------------|-----------|-----------------|-------------|------------|-------------|
| P0 | militarist | 607 | 4,338 | 1,088 | 1,834 | 0 | 0 | 76 | 17 |
| P1 | expansionist | 1,064 | 5,351 | 0 | 0 | 0 | 0 | 626 | 26 |
| P2 | merchant | 595 | 3,085 | 276 | 211 | 0 | 0 | 208 | 17 |
| P3 | scientist | 1,262 | 1,418 | 1,765 | 1,084 | 0 | 0 | 1,159 | 20 |
### PvP combat analysis (4AI)
**Militarist (P0) is the most lethal combatant.** 1,834 kills at a 1.7:1 kill ratio (1,834 kills / 1,088 deaths). Despite producing fewer units (607) than the scientist (1,262), the militarist's higher attack stat and aggressive targeting make each unit more effective in combat.
**Scientist (P3) is the largest army but takes heavy losses.** 1,159 peak units, but 1,765 PvP deaths (0.6:1 kill ratio). The scientist's high unit production compensates — they field the largest army at T500 despite losing more units than they kill.
**Expansionist (P1) avoids all PvP.** Zero PvP battles despite 626 peak units. The quadrant placement puts the expansionist in the NE corner (89,23), far from the militarist-scientist front lines.
**Merchant (P2) sees light PvP.** 276 PvP deaths vs 211 kills (0.76:1 ratio). Lower combat effectiveness than the militarist.
### Why cities aren't captured
Despite 3,129 PvP kills in 4AI, zero cities changed hands. Two factors:
1. **AI movement prioritizes fauna lairs and enemy units** — city siege requires units to move onto city tiles, which the current AI doesn't specifically target.
2. **Siege mechanics require concentrated force** — a single unit occupying a city tile may not meet the capture threshold.
### PvP geography
- **2AI (64x64)**: Players start 15 tiles apart in the same half of the map. 25 encounters happen at border zones.
- **3AI (80x80)**: Players are widely dispersed across quadrants. Zero PvP — units exhaust fauna targets before reaching enemy territory.
- **4AI (96x96)**: Four-quadrant placement creates natural friction zones. The militarist (NW) and scientist (S-center) generate the primary PvP front.

View file

@ -0,0 +1,57 @@
# Conquest Map — PvP Territory Control
## Dominion Bench — iter 8d (2026-04-10)
### Territory at turn 500 (final state)
#### 4AI (96x96 map)
| Player | Profile | Cities | Units | Gold | Culture | Territory % (est.) |
|--------|---------|--------|-------|------|---------|--------------------|
| P0 | militarist | 17 | 64 | 27,244 | 136,240 | ~18% |
| P1 | expansionist | 26 | 611 | 45,560 | 228,000 | ~28% |
| P2 | merchant | 17 | 202 | 68,020 | 136,240 | ~18% |
| P3 | scientist | 20 | 1,159 | 33,700 | 421,450 | ~22% |
Territory estimates based on city count relative to total player cities (80 cities / 9,216 tiles).
### Comparison: iter 8c → iter 8d unit counts (4AI T500)
| Player | Units (8c) | Units (8d) | Change | Cause |
|--------|-----------|-----------|--------|-------|
| P0 militarist | 125 | 64 | -49% | Heavy PvP losses (1,088 deaths) |
| P1 expansionist | 611 | 611 | 0% | No PvP contact |
| P2 merchant | 199 | 202 | +2% | Light PvP losses (276 deaths) |
| P3 scientist | 279 | 1,159 | +315% | Massive army buildup despite 1,765 PvP deaths |
The militarist's unit count dropped significantly due to PvP attrition. The scientist's count quadrupled — the culture=5 axis apparently doesn't reduce production, and the scientist produces more units than it loses to combat.
### Starting positions (quadrant placement)
```
4AI (96x96):
P0 militarist: (29, 24) — NW quadrant
P1 expansionist: (89, 23) — NE quadrant
P2 merchant: (12, 45) — SW quadrant
P3 scientist: (50, 45) — S-center quadrant
```
### City expansion timeline
| Turn | P0 cities | P1 cities | P2 cities | P3 cities |
|------|-----------|-----------|-----------|-----------|
| 50 | 5 | 11 | 5 | 7 |
| 100 | 9 | 21 | 9 | 13 |
| 200 | 17 | 26 | 17 | 20 |
| 350 | 17 | 26 | 17 | 20 |
| 500 | 17 | 26 | 17 | 20 |
City caps unchanged from iter 8c. All players reach their cap by turn 200. No cities captured or transferred despite 3,129 PvP kills.
### PvP friction zones
The primary PvP front is between the militarist (NW, 29,24) and scientist (S-center, 50,45). These two are the closest pair by position and generate the bulk of the 10,115 PvP battles. The merchant (SW, 12,45) sees light PvP spillover. The expansionist (NE, 89,23) is completely isolated from combat.
### Observation: PvP attrition without territorial change
PvP combat is now lethal (3,129 kills) but produces no territorial change (0 cities captured). The battlefield exists as a unit-consumption zone between the militarist and scientist without strategic consequence. Units die but borders don't move. This reflects the absence of city siege targeting in the AI — units fight enemy units when they encounter them but don't advance toward enemy cities.

View file

@ -0,0 +1,68 @@
# Victory Paths Analysis
## Dominion Bench — iter 8d (2026-04-10)
### Victory outcomes
| Scenario | Winner | Victory Type | Turn | Runner-up | Gap |
|----------|--------|-------------|------|-----------|-----|
| 0AI | n/a | n/a | n/a | n/a | n/a |
| 1AI | none | — | — | P0 at 136K culture | no victory config (1 player) |
| 2AI | P1 expansionist | culture | 254 | P0 militarist (136K culture at T500) | 92K ahead |
| 3AI | P1 expansionist | culture | 254 | P0/P2 tied at 136K culture | 92K ahead |
| 4AI | P3 scientist | culture | 179 | P1 expansionist (228K at T500) | scientist reaches 100K first |
### Victory path viability assessment
| Victory Type | Threshold | Achievable? | By whom? | Notes |
|-------------|-----------|-------------|----------|-------|
| **Culture** | 100,000 culture | YES | Scientist (fastest), Expansionist (2nd) | Now the dominant victory path. Culture_axis × cities accumulates every turn. |
| **Economic** | 50,000 gold | YES (but too slow) | Merchant | Merchant reaches 50K at ~T394, but culture fires at T179-254. Economic victory is structurally outpaced. |
| **Domination** | All enemy capitals | NO | Nobody | Zero cities captured. AI doesn't siege cities. |
| **Science** | arcane_ascension tech | PARTIAL | Nobody | Tech progresses but no player researches arcane_ascension in 500 turns. |
| **City Count** | 30 cities | NO | Nobody | Highest is expansionist at 26. Cap formula prevents reaching 30. |
### Culture accumulation rates
Culture formula: `culture_axis * cities.len() * rate_per_turn`
| Profile | Culture Axis | Cities (cap) | Culture/turn (est.) | Turns to 100K |
|---------|-------------|-------------|-------------------|---------------|
| Scientist | 5 | 20 | ~560 | ~179 |
| Expansionist | 2 | 26 | ~292 | ~254 (wins 2AI/3AI) |
| Militarist | 2 | 17 | ~272 | ~367 |
| Merchant | 2 | 17 | ~272 | ~367 |
The scientist's culture=5 axis more than compensates for fewer cities (20 vs 26). The scientist reaches 100K ~75 turns before the expansionist.
### Gold accumulation curves (4AI)
| Turn | Militarist | Expansionist | Merchant | Scientist |
|------|-----------|-------------|---------|----------|
| 50 | 556 | 1,160 | 1,300 | 752 |
| 100 | 1,852 | 4,260 | 4,540 | 2,644 |
| 200 | 6,844 | 14,360 | 17,020 | 9,700 |
| 350 | 17,044 | 29,960 | 42,520 | 21,700 |
| 500 | 27,244 | 45,560 | 68,020 | 33,700 |
Gold curves are identical to iter 8c — gold accumulation was not changed.
### Why culture outpaces economic
Culture threshold (100K) is reached by turn 179 (scientist in 4AI). Economic threshold (50K gold) isn't reached until turn ~394 (merchant). Culture fires 215 turns earlier. This happens because:
1. Culture accumulation rate scales with `culture_axis * cities`, reaching ~560/turn for the scientist
2. Gold accumulation rate scales with `wealth_axis * cities * gold_per_wealth_per_city`, reaching ~170/turn for the merchant
3. The culture threshold (100K) relative to culture rate is proportionally lower than the gold threshold (50K) relative to gold rate
### Balance implications
1. **Culture is now the dominant victory condition.** Any player with enough cities will win by culture before economic can fire. This is a threshold balance issue — culture threshold (100K) should be higher or gold threshold (50K) should be lower.
2. **The scientist has a dedicated win-con.** With culture=5, the scientist is the fastest culture accumulator. This is a significant improvement over iter 8c where the scientist had no viable path.
3. **The merchant's economic victory is unreachable in practice.** By the time gold reaches 50K (T394), culture has already triggered (T179-254). The economic threshold needs to be lowered or the culture threshold raised for both paths to be competitive.
4. **The militarist still has no victory path.** Despite being the most lethal combatant (1,834 PvP kills in 4AI), the militarist can't capture cities and therefore can't achieve domination. The militarist's culture rate (272/turn) reaches 100K at ~T367, far behind the scientist and expansionist.
5. **Domination remains structurally blocked.** AI doesn't target cities for siege. Even with persistent PvP damage and enemy targeting, the current AI only fights enemy units, not enemy cities.

View file

@ -0,0 +1,6 @@
{
"id": "balanced",
"name": "Balanced",
"axes": { "expansion": 3, "production": 3, "wealth": 3, "culture": 3 },
"preferred_victory": "any"
}

View file

@ -0,0 +1,6 @@
{
"id": "boom",
"name": "Boom",
"axes": { "expansion": 5, "production": 2, "wealth": 5, "culture": 1 },
"preferred_victory": "economic"
}

View file

@ -0,0 +1,6 @@
{
"id": "expansionist",
"name": "Expansionist",
"axes": { "expansion": 5, "production": 3, "wealth": 2, "culture": 2 },
"preferred_victory": "city_count"
}

View file

@ -0,0 +1,6 @@
{
"id": "merchant",
"name": "Merchant",
"axes": { "expansion": 2, "production": 3, "wealth": 5, "culture": 2 },
"preferred_victory": "economic"
}

View file

@ -0,0 +1,6 @@
{
"id": "militarist",
"name": "Militarist",
"axes": { "expansion": 2, "production": 5, "wealth": 2, "culture": 2 },
"preferred_victory": "domination"
}

View file

@ -0,0 +1,6 @@
{
"id": "rusher",
"name": "Rusher",
"axes": { "expansion": 1, "production": 5, "wealth": 2, "culture": 1 },
"preferred_victory": "domination"
}

View file

@ -0,0 +1,6 @@
{
"id": "tech_rusher",
"name": "Tech Rusher",
"axes": { "expansion": 1, "production": 3, "wealth": 2, "culture": 5 },
"preferred_victory": "science"
}

View file

@ -0,0 +1,6 @@
{
"id": "turtle",
"name": "Turtle",
"axes": { "expansion": 2, "production": 4, "wealth": 4, "culture": 1 },
"preferred_victory": "economic"
}