3.3 KiB
Balancing Spreadsheets
Balance numbers belong in a live spreadsheet, not a markdown table — the point is the user can change one input and watch everything downstream recalculate. Always build these with the xlsx skill (read its SKILL.md first) so formulas, not hardcoded values, drive every derived column.
TTK (time-to-kill) calculator
Columns: | Weapon/Enemy | Base Damage | Fire Rate (shots/s) | DPS (=Damage*FireRate) | Target HP | TTK (=HP/DPS) |
- Put Base Damage, Fire Rate, and Target HP as the only hand-entered cells; everything else is a formula.
- Add a second small table of target TTK ranges per enemy tier (trash/elite/boss) so the user can see at a glance which weapons fall outside the intended range — conditional formatting (red/green) on the TTK column against those targets is worth setting up.
XP / progression curve generator
Columns: | Level | XP to Next | Cumulative XP | Power Stat (optional) |
XP to Nextas a formula off Level using whichever curve shape was chosen (seesystems-design-patterns.md): e.g. linear=Base*Level, exponential=Base*Growth^(Level-1), log-style=Base*LN(Level+1).- Put
BaseandGrowthin labeled, separate cells (not buried in the formula) so the user can tune them directly. - A line chart of
Cumulative XPvs.Levelis the single most useful gut-check — always add one. If a "Power Stat" column exists, chart it against a separately-entered "Content Difficulty" column to visualize the power-vs-content curve match.
Economy ledger (faucets & sinks)
Columns: | Day/Session | Faucet: Source A | Faucet: Source B | ... | Sink: Spend A | Sink: Spend B | ... | Net Flow (=sum faucets - sum sinks) | Running Balance (=prior balance + Net Flow) |
- One column per named faucet/sink (pulled straight from the table built in the systems-design doc), not a single "income" blob — the point is to see which specific source or sink is driving the trend.
- Model at least 30-90 days/sessions of simulated play to see whether Running Balance trends flat, up, or down — flag explicitly which it does and what that implies (inflation risk if up and unchecked; frustration risk if down to zero with no recovery).
- If there's a premium currency, give it its own mini-ledger — don't mix premium and soft currency in the same running balance.
Drop tables
Columns: | Item | Rarity Tier | Weight | Cumulative Weight | Probability (=Weight/TotalWeight) |
- Probability is always a formula off Weight, never hand-entered — keeps it correct when items are added/removed.
- If using a pity system, add a small separate table:
Pity Counter Threshold,Pity Bonus Weight Multiplier, and a worked example row showing probability at counter=0 vs counter=threshold. - Add a
SUMcheck cell on the Probability column that should always read 100% — useful as a built-in sanity check the user can glance at after any edit.
General spreadsheet hygiene
- Hand-entered inputs and calculated outputs should be visually distinct (e.g. light fill on input cells) so the user knows what's safe to edit.
- Name the tabs by function (
TTK Calc,XP Curve,Economy,Drop Tables), one model per tab, so the file stays navigable as it grows. - Prefer a chart over a wall of numbers wherever the question is "does this curve look right" — that's a visual judgment, not a numeric one.