Add research money costs, longer research times, era-scaled talent costs, and persona strategy
Balance Check / balance-simulation (push) Successful in 11m19s
Balance Check / multi-run-balance (push) Has been cancelled
CI / build-and-push (push) Successful in 40s

Research now costs money (drained per-tick) with ~2.5-3.5x longer durations by category.
Early-game talent budget costs reduced via era multiplier (startup 0.2x → bigtech 1.0x).
New seed-driven PersonaStrategy with 8 axes of variation for meaningful multi-run testing.
CI multi-run switched from greedy to persona strategy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-26 16:14:27 -04:00
parent b906592af4
commit 416b6bfe8d
14 changed files with 721 additions and 64 deletions
+4 -1
View File
@@ -1,6 +1,7 @@
import { runSimulation } from './runner';
import { GreedyStrategy } from './strategies/greedy';
import { RandomStrategy } from './strategies/random';
import { PersonaStrategy } from './strategies/persona';
import { printConsoleReport, generateJsonReport } from './analysis/report';
import { writeFileSync } from 'node:fs';
import { resolve, dirname } from 'node:path';
@@ -27,7 +28,9 @@ const jsonOutput = hasFlag('json');
const verbose = hasFlag('verbose');
const csvOutput = hasFlag('csv');
const strategy = strategyName === 'random' ? new RandomStrategy() : new GreedyStrategy();
const strategy = strategyName === 'random' ? new RandomStrategy()
: strategyName === 'persona' ? new PersonaStrategy(seed ?? 42)
: new GreedyStrategy();
console.log(`Running ${strategyName} simulation: ${totalTicks.toLocaleString()} ticks, interval ${decisionInterval}${seed !== undefined ? `, seed ${seed}` : ''}...`);