You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Headless balance simulation: seeded trials over a scenario file in enzan-sim #11
Measure balance without a screen: run many seeded trials of the core's mechanics natively and report the distributions, so a designer can see what the numbers do before anyone plays.
Scope
enzan-sim, a binary over enzan-core:
Input: a scenario file (JSON) describing the data to simulate — rarities, an affix pool, a drop table, a progression rule — plus the number of trials and the base seed. Reading and parsing the file live in the binary; the core receives checked types only.
Trials: trial i uses Rng::stream(base_seed, i), so any single trial can be replayed on its own and the run does not depend on how trials are ordered or split.
Measurements (first set):
loot: how often each rarity and each affix appears, the distribution of the affix count, and of each affix's value (min / mean / percentiles);
progression: the level reached after a given amount of experience, and the experience needed to reach given levels.
Output: a summary on stdout, as JSON (--json) or a readable table.
Rules
Rule
Owner
the same scenario and seed give the same report, natively and wherever the binary runs
the binary's run loop (uses only the core's deterministic draws)
trial i is reproducible on its own from (base_seed, i)
the trial
the binary holds no mechanics: every number comes from a core function
the binary's entry point
Done when
A sample scenario under examples/ runs and prints a report.
Tests cover: the report is the same for the same seed, a trial replays alone, and a scenario with an error (e.g. a duplicate affix id) is reported with the core's error.
just check is green.
Out of scope
The balance lab in the browser, the TypeScript binding, a shared data crate for other front ends, plotting.
Activity