Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/balance.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,11 @@ outpost -simulate scripts/dust_season_power_buffer.json -seeds 1,7,42
# Silent Colony — radio tower early
outpost -simulate scripts/silent_colony_radio_first.json -seeds 1,7,42
```

## Beacon Rush food floor

With `beacon_rush` scenario (`dailyCreditsIncomeDelta: +7`, `maxBeaconParts: 3`), the `beacon_rush.json` script wins at **day 3** with food 44–46 across all reference seeds. This is comfortable — the rush wins fast enough that food pressure never becomes critical.

**Target band: food ≥ 40 at victory** (day 3). The higher credit income enables the solar build + beacon rush without needing a hydroponics investment.

Before this change, the script ran on Standard scenario and ended day 6 with food 14–24 (some seeds in the critical/urgent band). The fix was wiring `beacon_rush.json` to the `beacon_rush` scenario.
20 changes: 11 additions & 9 deletions internal/game/baseline.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,19 +122,21 @@ func noTradeSurvivalBaseline() BaselineStrategy {
}

func beaconRushBaseline() BaselineStrategy {
win := BaselineOutcome{Day: 3, GameOver: true, Won: true, BeaconParts: 3}
return BaselineStrategy{
ID: "beacon_rush",
ScriptFile: "beacon_rush.json",
MinEndDay: 6,
MinBeaconParts: 2,
ScenarioID: "beacon_rush",
MinEndDay: 3,
MinBeaconParts: 3,
Expected: map[int64]BaselineOutcome{
1: {Day: 6, GameOver: false, Won: false, BeaconParts: 3},
7: {Day: 6, GameOver: false, Won: false, BeaconParts: 4},
42: {Day: 6, GameOver: false, Won: false, BeaconParts: 4},
99: {Day: 6, GameOver: false, Won: false, BeaconParts: 4},
100: {Day: 6, GameOver: false, Won: false, BeaconParts: 3},
101: {Day: 6, GameOver: false, Won: false, BeaconParts: 3},
1779403310247544000: {Day: 6, GameOver: false, Won: false, BeaconParts: 3},
1: win,
7: win,
42: win,
99: win,
100: win,
101: win,
1779403310247544000: win,
},
}
}
Expand Down
2 changes: 2 additions & 0 deletions scripts/beacon_rush.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{
"scenario": "beacon_rush",
"description": "Beacon Rush: solar first, then all-in on beacon work. Wins at day 3 with food 44-46.",
"actions": [
{ "type": "build", "building_id": "solar_array" },
{ "type": "beacon" },
Expand Down