Game balance audit: wire research effects, rework capability formula, fix dead systems
CI / build-and-push (push) Successful in 32s
CI / build-and-push (push) Successful in 32s
- Create researchBonuses utility to aggregate tech tree effects into all game systems (infrastructure energy costs, compute efficiency, training speed, model capability, reputation) - Rework model capability from sqrt(compute) to 4-pillar formula (params + compute + data + research) - Make context window affect benchmarks and inference speed - Add MoE tradeoffs: 1.5x VRAM, 0.8x training speed - Enforce research point costs as a gate for unlocking research - Add real consequences to data contamination events (reputation hit, legal costs) - Scale talent costs from $0.03 to $5/tick per headcount - Scale compliance costs 100x to be meaningful - Rework competitor acquisition: cheaper but grants headcount, RP, and reputation - Remove dead code: sfxVolume, autoSaveInterval, notificationsEnabled, FAST_FORWARD_BATCH_SIZE, CHINCHILLA_OPTIMAL_RATIO Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,7 @@ import {
|
||||
estimateNetworkSlots,
|
||||
} from '@ai-tycoon/shared';
|
||||
import type { TickNotification } from '../tick';
|
||||
import type { ResearchBonuses } from './researchBonuses';
|
||||
|
||||
export interface InfraTickResult {
|
||||
infrastructure: InfrastructureState;
|
||||
@@ -463,7 +464,7 @@ function computeInterconnectMultiplier(
|
||||
|
||||
// --- Main Infrastructure Tick ---
|
||||
|
||||
export function processInfrastructure(state: GameState): InfraTickResult {
|
||||
export function processInfrastructure(state: GameState, researchBonuses?: ResearchBonuses): InfraTickResult {
|
||||
const notifications: TickNotification[] = [];
|
||||
let repairCosts = 0;
|
||||
|
||||
@@ -587,7 +588,9 @@ export function processInfrastructure(state: GameState): InfraTickResult {
|
||||
continue;
|
||||
}
|
||||
|
||||
const speed = stageSpeed(cohort.stage, engEff, opsEff);
|
||||
const baseSpeed = stageSpeed(cohort.stage, engEff, opsEff);
|
||||
const pipelineBonus = cohort.stage !== 'repair' ? (researchBonuses?.pipelineSpeedBonus ?? 0) : 0;
|
||||
const speed = baseSpeed * (1 + pipelineBonus);
|
||||
const newProgress = cohort.stageProgress + speed;
|
||||
|
||||
if (newProgress < cohort.stageTotal) {
|
||||
@@ -728,8 +731,9 @@ export function processInfrastructure(state: GameState): InfraTickResult {
|
||||
}
|
||||
|
||||
const pue = COOLING_TYPE_CONFIGS[dc.coolingType].pueMultiplier;
|
||||
const energyReduction = researchBonuses?.energyCostReduction ?? 0;
|
||||
const energyCostPerTick = (tierConfig.baseEnergyCostPerTick + usedPowerKW * BASE_ENERGY_COST_PER_FLOP)
|
||||
* location.energyCostMultiplier * pue;
|
||||
* location.energyCostMultiplier * pue * (1 - energyReduction);
|
||||
const maintenanceCostPerTick = totalRacksInDc * BASE_MAINTENANCE_PER_RACK;
|
||||
const currentUptime = totalRacksInDc > 0 ? effectiveComputeRacks / totalRacksInDc : 1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user