Namespace SurvivorsMaker.Balance
Classes
- BalanceCsv
Exports run, wave, weapon and enemy measurements as invariant-culture CSV tables.
- 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.
- 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.
- 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.
- 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.
- WavePlaybackJob
Records a wave in deterministic tick order. Time budgets only split work; they never enter the simulation.
- WeaponLabRequest
A weapon against a dummy crowd, for the live preview and the density curve.
Structs
- EnemySummary
Damage an enemy kind (by definition id) dealt to the player, and how often it died.
- 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.