文章中所有数据取小数点后一位
游戏的乐趣是多样的,操作,排名,收集,荣誉,故事,沉浸体验,自定义,合作,策略,甚至恐惧,这些都可以是玩家游玩一款游戏是能够得到满足,获取快乐的地方。
本篇以“英雄联盟”中的“抗性”与“穿透”机制为例,给各位讲解关于游戏的机制以及数据计算方面的内容,希望能给各位带来一些平常游戏时不曾留意到的内容。如果可以的话最好能起到抛砖引玉的效果,引发各位关于游戏独到的理解与思考。
前排提示:本篇以网游“英雄联盟”为基础,其中有大量的计算过程,但是并不困难,不会有任何复杂的要素,请耐心看完,希望看完后你会有自己的理解与思考。
“护甲”与“魔法抗性“统称为“抗性”,起到减免受到伤害的效果。
其效果相同,所以这里仅以“护甲”为例:
“护甲”能够减免的伤害由以下公式计算
在不考虑对方任何穿透的情况下受到伤害的公式如下
代入伤害减免公式后
例如:当你有300点护甲
伤害减免=300/(100+300)=75%
当你受到数值为100点的物理伤害时(不考虑对方的穿甲),你会失去100*(1-75%)=25点生命值。
魔法抗性针对魔法伤害完全同理。
↑护甲数值造成的差别↓
护甲穿透与法术穿透则对应削弱上面二者减免的效果
以护甲穿透为例:
“护甲穿透”分为“固定穿透”与“百分比穿透”
例如“锯齿短匕”和“多米尼克领主的致意”分别提供这两种穿甲效果
那么实质上目标所承受伤害时的护甲值的计算公式就如下
这里要注意“穿甲”与“固定穿透无视的护甲值”是不相等的,其二者的数值与攻击者等级有关
其二者数值上的关系公式如下
再根据之前的公式,就得到目标受到伤害时计算完穿甲后的护甲值公式
游戏内测试:
1
攻击力100
穿甲0
百分比穿透0%
护甲10
最终护甲值=10*(1-0%)-(0.6*0+0.4*0*1/18)=10
最终伤害值=100*(1-(10/(100+10)))=90.9
2
攻击力100
穿甲0
百分比穿透0%
护甲20
最终护甲值=20*(1-0%)-(0.6*0+0.4*1*1/18)=20
最终伤害值=100*(1-(20/(100+20)))=83.3
3
攻击力100
穿甲0
百分比穿透20%
护甲20
最终护甲值=20*(1-20%)-(0.6*0+0.4*0*1/18)=16
最终伤害值=100*(1-(16/(100+16)))=86.2
4
攻击力100
穿甲10
百分比穿透0%
护甲20
最终护甲值=20*(1-0%)-(0.6*10+0.4*10*1/18)=13.8
最终伤害值=100*(1-(13.8/(100+13.8)))=87.8
5
攻击力110
穿甲10
百分比穿透20%
护甲20
最终护甲值=20*(1-20%)-(0.6*10+0.4*10*1/18)=9.78
最终伤害值=110*(1-(9.78/(100+9.78)))=100.20
上面五个场景都是攻击者1级的情况(回忆“穿甲”与“无视护甲值”的关系,然后看到第六个)
6
等级18
攻击力158
穿甲10
百分比穿透0%
护甲20
最终护甲值=(20-(0.6*10+0.4*10*18/18))*(1-0%)=10
最终伤害值=158*(1-(10/(100+10)))=143.6
这个场景是等级18的情况
以上是有关“抗性”与“穿透”机制数据部分的解读与证明,现在我们可以思考这些机制运作背后的含义,我在这边举一个例子:
我们仔细观察“抗性”的计算方式
我们把这个公式换一个写法
“DR”(伤害减免)=x/(100+x)
现在将这个公式画出函数图像
可以发现,随着护甲增长,伤害减免确实是在增长,
但是,从0到100点护甲,伤害减免提高了50%,而从100到200点护甲,伤害减免只增长了17%,并且伤害减免的增长速度不断减慢,且在护甲到正无穷大时趋近于100%。
游戏中我们是不可能叠出那么高的护甲的。
可能有人这时会问,
难道说护甲叠的越高,我后面叠的护甲防御效果就越差,性价比就越低?
??????????????????????
这边暂时不否认这种说法并且先把这个问题放一边,
现在需要抛出一个新的名称。
“有效生命值”
这么做是为了与“生命值”区别开来,
“有效生命值”指的是计算护甲的情况下单位能够承受的伤害。(此时一概不讨论护甲穿透)
或者也可以理解为一击击杀这个目标所需要的最小伤害(考虑抗性且不考虑穿甲)的数值即为“有效生命值”的数值。
按照原理,“有效生命值”的计算方法应该如下
代入伤害减免的公式即为
如何理解这个概念,请看下面两组gif
1
2
这两次索拉卡的生命值都是535,
但是,
1号护甲是38,受攻击10次,每次伤害56,
2号护甲是128,受攻击17次(图片大小限制没放完),每次伤害34。
注意,二者生命值都为535。
则1号索拉卡的“有效生命值”=535/(1-(38/(100+38)))=738.3
2号索拉卡的“有效生命值”=535/(1-(128/(100+128)))=1219.8
现在我们将有效生命值以数学公式呈现出来
h为“有效生命值”,设“生命值”为1,“抗性值”为x
得到了这样的公式
将其化简得到
是的,这是一个一次函数,图像如下
在这个函数中我们就能发现,每提升一点护甲都能使“有效生命值”提升百分之一“生命值”的数值。也就是说你能抗的伤害多百分之一。
堆高护甲所得到的收益,是来自于你所能抗住的伤害的总和,而非受到单次伤害的大小。
到这里是否你就能明白护甲提升过程中伤害减免降速的原因了,想必这也是设计师冥思苦想得到的机制。
在你苦恼自己堆了如此之高的护甲却还是受到了不少的伤害时,你没有注意到自己吸收的总伤害量已经大幅提升了。
相对应的游戏中的输出位也可以通过了解对方的出装方法使用不同的对策,
例如主百分比破甲来对付高护甲目标,或者是通过提高攻击力以及固定数值的穿甲来快速解决低护甲的目标。
除了“抗性”部分,“穿透”的内容也有自身特殊的用意,
比如说“穿甲”数值所对应的“无视护甲”数值,其二者之间的关系,以及实战时固定穿透与百分比穿透直接的取舍。
并且在此也并没有讨论“护甲穿透”与“有效生命值”之间的关系。
这些部分留给各位自行探索。
网上也有很多大佬解析其游戏机制之中的含义,大家可以自行挖掘。
内容繁琐复杂,
再次感谢看到这里每一位观众。