Skip to content

Scaling Curves

Scaling curves limit late-game stat inflation. When an attribute exceeds a threshold, only the exceeding part is reduced by a curve. This keeps progression valuable while preventing equipment, gems, strengthening, and sets from breaking combat balance.

Apply scaling curves first to:

  • Main damage attributes: physical_attack, projectile_attack, spell_attack.
  • Defense attributes: physical_defense, projectile_defense, spell_defense.
  • Probability attributes such as critical chance, dodge chance, and lifesteal chance.
  • Resource caps such as health and mana.
  • Penetration, damage reduction, cooldown reduction, or other attributes near hard caps.

Configuration

Scaling curves are configured in config.yml:

yaml
scaling_curves:
  physical_attack_cap:
    attribute: "physical_attack"
    threshold: 500
    curve_type: "logarithmic"
    factor: 100
FieldDescription
attributeAttribute id affected by this rule.
thresholdValue where diminishing returns begin.
curve_typelogarithmic, sqrt, or piecewise_linear.
factorCurve factor; exact meaning depends on curve type.

Final value can be understood as:

text
final = threshold + reduced_excess

Curve types

logarithmic

Good for main damage and defense attributes. Growth continues after the threshold but slows down smoothly.

sqrt

Stronger reduction. Suitable for strict control of defense, mitigation, or resource caps.

piecewise_linear

Keeps a fixed ratio of the excess part. Useful for probability attributes or rules that should be easy to reason about.

yaml
scaling_curves:
  crit_rate_cap:
    attribute: "physical_crit_rate"
    threshold: 80
    curve_type: "piecewise_linear"
    factor: 0.3

If the raw value is 100, the final value is about 80 + (20 * 0.3) = 86.

Tuning notes

  • Set thresholds near reasonable endgame values, not beginner values.
  • Avoid multiple curve rules for the same attribute unless you have a clear reason.
  • Test low, mid, endgame, and extreme-stacked characters after changing curves.
  • If growth feels too weak, increase threshold or factor; if too strong, lower them or use a stronger curve.