Namespace SurvivorsMaker.Balance

Classes

BalanceCsv

Exports run, wave, weapon and enemy measurements as invariant-culture CSV tables.

BalanceReport
BalanceRequest

What to simulate. Runs are seeds FirstSeed, FirstSeed+1, … cycling characters and their starting weapons.

BalanceRunner

Runs seeded bot sessions through the normal run controller without a Unity scene.

BalanceSummary

Calculates aggregate run metrics and Wilson 95 percent binomial intervals.

BuildReport
BuildSpec

A fixed build: character, weapons with tiers, items and level, tested without shopping.

BuildTrialRequest

Plays one wave with a fixed build (no shop), repeated with consecutive seeds.

BuildTrialResult
DpsProbe

Measures one weapon against stationary targets using the normal headless simulation.

DpsProbeRequest

One weapon measured against a stationary target for a fixed time.

GreedyBot

Bot that avoids nearby threats and scores upgrades and purchases using configurable stat weights.

GreedyBotSettings

Greedy Bot tuning; defaults are defined by the field initializers and can be overridden per game.

HeadlessBenchmark

Builds and measures a sustained enemy/projectile workload without rendering.

HeadlessBenchmarkRequest

Self-authored load fixture, separate from demo content and gameplay defaults.

MakerAnalysis

Deterministic maker-tool analysis over the same inventory, simulation and offer rules as play.

MakerAnalysisSettings

Analysis-only sampling settings; gameplay definitions and settings remain unchanged.

OfferOdds
OfferOddsReport
OfferOddsRequest
PacingReport
PacingRequest

What to forecast: bot runs over the whole arena, summarised per wave.

RandomBot

Seeded bot that periodically changes direction and randomly selects valid upgrades and purchases.

RandomBotSettings

Random Bot tuning; defaults are defined by the field initializers and can be overridden per game.

RunRecord

One simulated run, one row per wave entered.

WaveFrame

Positions of one moment of a wave, recorded every N ticks for scrubbing.

WavePacing

One wave of the forecast. Threat comes from the wave data and the simulation; power from the bots that reached it.

WavePlayback
WavePlaybackJob

Records a wave in deterministic tick order. Time budgets only split work; they never enter the simulation.

WavePlaybackRequest
WaveRecord
WeaponLabRequest

A weapon against a dummy crowd, for the live preview and the density curve.

WeaponLabResult
WeaponPower

Structs

DpsProbeResult
EnemySummary

Damage an enemy kind (by definition id) dealt to the player, and how often it died.

GroupSummary
HeadlessBenchmarkResult

Tick timings and managed allocation measurements for one benchmark workload.

StatContribution

One contribution to a stat: who added how much in which layer.

WaveSummary

Survival of one wave across runs, with a 95 % Wilson interval.

WeaponSummary

Damage a weapon (by definition id) dealt across all runs.

Interfaces

IAnalysisJob<TResult>

A long headless job the editor can advance in slices and cancel.

IMakerAnalysis

Entry points the maker tools use. Balance/ implements the default.

IRunBot

An automated player for headless runs. One instance plays one run at a time; the runner calls Begin(RunState, SimRandom) before each run. Bots must use only the random they are given so results stay reproducible.