为什么加减法公式的防御收益较高
常用公式一览
引用前辈的公式说明:
减法:damage=atk-def
除法:diablo:damage=atk*atk/(atk+def)
乘法:wow:damage=atk*(1-免伤率)
从免伤率谈加减法
免伤率介绍
设 ATK 代表攻击力,HURT代表所受伤害。
示例如下:
HURT=ATK*(1-免伤率)
注释:免伤率在 0-1之间。并自身防御挂钩。
用在游戏里,是我们希望用户的防御提升,它的免伤率提升,这样达到受伤比例减少的效果,也希望给予用户防御值有用的感觉。
举例:
HURT = ATT *(1 - 防御值/等级防御值)
注释:等级防御值是随着等级增加的一项属性
这样可以达到的效果是,随着等级增加,每点防御值带来的免伤收益减少。它可以扩展防御值属性的值。我们类似的方法来堆属性。
暴击值也有类似的做法。
但这个不解决根本问题。
什么是根本问题呢?
我们希望确切的知道每一点防御值带来多少收益。否则我们不好计算对应的怪物属性,以及估算副本的难度。
这里需要引入有效生命与防御收益的介绍。
有效生命
题设:
玩家1:攻击,ATK1,血量HP1,免伤率M1;
玩家2:攻击,ATK1,血量HP1,免伤率M1。
假设玩家1与玩家2同归于尽,则:
玩家1存活时间:T1=HP2/ATT1(1-M2)
玩家2存活时间:T2=HP1/ATT2(1-M1)
T1=T2
则
HP1*ATT1/(1-免伤率M1)= HP2*ATT2/(1-免伤率M2)
我们把 攻击力 单独 提出来
[HP1 /(1-免伤率M1)]*ATT1= [HP2/(1-免伤率M2)]*ATT2
这里括号里的 [HP1 /(1-免伤率M1)] 可视为有效生命。
如我的免伤率50%,则我的有效生命是基础生命的2倍,敌人难以杀死我。
防御收益
我们在工作中,希望防御增加,有效生命规律增加,这样有利于我们的计算。
把上面的免伤率抛开。我们假设有效生命随着等级增加对原HP的倍率。
预设:
用EHP代替有效生命。
用LV代替等级增加的有效生命,每次百分之一。
结合:
EHP=HP*(1+LV敌/100)=HP*(1+lv敌/100)
则推出伤害公式:
HURT=ATK/(1+lv敌/100)
这里LV每提升1级,我方有效生命增加1%
我们可以通过更改分母或者添加系数的方式增加或减少防御收益。
收益百分比=1+ a*LV/b,a、b代表系数,lv代表与等级相关的防御值。
结合网传《刀塔传奇》伤害公式:
N = A/(1+(B-88)*0.0075)
即每点护甲(防御)带来0.0075的原生命倍率收益。
则我们预设每点防御带来多少收益,即可做出相应伤害,以满足我们游戏流程的需要。
拓展:
结合常用公式中的第二个
diablo:damage=atk*atk/(atk+def)
它的有效生命收益是 (1+def/att),即与我方防御与敌方攻击之比挂钩。若防御与攻击失衡,则容易被击杀。
加减法的防御收益过高
从上面看出,我们在乘除法的公式中可以量化防御价值,也为我们计算怪物属性,副本难度带来一定简便。但加减法与乘除法是不一样的。
加减法介绍:
HURT= ATK – DEF
但在这里,防御收益是依据敌方的攻击力变化的。它不能把敌方攻击力约掉。
收益百分比= ATK敌/(ATK敌-DEF我)=1/(1- DEF我/ATK敌)
它的大小取决于 DEF我/ATK敌
当我方防御力与敌方攻击力接近时,DEF我/ATK敌 这个数会很接近于1
则1/(1- DEF我/ATK敌) 接近于0,
则收益百分比= ATK敌/(ATK敌-DEF我)=1/(1- DEF我/ATK敌) 接近无穷大。
如某加减法的RPG,全服第一的防御是100,而全服攻击最高的只有99,则他一个人可以无损耗屠戮全服,这里就是我们说的加减法的防御收益过高。
加减法的防御过高解决办法
我们可以把上述两种方法结合。当防御收益百分比低于某个数时用加减法,高于某个数时用乘除法。我们需要保证中间过渡平滑。
定义
防御收益低于10倍时,用加减法。
防御收益高于10倍时,用乘除法,并且防御每高于敌方1倍,防御收益增加1数值增益倍率
则
DEF我/ATK敌<0.9时,
HURT=ATK- DEF
DEF我/ATK敌>=0.9时
HURT=ATK/(10+ (DEF我/ATK敌-0.9)*1)
归根结底还要面对的问题
上面的陈述,依旧没有解决玩家成长的体验感、怪物强度、技能强弱、规则碰撞。
而被忽略的这些,才是游戏好玩与否的关键。至于上文提到的“等级防御”,这种欺骗性的做法,是很令人不安。
然而世界本是罗生门,我们需要的也不是真相。
灯下黑
2015-7-24