Overhaul infrastructure: replace GPU model with rack-centric system
CI / build-and-push (push) Successful in 33s

Replace flat GPU buying with a realistic data center + rack pipeline:
- 4 DC tiers (small/medium/large/mega) with construction time, dual
  capacity constraints (rack slots + power budget kW), and era/research
  gating
- 10 predefined rack SKUs from consumer GPUs through custom ASICs, each
  with unique FLOPS, power draw, cost, and pipeline timings
- 6-stage procurement pipeline (order → mfg → receive → install → test
  → production) with Kanban UI, talent-influenced speed bonuses
- Test failures (5-25% base rate) reduced by cooling, ops talent, and QA
  research; auto-repair with cost and re-test cycle
- Production failures at low per-tick rate, racks sent to repair pipeline
- Cooling and redundancy upgrades per DC (reduce failure rates)
- 4 new tech tree nodes (DC Engineering II/III/IV, Quality Assurance)
- Save version bump (1→2) with migration that resets old saves
- Updated economy system to account for rack repair costs
- Redesigned Infrastructure page with pipeline Kanban, capacity bars,
  rack ordering, and DC upgrade panels

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-24 19:41:55 -04:00
parent 1af9408c87
commit 0005e580a7
14 changed files with 1051 additions and 295 deletions
+4 -2
View File
@@ -39,7 +39,9 @@ export function setAchievementDefinitions(defs: AchievementDefinition[]) {
export function processTick(state: GameState): Partial<GameState> {
const notifications: TickNotification[] = [];
const infrastructure = processInfrastructure(state);
const infraResult = processInfrastructure(state);
const infrastructure = infraResult.infrastructure;
notifications.push(...infraResult.notifications);
const stateWithInfra = { ...state, infrastructure };
const modelResult = processModels(stateWithInfra);
@@ -82,7 +84,7 @@ export function processTick(state: GameState): Partial<GameState> {
type: 'danger',
});
}
const economy = processEconomy(stateWithTalent, market, infrastructure);
const economy = processEconomy(stateWithTalent, market, infrastructure, infraResult.repairCosts);
const data = processData(stateWithTalent);
const competitors = processCompetitors(stateWithTalent);