战斗公式的演化与策略--属性与公式的关系、减法公式与乘法公式
战斗伤害计算公式是rpg游戏对养成其决定性作用的关键因素,一切战斗属性的设计都围绕战斗伤害公式展开。战斗伤害公式也会因战斗属性的添加而随时进行调整。伤害计算公式中的每一个变量、因子和计算符号都结合属性有其蕴含的策略设计和针对性场景的应对设计。在设计中为了方便设计师自身计算和降低玩家的理解成本,不推荐设计过多的属性和过于复杂的计算公式。
一个经典伤害公式的例子
下面我们先来看经典游戏《魔兽世界》其中一个版本的一个计算公式
攻击强度(Attack Power,简称AP)
Warrior/Paladin(战士/圣骑士):AP=角色等级*3+力量*2-20
Hunter/Rogue(猎人/盗贼):AP=角色等级*2+力量+敏捷-20
Shaman(萨满):AP=角色等级*2+力量*2-20
Druid(德鲁伊):AP=力量*2-20
Mage/Priest/Warlock(法师/牧师/术士):AP=力量-10
角色DPS(每秒伤害)=AP/14+武器DPS
单次攻击伤害(最小/最大)=攻击速度*AP/14+武器伤害(最小/最大)+技能附加伤害
这里我们可以看到,不同职业的ap计算公式是不一样的,这由设计师所设计的职业特性决定,这样也意味着不同的职业有不同的属性和装备追求。
防御力(Armor)
1敏捷(Agilty)=2护甲(Armor)
原来:Armor减少伤害%=0.75%*防御力/(攻击方等级+9)
后调整为:伤害=原始伤害值/(1+armor/x),x和等级有关,那个x好像是400+85*lvl 伤害减少百分比的封顶值是75%
这里我们可以看到这个防御公式做过一次调整,不过2个公式里面核心思路都是需要有等级这个因子,这个因子的作用是玩家等级越高需求的防御力越大,也就是说防御值的等值收益是随角色等级增加递减的,因此玩家需要不断提升防御力来增加伤害减少的值。
最终伤害还会受到暴击,格挡,技能等因素的影响,在这里我们暂时不做一一介绍,有兴趣的朋友可以上网查阅相关的资料,随着版本的变更公式也可能做了很多次调整,这里不影响我们接下来要做的探讨。
战斗属性的策略模型
基本战斗模型
最基本的战斗模型由:生命值,攻击力,回合数3个要素构成,若是即时游戏,可以将一个标准战斗时长和标准攻击频率转化为回合数进行计算,二着没有本质的区别。
伤害=攻击力
之前很多横版清关游戏大部分用的就是这个。基于这个模型可以设计出攻击型单位和肉盾型单位。
属性添加与衍生策略
现在在属性中增加防御力
伤害=攻击力-防御力
这样看增加防御力这个属性是没有任何意义的,防御力的增加等同于每回合增加的生命值,从策略维度上看,相等于增加了生命值的上限,因此还是只能设计出攻击型的单位和肉盾型的单位。
为了让防御这个属性发挥作用, 我们进一步分析,这个生命值的增加是基于减少每回合对手攻击力削弱而进行增加的,针对性的策略设计应该是如果我们选择增加防御力,对方可以选择什么样的策略进行对应。因此基于防御力因素的添加方面我们可以从设计一个属性让防御力在策略维度上生效。
防御力降低每回合对手的输出暴击发生暴击,则单次攻击双倍,那么约等于防御力弱化攻击频率若攻击频率增加,那么针对攻击次数增加,同强度下伤害减少,则防御力效果增加
也就是说,暴击属性和攻击频率的属性增加可以针对属性投放策略设计出入狂暴战士,盗贼,弓箭手这样的职业特性。
基于玩法系统的属性类型添加
伤害=攻击-防御 这是一套完整的战斗体系如果我们要针对法师职业设计法术伤害,那么我们也可以用同样的方法设计出 :法术伤害=法术攻击-法术防御
他们通过共同属性生命值联系在一起。至于暴击,闪避,命中这类属性是否需要也作用于法术伤害体系,取决于具体的投放和设计者想要设计的特性。
如果我们需要针对不同类型的法术设计出不同的伤害效果,例如黑暗魔法,光魔法,神圣伤害之类,我们也可以设计对应的属性与属性抗性,在公式方面既可以基于基础的攻击公式做强相的乘法或弱相关的加法。
例如:
伤害=(攻击-防御)*(1+(黑暗法术增强-黑暗法术抗性))
伤害=攻击-防御+黑暗攻击-黑暗防御
基于节奏投放的的属性拓展
当一个游戏为了后期让玩家有属性方面的追求,尤其是现在以系统迭代为代表的网络游戏,设计者有可能设计与策略无关或是影响原有策略判断但是看起来很厉害的特殊属性,例如原本设计了防御力,后来又增加设计属性无视防御攻击,设计了无视防御攻击有增加无视防御抵抗。设计了暴击增加设计直接暴击属性等等。甚至完全独立出来增加金木水火土另一套伤害与伤害抗性出来。(这里所说的属性伤害不是那种与游戏策略和文化强结合的属性伤害。)
减法公式与乘法公式
减法公式的伤害计算:伤害=攻击-防御
乘法公式的伤害计算:伤害=攻击*伤害减免(伤害减免一般由防御属性与其他属性常量和变量得到)
下面我们来详细介绍下减法公式与乘法公式的优缺点和需要注意的地方,这里讨论我们主要是基于防御属性的讨论,暂时排除其他属性和例如技能这类的系统的影响。
减法公式
优点简单直接方便理解方便进行战力转化计算缺点等级范围内节奏难以控制,尤其是付费获得的防御属性方面在等级范围内达到上限,造成低端玩家无法对高端玩家造成伤害。
由减法公式的缺点可以看到,我们一般做减法公式的时候需要针对这些做一定的处理来缓解这些。可用的处理方式有以下几种
1:设定标准的防御预期减少伤害的比例,并且尽可能的让这个比例不要过大,由此增加等级范围内防御的提升空间。例如我们在标准投放的时候就让防御可以减少70%以上的伤害,那么玩家只要稍微通过其他途径获得了防御力就可能导致防御力加满。
2:设定最大减少伤害的比例,以免低端玩家对高端玩家无法造成伤害。
3:设定防御力的效果与防御减少比例之间的关系,例如如果防御力减少了50%的伤害,那么超过50%的防御力只能发挥60%的效果,例如对方100点攻击力,我有80点防御力,那么我实际产生的防御效果就是50+30*0.6=68点,依次类推进行调整。
乘法公式
有人将乘法公式和除法公式分成两个类别来进行介绍,我觉得必要性不大,下面我们列举2个常用的乘法公式和大家进行介绍。
公式1:伤害=攻击x攻击/(攻击+系数x防御)
公式2:伤害=攻击x(1-1/(1+防御/等级函数))
乘法公式的核心原则是加入其它变量让防御值增长的时候减少伤害比例接近1而永远无法达到1,因此我们在公式中看到的攻击x攻击/(攻击+系数x防御)实际上是攻击力与攻击/(攻击+系数x防御)的这个系数作用。和公式2的原理是一样的。公式2加入了等级因子,按个等级函数是指每个等级有一定的防御需求,若玩家防御力没有提升,那么防御产生的效果就会下降。
优点相对于减法公式,乘法公式中防御力接近无穷大都有价值缺点防御的价值难以准确进行计算,只能根据标准值进行参考估算
在进行乘法公式的时候我们通常需要进行如下的处理
1:拉出范围内伤害与防御的曲线,判断有价值的区间是否合理,然后调整系数将它调整到合适的范围,若无法调到每个等级都合理,可能就需要设计分段函数进行细节控制。
对比乘法公式和减法公式的优点和缺点可以看出,乘法公式虽然在复杂程度上提升了很多,但是实际的优点也没有想象的那么多。尽管用了除法公式能够让防御趋向于无限大,但是这个曲线也会受边际效应的影响,和分段减法公式的效果是差不多的,这也是为什么大家看到的大部分游戏选择乘法公式的原因。
最后总结一下,在进行数值公式的设计和选择过程中,要尽量避免出现为了公式而公式,而是尽可能的从用户接触的数值体验上多做考虑,从游戏的数值策略,节奏,和投放上面多做设计和调整。我们在对其他游戏进行公式分析的时候,原则上公式中所包含的每一个变量,每一个 运算符号都有其特定的含义。或是节奏上的,或是策略上的,或是为了应对某个技能存在或是某个系统存在。后面我会提供一些其他游戏的公式供大家参考。
欢迎大家进行交流,若有错误和不同的观点也希望得到大家的指正和建议。
qq群号:714174640
管理员微信:bigpug
公众号:youxihun2000