三、除法公式(Division / Harmonic)

公式

基础形式:

Damage = ATK² / (ATK + DEF)

通用形式(MOBA 常用):

Damage = C × ATK / (C + DEF)

C 为常数(通常 100)。

参数化形式(腾讯游戏学堂):

Damage = ATK × (1 - k × DEF / (DEF + C))

数学特性

特性表现
上限ATK(DEF→0 时)
下限→ 0(DEF→∞ 时,但永远 > 0)
DEF 收益递减
ATK 收益递减
ATK=DEF 时伤害 = ATK/2(或 C×ATK/(C+ATK))

EHP 推导

EHP = HP × (1 + DEF/C)

与百分比减伤的 EHP 形式相同,但减伤来源的数学本质不同。除法公式的减伤百分比 = DEF/(DEF+C),随 DEF 增大渐近于 1 但永远达不到。^[腾讯游戏学堂 - 经典战斗公式详解]

核心优势

1. 无死角缩放

  • ATK 再高,伤害不超过 ATK(天然上限)
  • DEF 再高,伤害永远 > 0(永远不会完全免疫)
  • ATK = DEF 时伤害 = ATK/2,无论数值多大

2. 攻防双向递减

  • 堆 ATK 有递减收益 → 鼓励混合出装
  • 堆 DEF 有递减收益 → 鼓励混合出装
  • 最优策略通常是 ATK/DEF 均衡分配

3. 多段攻击偏倚

除法公式对”少量高伤”攻击有天然偏好:

  • 1 段 × 100 ATK vs DEF=50 → 100²/150 ≈ 66.7
  • 2 段 × 50 ATK vs DEF=50 → 2 × 50²/100 = 50

高 DEF 目标更需要用高单段伤害破防,低 DEF 目标可以用多段快速输出——这创造了”攻击策略取决于敌人防御”的策略深度。^[GameDev StackExchange]

真实游戏实现

DOTA2 — 0.06 护甲系数(与 War3 相同公式)

减伤 = 0.06 × Armor / (1 + 0.06 × Armor)
伤害乘数 = 1 - 减伤
有效生命 = HP × (1 + 0.06 × Armor)

等价于:

实际伤害 = 基础伤害 × 1 / (1 + 0.06 × Armor)

即 C = 1/0.06 ≈ 16.67 的除法公式变体。^[Liquipedia - DOTA2 Armor]

League of Legends — 100 为常数

实际伤害 = 原始伤害 × 100 / (100 + Armor)

等价于 C × ATK / (C + DEF) 中 C=100。^[LoL Wiki - Armor]

魔兽世界 — 等级缩放除法公式(经典版)

减伤% = Armor / (Armor + 400 + 85 × Level)

化简为:

实际伤害 = ATK / (1 + Armor / (400 + 85 × Level))

C = 400 + 85 × Level 的除法公式,C 随等级增长。

等级因子的作用:让 DEF 的”生存时间增益”随等级递减。玩家必须持续提升装备才能维持减伤效果。^[腾讯游戏学堂 - 经典战斗公式详解]

Warcraft 3 的护甲公式本质也是除法

减伤 = 0.06 × Armor / (1 + 0.06 × Armor)

化简:

EHP = HP × (1 + 0.06 × Armor)

每点 Armor = +6% 基础 HP 的有效生命。^[War3 Battle.net]

RPG Maker 变体

Damage = a.atk * 4 - b.def * 2

表面上是减法,但配合数值设计(ATK 值通常是 DEF 的 2~3 倍),实际效果接近除法公式的缩放特性。

核心弱点

穿甲/减甲的不对称性

因为 DEF 有递减收益,所以:

  • 从 400 DEF 削减 100 → EHP 减少约 20%
  • 从 100 DEF 削减 100 → EHP 减少约 50%

这意味着穿甲装备在面对高 DEF 目标时相对弱势,面对低 DEF 目标时相对强势——这与直觉相反。^[yujiri.xyz - Damage Formulas]

适用场景

  • ✅ MOBA(DOTA2、LoL)— 数值范围大、需要稳定缩放
  • ✅ MMO(魔兽世界)— 等级系统需要 C 随等级增长
  • ✅ 需要”永远不免疫、永远有伤害”的设计
  • ❌ 需要精确战术计算的战棋(公式不够直观)
  • ❌ 需要攻防完全对称的竞技设计

相关概念