What is StatsForge?
StatsForge is a tool for designing, organizing, documenting, and balancing the numbers that drive your game β health, damage, stamina, mana, and anything else your characters, weapons, or enemies need.
It scales from tiny prototypes (just a couple of stats) to full RPG systems with modifiers, conditional effects, and level progression.
Why a dedicated tool?
The main purpose of StatsForge is to improve communication between game designers and programmers by creating a single source of truth for game statistics. Designers can tweak numbers without touching engine code; programmers get a clean, documented formula they can plug into Godot or Unity.
Core Concepts
Base Value
The starting value of a stat.
Health Base = 100 β the character starts with 100 Health.
Growth
The amount added to a stat every level.
Health Growth = 10 β the character gains 10 Health per level.
Minimum Level
The first level used in progression calculations.
Usually 1, but you can start at 0 for tutorials.
Maximum Level
The final level used in progression calculations.
Often 20, 50, or 99 depending on your design.
Progression
How a stat grows as the character gains levels.
Combines Base + Growth + Level to create a curve.
Class Modifiers
Stat modifications that belong directly to a class or entity. They can be permanent or conditional.
Iron Will β Health +10%. Rage Mode β Damage Γ1.5 when HP < 30%.
Regeneration
Any resource stat (Health, Stamina, Mana) can regenerate over time. Turn it on per stat in the Forge and pick one of two types.
Flat
Recovers a fixed number of points every second. Example: value 2.5 restores 2.5 Health per second.
Percent
Recovers a percentage of the stat's max every second. Example: value 2 restores 2% of max Mana per second.
Exported JSON
{
"id": "health",
"baseValue": 100,
"min": 0,
"max": 9999,
"growth": 10,
"regen": { "type": "flat", "value": 2.5 }
}Regeneration is design metadata: it never changes the calculated stat value in StatsForge. Your engine ticks it each frame and clamps the result to the stat's max. The block appears in the export only for stats where regeneration is enabled. No delays or combat multipliers are included yet.
Effect Types
StatsForge separates who owns a change from how it is packaged. A Class Modifier belongs directly to an entity, a Modifier Effect is a reusable package of stat changes, and a Gameplay Effect is an action that produces a result.
Class Modifier
A stat modification that belongs directly to a class or entity. It can be permanent or conditional.
Iron Will β Health +10%. Rage Mode β Damage Γ1.5 when HP < 30%.
Modifier Effect
A reusable effect that applies one or more stat modifications. It can be Instant, Timed or Permanent.
Shield Wall β Defense +50% for 5 seconds.
Gameplay Effect
Produces a result on an entity instead of changing a stat. Currently supports Damage and Heal.
Fireball β Damage: 50.
Duration & Ticks
Effects can be Instant (apply once and disappear), Timed (last for a duration and may tick repeatedly) or Permanent (stay until removed). Instant Effects cannot use ticks.
Skills
Skills define how an action is used. Effects define what happens when that action executes.
A Skill is the button or command the player (or AI) triggers. An Effect is the reusable package that actually changes stats or produces damage, healing, and other results.
Skills
- Stat cost (Mana, Stamina, etc.)
- Cooldown
- Cast time
- Target type
- One or more reusable Effects
Example
Fireball β 20 Mana β 5s Cooldown β Target β Damage Effect
Skills are created in the Skills Editor. They reference reusable Effects instead of duplicating their configuration, so the same Damage Effect can be shared by Fireball, Meteor, and a flaming sword item.
Items
Items are reusable resources that can contain Class-independent Modifiers and reusable Effects. Any entity can link any number of items, and the linked items' contributions feed into the same calculation pipeline as the entity's own class modifiers β no new math, no special cases.
An entity can run on:
- Base stats only.
- Base stats + class modifiers.
- Base stats + class modifiers + item modifiers.
Entities without linked items behave exactly as before. The categories below are purely organizational β they do not affect calculation.
Items can hold their own modifiers and reusable Effects β for example, a potion that heals instantly or a sword that applies a Damage Over Time effect.
Weapon
Swords, bows, staves β typically add Damage or Crit modifiers.
Armor
Plate, leather, robes β typically add Defense or Health.
Accessory
Rings, amulets, trinkets β utility buffs (Speed, Mana, %).
Consumable
Potions, scrolls β short-term buffs (set a duration).
Calculation order
final = clamp( (base + Ξ£add + Ξ£item_add) Γ (1 + Ξ£% + Ξ£item_%) Γ Ξ mult Γ Ξ item_mult, min, max )
Each item modifier targets a specific stat. Only modifiers targeting the current stat β and currently active β contribute. Toggle items on/off from the Forge editor to see the impact live.
Workflow
- Create items in the Items page.
- Add one or more modifiers to each item, each targeting a stat.
- Open Forge and link items from the "Linked Items" panel.
- Export β items ship as independent resources, entities reference them by id.
Complexity Profiles
Profiles control how many stats are visible in the editor so you only see what you need. Switch profiles any time from the Forge editor.
Simple
Health, StaminaFor quick prototypes.
Intermediate
Health, Stamina, Attack, DefenseFor action games and lightweight RPGs.
Advanced
Health, Stamina, Mana, Attack, Defense, Critical Chance, Attack Speed, Movement SpeedFor larger RPG systems.
Custom
Your choicePick exactly the stats you need.
Formulas
Every active stat is calculated with the same simple formula, then modifiers are layered on top.
value = Base + (Level Γ Growth)
Health
How much damage the character can take before being defeated.
Damage
Base outgoing damage per attack.
Stamina
Resource pool for dodging, sprinting, or physical actions.
Mana
Resource pool for casting spells and abilities.
Defense
Reduces incoming damage taken from enemies.
Crit %
Percentage chance to land a critical hit.
Attack Speed
How often the character attacks (attacks per second).
Movement Speed
How fast the character moves across the world.
With modifiers
After the base value is calculated, modifiers are layered in this order:
final = (base + Ξ£add β Ξ£sub) Γ (1 + Ξ£%) Γ Ξ mult Β· clamp(min, max)
Level Progression System
Level progression describes how characters grow as they level up. StatsForge takes the Base and Growth of each stat, then automatically generates values across the level range you choose.
Why it matters
- Designers can preview the entire leveling curve at a glance.
- Programmers know the exact values to expect at every level.
- Balance issues (spikes, plateaus) become visually obvious.
Example
Min Level = 1, Max Level = 50 β StatsForge generates values for every level from 1 to 50.
Progression Table
The progression table inside Forge calculates stat values for every active stat across the level range. It updates instantly when you change any Base, Growth, Min Level, Max Level, or Complexity Profile value.
| Level | HP | Stamina | Attack |
|---|---|---|---|
| L1 | 110 | 55 | 12 |
| L10 | 200 | 100 | 30 |
| L25 | 350 | 175 | 60 |
| L50 | 600 | 300 | 110 |
The table is both a design reference (so you can see your curve) and an implementation reference (so you can verify your engine produces the same numbers).