evaluating-gameplay-balance
Installation
SKILL.md
Use this skill to analyze whether a game rewards skillful play and to propose structural improvements.
Engine-neutral contract:
- Produce comparable runs for monotonous policies and exploratory policies.
- Define the public input schema and visible-state features available to policies.
- Keep seeds, tick rate, max duration, policy definitions, search budget, and aggregation logic comparable across runs.
- Record score, elapsed time, end state, and telemetry for death, spawn, scoring, input, and usage behavior. Usage is what play actually consists of: how much of the action and score comes from the core mechanic, which parts of the play space are occupied, and how often each threat fires and connects.
- When the game has a goal beyond staying alive, add objective-ignoring policies to the comparison: one that stalls to keep scoring, and one that survives without pursuing the goal. A stall that scores more is a signal to examine its cap, its cost, and its whole-run effect, not a defect by itself.
- Compute
exploratory_ratio = exploratory.best.score / monotonous.max_score. - Treat the ratio as a quality detector, not an optimization target.
- Declare an execution profile for every non-baseline policy as well as its visible-state features:
oracle(hidden information allowed; upper bound),precise(visible state, near-perfect timing and attention), orhuman-limited(visible state plus the human limits inreferences/simulation-harness.md). Compute the ratio fromprecisepolicies (search-based runners included, unless labeledoracle); it detects exploits, not difficulty. - Set difficulty, timers, pacing, and progression targets only from
human-limitedruns, and label every conclusion with the profile it rests on. Without a human-limited run, do not state a difficulty or pacing verdict — report it as not yet measured. - A claim that a strategy dominates, or that a trade-off is balanced, names the profiles it was tested on. If the ranking flips between profiles, that alone is not a balance defect — report it as skill-dependent, but still apply the experience guardrails to each profile's best strategy (a human-limited optimum of idling or waiting is a defect).
Non-deterministic harnesses:
The contract above assumes a seeded forward model. Some rigs cannot provide one — a real browser driven over a wall-clock window, an engine whose RNG you do not control, a policy comparison run against live rendering. Seeding is still the first choice; when it is genuinely unavailable, the following replaces it, and skipping it produces confident conclusions from noise: