Quick Stat Formula Pro
Write your damage formula as text and see every fight in your game at once — a time-to-kill matrix for every attacker and defender level, plus a report that names what is broken. No dependencies.
by Krykftn | Advanced Editor Tools & Systems
Price History +
You cannot balance combat by reading numbers. A hero curve and an enemy curve look fine side by side in the inspector, and then at level 40 something one-shots the player, or a boss becomes a wall, and nobody finds out until a review says so.
Quick Stat Formula Pro draws the whole thing. Write your damage formula as plain text, point it at two archetypes, and get a time-to-kill matrix: every attacker level against every defender level, coloured by how far that fight is from the length you asked for. Green means the fight lasts as long as you wanted. Red means it is over too fast. Black means nobody wins.
On the sample matchup that ships with the package, an even fight takes 9 hits at level 1 and 2 at level 60, because the enemy's attack grows on a power curve and the hero's defense grows linearly. Nobody catches that by reading the numbers. It is one glance here.
WHAT YOU GET
The time-to-kill matrix — 576 fights evaluated with your own formula and redrawn as you type. Hover any cell for the damage, crit, average, dps, hits and seconds of that exact level pair.
A target band, not a guess — you say a fair fight should take 4 to 12 hits. The colours are measured against that, so the picture is an answer rather than a decoration.
Formulas as text — max(1, a.attack * (1 - d.defense / (d.defense + armorK))). Full operator precedence, brackets, comparisons and 15 functions including min, max, clamp, lerp, step and if. Parse errors appear under the field in words a designer can act on.
A report that reads the same numbers — misspelled stats that silently read as zero, formulas that will not parse, fights nobody can win, one-shots on the diagonal, crit chance that overflows 100% and is being clamped, and scaling that runs backwards so levelling up makes the kill slower.
Five growth models — flat, linear, power, exponential and a curve you draw by hand, per stat, with floors, caps and whole-number rounding.
Buffs and debuffs that stack properly — flat, then percent-add pooled together, then percent-multiply applied one after another. Two +20% percent-add buffs give +40%; two percent-multiply buffs give +44%. Remove them all by whatever applied them.
Seeded rolls — the same seed replays the same fight, in the editor and in your build.
The demo proves it — press Fight To The End in the demo scene and the swing count matches the number the matrix predicted, because both are the same BalanceMath call.
A pure-C# core — the parser is a plain recursive-descent tree. No reflection, no codegen, no hidden scripting backend. It behaves identically in the editor, in a build and on IL2CPP.
Nothing produces NaN — a zero denominator yields 0, sqrt of a negative yields 0, log(0) yields 0. One bad number can never poison the whole table.
USING IT FROM CODE
using Krykftn.QuickStatFormulaPro;
var hero = new StatSheet(heroProfile, level: 12);
hero.AddModifier(new StatModifier("attack", StatModifierKind.PercentAdd, 0.25f, ragePotion));
float attack = hero.Get("attack");
hero.RemoveAllFrom(ragePotion);
var roll = BalanceMath.Roll(formula, hero, enemy, random);
if (roll.landed) enemy.TakeDamage(roll.damage, roll.critical);
int hits = BalanceMath.HitsToKill(formula, hero, enemy);
var matrix = BalanceMatrix.Build(formula, heroProfile, enemyProfile, resolution: 24);
The report is a plain call too, so you can run it in your build pipeline and fail a commit that breaks the curve:
var issues = BalanceReport.Inspect(formula, attacker, defender, matrix);
TRY IT IN 30 SECONDS
1. Import the package.
2. Tools > Quick Stat Formula Pro > Setup Window, then Create Sample Matchup.
3. The balance window opens on Enemy attacking Hero. Follow the white diagonal — that is the even fight. Green at the start, red by the cap.
4. Open the report in the right-hand panel. It has already named the problem.
5. Change the enemy's attack growth from Power to Linear and watch the whole matrix go green.
REQUIREMENTS
Unity 2022.3 LTS or newer. uGUI and TextMeshPro, both of which ship with Unity and are in every standard template. If either is missing the package switches itself off instead of throwing compile errors, and a one-click setup window installs them. No third-party packages, ever. Built-in, URP and HDRP.
Namespace: Krykftn.QuickStatFormulaPro
Full C# source included. No DLLs.