【数值框架】战斗公式:伤害公式分类
网上关于伤害公式的文章数不胜数,说法也是众说纷纭,一直没有找到一个通俗易懂的科普贴, 自学之路漫长且曲折,回看当初做了很多无用功,写这篇文章也是为了让新人节省一些宝贵的时间。
战斗公式需要讲解的东西太多了,用一篇文章说有点长,所以进行了内容拆分,这一章只讲一件事:伤害公式到底有哪些类型。
伤害公式分类
1.两个基础认知:
- 伤害公式的种类非常之多,以至于不可能完全罗列,所以绝不止市面上常说的【减法公式】和【乘/除法公式】这两类。
- 几乎所有中、大型项目都会同时使用多种伤害公式,以保证游戏策略的丰富性。
【举例1】伤害=当前血量[敌]×n%
【举例2】伤害=最大血量[己]×n%
【举例3】伤害=(攻击[己]-防御[敌])×当前血量[己]/最大血量[敌]×n%
为了方便理解,我将伤害公式分为了【特殊类】和【基础类】两大类别:
- 特殊类:就像是方言,虽然使用的范围小,但是十分具有地方特色。
- 基础类:就像是普通话,使用范围广,具有普遍认知度。
2. 特殊类伤害公式:
- 这类伤害公式,主要用于技能伤害,制造英雄/职业个性化差异,丰富玩法策略。
- 上面举的3个例子都是特殊类伤害公式
3. 基础类伤害公式:
ps:下文进攻方简化为[攻],防守方简化为[守]
- 游戏底层公式,用于大多数情况的伤害结算。
- 基础类分为减法和乘法两大类型,其他的全部为衍生类型:
【减法公式】伤害=攻击[攻]-防御[守]
【乘法公式】伤害=攻击[攻]×(1-免伤[守])
=攻击[攻]×(1-防御[守]/(防御[守]+n))
PS:这里的免伤指的是防御来带的免伤,其他免伤类型和防御免伤不在同一个层级,最后会说。
4 减法衍生公式:
- 减法衍生公式较为简单,就是对伤害进行一个倍率修正,就不过多阐述了。
5 乘法衍生公式:
- 我上面说基础类伤害公式只有减法、乘法两大类,却偏偏没有说除法,这是为什么?因为除法本质上也是乘法公式!
- 乘法公式中的免伤=防御[守]/(防御[守]+n),这是免伤的基础公式,其中n为修正系数,n的修正方式决定了不同的衍生公式!
- 下面做几个实例讲解:
【英雄联盟】
- n=100,当n为常量时仅仅是对防御数量级的修正,防御数量级一般在n的0%~400%之间,负值处理可以参考dota
- 免伤=防御/(防御+100)
- 展示公式:伤害=攻击[攻]×(1-护甲[守]/(护甲[守]+100))
【魔兽世界】
- n=400+85×等级[攻],额外增加了攻方的等级修正,当攻方等级提升时,防守方需要增加防御值以维持当前免伤,但防御的投放受限于等级。
- 免伤=护甲[守]/(护甲[守]+400+85×等级[攻])
- 展示公式:伤害=攻击[攻]×(1-护甲[守]/(护甲[守]+400+85×等级[攻]))
【苍之纪元】 (又称之为除法公式)
- n=攻击[攻],额外增加了攻方的攻击修正,防御属性的投放不再依赖于等级,可以伴随攻击的投放而投放。
- 免伤=防御[敌]/(防御[敌]+攻击[攻])
- 展示公式:伤害=攻击[攻]×(1-防御[敌]/(防御[敌]+攻击[攻]))
=攻击[攻]^2/(防御[敌]+攻击[攻])
【其他】
- n=攻击强度[攻],解决了除法公式攻击收益过高的问题,防御的投放伴随攻击强度的投放
- n=战力[攻],加入战力压制,解决了战力不准的问题。。。有点硬核,哈哈哈
6 属性补充
上面的公式属于公式的基础部分,只有血量、攻击、防御3个属性,如果要增加更多属性类型,应该增加到哪个层级呢?
举一个完整公式的例子:
设:基础伤害=攻击[攻]-防御[守]
最终伤害=((基础伤害+神圣攻击[攻]-神圣防御[守])×技能倍率[攻]+技能附加伤害[攻])×(1+伤害加成[攻]-伤害减免[守])×种族修正×兵种修正×元素修正
总结:
- 攻击类的拓展属性尽量和基础伤害放在一个括号内,如:神圣攻击
- 伤害加成类的拓展属性尽量放在不同括号内,如:伤害加成、各种修正
- 其实就这么简单
伤害公式的分类讲完了,下一讲会重点讲一下减法公式的优劣以及使用细节。