View on Asset Store (opens in new tab)
Package details
- Latest version
- 1.0.0
- Last updated
- First released
- Unity version
- 2022.3.0 or later
- Package size
- 177 KB
- Files
- 59
- Favorites
- 2
- Views in the past week
- 11
Price tracking
- Last checked
- Tracked since
- Lowest recorded
- $27.99 on
Keywords
Smart Stats System
A stat system that shows its work. Every number explains where it came from - base, gear, buffs, curses - as text or in an editor window. Zero dependencies, 403 tests included.
Affiliate link · Purchases support this site
Price history
Last 6 months
USDAsset preview
1 / 12
Smart Stats System screenshot 1
About this asset
Every number in your game comes from somewhere. Attack is 46 because the
character has 20 base, an iron sword adds 20, and Rage adds 15%. Most stat
systems can compute that number. Almost none can tell you afterwards where it
came from.
Smart Stats System is built the other way around. The breakdown is not a debug
feature bolted on top, it is produced by the calculation itself, every time.
Ask a stat for its value and you get a number. Ask it for its breakdown and you
get every stage, every modifier, every source, and exactly what each one
contributed.
THE ORDER PROBLEM
A +15% buff and a +20 sword do not commute. Apply the percentage first and the
sword never gets buffed - the number is wrong, and nothing tells you. Which one
happens first is a design decision, and most stat assets leave it to whatever
order things happened to be added in.
Here it is fixed and documented: base, then flat, then percent-add, then
percent-multiply, then override, then clamp. Same inputs, same result, always,
no matter what order you added them in or which frame they arrived on.
WHAT YOU GET
- Stats with deterministic modifier stacking and live, readable breakdowns.
- Derived stats. Max Health = Constitution x 10, recalculated when anything
underneath it moves, with cycle detection that prints the path it found.
- Resources - health, mana, stamina - with maximums driven by stats, so a
health bar can explain its own capacity. Regeneration, limits, and a record
of what happened: the potion says 30, the bar moved 12, and here is why.
- Timed effects with four stacking policies and optional pulses, so poison
ticks a resource on its own clock. Stacks are real copies of the modifiers,
not a number multiplied by a count, so three stacks of x1.2 are x1.728.
- Save and load. Base values, resource balances, and live effects including
remaining time and stack counts. Loading returns a report that names anything
it could not restore instead of failing silently.
- Authoring in the Inspector. Build a derived stat as a row of steps and the
inspector prints both the formula it produced and the number it gives you
right now - without entering Play mode.
- Validation before Play. One window walks every character in your open scenes,
including disabled ones, and tells you what is wrong in a full sentence.
- Two connectors. Equipment as a named bundle of modifiers that attaches and
detaches cleanly, and stat requirements that return a reason rather than a
bool - including the full breakdown of the number that fell short.
NO DEPENDENCIES
No packages to install, no third-party libraries, no art, no fonts, no render
pipeline requirement. The core is plain C# with no reference to UnityEngine at
all, which is why the entire system can be verified without entering Play mode
- and why your CI can run it.
ON TESTING
403 tests ship inside the package. Every code example in the documentation is
one of them: if a snippet in the manual says the answer is 46, there is a test
asserting 46. Import the package, open the Test Runner, and run them yourself
on day one.
WHAT THIS IS NOT
Not a combat system. It computes numbers; it does not decide how damage is
applied. Not an RPG kit, not an ability or skill system, not a character
controller, not a UI framework. It does not own your game loop, your item data,
or your save format.
Known limits are written out in the FAQ rather than left for you to discover:
there are no PlayMode tests, no netcode testing, and no project-wide balancing
tools. What is promised is what is proven.
From the publisher's Asset Store listing.
Technical details
- Engine-free core: the entire calculation layer is plain C# with zero
UnityEngine references. Testable, CI-friendly, and portable.
- Five-stage deterministic pipeline: base, flat, percent-add, percent-multiply,
override, plus a clamp stage. Modifiers are kept in canonical order, so
float addition and multiplication cannot drift with insertion order.
- Breakdowns produced by the calculation, not reconstructed after it. Value and
breakdown can never disagree.
- Derived stats with dependency tracking, automatic invalidation, and cycle
rejection that names the path.
- Resources with stat-backed maximums, three explicit policies for what happens
to the current value when the maximum changes, regeneration, all-or-nothing
and partial spending, and depleted/filled events that fire on crossing.
- Timed effects: four stacking policies, independent expiry and pulse clocks,
frame-rate independent tick accounting, and a result object for every
application - including the ones that did nothing.
- Change notification contract: derived stats are invalidated before listeners
are told, and one logical operation announces once per stat.
- Serialization: capture and restore stats, resources, and live effects to a
plain text format you can open in a text editor. Culture-invariant and
round-trip safe. No JsonUtility, no attributes, no dependency.
- Inspector authoring for stats and resources, with validation produced by the
same build path the game uses at runtime - there is no second validator to
drift out of sync.
- Editor windows: Explain the Number (stats, resources, effects, plus a
scratch area) and Check the Scene (scans open scenes, includes disabled
objects, and states what it cannot check).
- Connectors: ModifierBundle returns a handle that removes exactly what it
added, and StatRequirement distinguishes "not met yet" from "this condition
is broken" when a stat name is misspelled.
- 403 EditMode tests included, covering every example in the documentation.
- Zero forced dependencies, zero art assets, zero fonts, render pipeline
assumptions.
- Unity 2022.3 LTS and newer.
Compatibility
| Unity version | Built-in | URP | HDRP | Custom |
|---|---|---|---|---|
| 2022.3.0f1 | Compatible | Compatible | Compatible | Compatible |
This package contains no shaders, materials, textures or any other rendering
assets, and no reference to any render pipeline. It is plain C# plus editor
windows, so the render pipeline in your project does not affect it in any way.
It was developed in a URP project and verified in a Built-in Render Pipeline
project. It has no package dependencies of any kind.
As listed on the Asset Store.