你不知道的刀塔:浅谈DOTA2的叠加机制

2016-10-19 14:37:04 神评论

17173 新闻导语

DOTA2游戏内的各种叠加机制一直是玩家们争论不休的焦点问题,知乎的韩松同学为大家详解了各类关于游戏内叠加的问题,技术控一定要看!


在DOTA2中,存在着许多相同或相似的机制。今天简单介绍几种叠加机制。


1.加法叠加


加法叠加是游戏中最常见也是最容易被忽视的叠加方式。


加法叠加很简单,加法即可。


如下的机制使用加法叠加:


属性


生命值/生命回复速率(固定数值)


魔法值/魔法回复速率(固定数值)


攻击力


攻击速度


护甲


分裂伤害


时间


金钱


经验


某些物品在装备栏中(如吃树、净化)


2.乘法叠加


需要指出的是,乘法叠加并不是几个实例直接相乘,而是通过公式来计算。换句话说,成立的几率。


换句话说,一个事件若要发生,必须绕过全部的阻碍,才能发生。


如下机制使用乘法叠加:


致盲(闪避在下文讲)


魔法抗性


魔法抗性是乘法叠加的。比如一个造成100点魔法伤害的技能,由于英雄本身有25%魔法抗性,那么会将伤害降低到75点,现在英雄装备了挑战头巾,那75点伤害又会降低30%到52.5点,如果是敌法师,则又会继续降低50%到26.25点。因此学习了4级法术护盾(50%魔法抗性)的敌法师(25%魔法抗性)装备挑战头巾(30%魔法抗性)后拥有的魔法抗性:1-(1-0.25)*(1-0.50)*(1-0.30)=0.7375 = 73.75%魔法抗性。


或者这么说,一个造成100点魔法伤害的技能,首先要绕过魔法抗性这一关,成功率是75%;如果还要绕过一个挑战头巾,成功率为70%,所以总成功率为75%*70%;如果还要绕过敌法师的法术护盾,成功率是50%,此时的总成功率就是75%*70%*50%=0.2625。此时表现为魔法抗性为1-0.2625=0.7375,即73.75%的魔法抗性。


补充一下小人马的魔抗光环叠加机制。



DP与8个小人马每个小人马提供5%魔抗



魔法抗性为50%


若为加法叠加:25%+8*5%=65%,说明不是加法叠加。


若为乘法叠加:1-0.75*0.95^8=0.502=50%,说明是乘法叠加。


评论区有人说敌法师初始魔抗是18%






3.伪独立叠加


说到伪独立叠加,必须先说伪随机分布。


伪随机数生成算法(PRNG)是一个用于生成一组伪随机数字序列的算法,与本文无关


伪随机分布,简称PRD,在DOTA2中用来表示关于一些有一定几率的装备和技能的统计机制。与之相对的是真随机分布。在真随机分布中,每一次随机操作都是相互独立的,但是在PRD中,效果的几率会在每一次没有被触发之后增加,这使得效果的触发结果不那么极端(白牛1级无限推、PA无限闪避)。



到下次触发时所需攻击次数。可以看到,伪随机分布下,攻击10次及以上都没有触发的几率几乎为零。图片来源:dota2 wiki


一个事件,效果,发生的几率在第N次成功触发的几率为P(N) = C × N,对于每一个没有成功触发的实例来说,PRD会通过一个常数C来增加下一次效果触发的几率。这个常数会作为初始几率,比效果说明中的几率要低,一旦效果触发,计数器会重置,几率重新恢复到初始几率。


比如:


斯拉达的重击有25%几率对目标造成眩晕,那么第一次攻击,他实际上只有大约8.5%几率触发重击,随后每一次没有成功的触发实例都会增加大约8.5%触发几率,于是到了第二次攻击,几率就变成大约17%,第三次大约25.5%……以此类推,在一次重击触发后,下一次攻击的触发几率又会重置到大约8.5%,那么经过一段时间之后,这些重击几率的平均值就会接近25%。


基于PRD的效果使得多次触发或多次不触发的极端情况都变得罕见,这使得游戏的运气成分相对降低了一些。然而虽然理论上可行,但是在游戏中玩家很难运用这个机制来“刻意”增加下一次触发的几率。要注意一点的是,如果这个实例根本就不可能触发效果,那么触发几率不会增加,也就是说,一个英雄反补或攻击建筑不会增加他下一次攻击触发的致命一击几率,因为致命一击对反补和建筑无效。


除了伤害格挡的装备,在游戏中列出来的几率都是理论值,这个理论值会稍微比实际几率要高。在以下表格中,P(T)表示理论几率,P(A)表示实际几率,C是PRD常数,最大N值是根据C × N大于1得到的最大N值(也就是一定会触发的次数),平均N值是N的期望值,也就是N和概率的乘积之和,SD是N的标准差,为了作对比,SDt表示真随机分布中N的标准差,使用N从1到264的简单公式,显然,他们都比PRD要高,这就是PRD相对于真随机分布更能避免极端情况发生的依据。




由于这些基于百分比的物品从使用真随机分布改为了使用伪随机分布(PRD),物品与类似的基于百分比的技能之间的叠加几乎是相加的。[1]


为了解释这一情况,我们可以想象一下一个英雄有两个代达罗斯之殇时,由于一个代达罗斯之殇的理论致命一击几率为30%,由于使用PRD,第一次攻击出现致命一击的几率大约为11.9%,第二次大约为23.8%,每一次攻击都会增加致命一击的几率,直到第9次攻击,因为此时必定会出现致命一击。拥有第二个代达罗斯之殇时,每一次不出现致命一击的攻击都会增加这两个代达罗斯之殇下一次攻击出现致命一击的几率。但是,一旦这两个代达罗斯之殇的其中一个出现致命一击时,另一个没有出现致命一击的代达罗斯之殇PRD计数器不会被重置,因此会继续增加下一次出现致命一击的几率。从总体上来看,如果继续增加英雄拥有代达罗斯之殇的数量,出现致命一击的几率处于几乎加法叠加的状态。[1]虽然叠加情况是几乎加法叠加的,但是比较罕见的情况是所有代达罗斯之殇在同一次攻击中都出现致命一击时,所有 代达罗斯之殇下一次攻击出现致命一击的几率都会降到最低,因此下一次攻击出现致命一击就比较困难了。


同时致命一击的多个实例是互相独立的,因为在同一次攻击中如果出现多次致命一击实例时,只有倍数最高的才会生效(如果是有多个倍数数值相同的就会取其中一个)。比如,一个英雄持有一个 代达罗斯之殇和一个 水晶剑并且在同一次攻击出现致命一击,只有代达罗斯之殇的致命一击才会生效,因为他的倍数更高。这对于英雄技能来说也是如此,比如一个拥有一个致命一击技能的英雄持有一个提供致命一击的物品。[2]


闪避和伤害格挡的叠加规则与致命一击的相同,因为他们都是遵循伪随机分布的。这也能解释为什么两个圆盾看上去会比只有一个的时候更好,就是因为虽然格挡的伤害量不叠加,但是格挡的几率叠加,使得格挡伤害的有效几率几乎变成了100%。与致命一击类似,当同一次攻击出现多个伤害格挡的时候,只有格挡数值最高的生效。此处游戏内绿字是错误的,验证方法是买6个圆盾扛一波兵。


如下机制使用伪独立叠加:


伤害格挡


致命一击


闪避


其他使用伪随机分布的技能或物品:



4.不叠加


多个血精石不会同时增加点数,不会降低更多的复活时间。


多个碎颅锤或深渊之刃的重击几率不叠加 ,且不与重击类技能叠加。


多个同样的光环不会叠加。他们为单位提供buff,只有效果最强大的生效。一些物品会共享同一个特定光环的(王者之戒和弗拉迪米尔的祭品),这种情况下,只有弗拉迪米尔的祭品的魔法回复光环和护甲光环会生效。


唯一攻击特效不叠加,除了一些例外


5.一些持续类技能的叠加


如文章配图所见,多个风暴之眼是完全叠加的。但不是所有技能都是这样。


有些技能,多次施放并不会叠加效果,只会刷新持续时间,如上古巨神的回音重踏造成的睡眠效果等。


有些技能,多次施法可以叠加层数并完全刷新持续时间,比如莉娜的炽魂,钢背兽的鼻涕等。


有些技能,多次施法的效果相互独立,各自计算持续时间,互不打扰,比如NEC的施虐之心,钢背兽的针刺扫射和战意等。


有些技能,多次施法不会叠加效果,也不会刷新持续时间,如蚂蚁缩地对单位造成的伤害、上古巨神的星体游魂、沙王的腐尸毒等。(感谢评论区朋友的提醒!)


6.补充几点评论区提出的问题


1.什么是攻击速度?


请注意,攻击速度在游戏中表示为一个大于20的数值,用来衡量一个单位攻击的频率。


可是这与我们理解的“攻速”好像不太一样啊?


首先我们要明确几个名词,基础攻击间隔(Basic Attack Time,BAT),基础攻击速度,额外攻击速度(Increased Attack Speed, IAS),每秒攻击次数AT,攻击间隔。


BAT,不是互联网三巨头,在dota中,表示一个单位没有任何攻击速度加成的时候的默认攻击间隔。比如某英雄的基础攻击间隔是1.7,说明他在没有任何攻击速度加成(包括敏捷加成,光环,技能,物品加成)的时候每1.7秒会攻击一次。同理,如果是神谕者,那么他会每1.4秒攻击一次。BAT是英雄的固有属性,不会因为“攻击速度”的改变而改变,只能通过一些技能来改变(如炼金大招)。


基础攻击速度是100,对于每个单位来说都是这样,下文会再次提到。


IAS,就是指通过技能物品光环敏捷等获得的攻击速度,比如一个银月提供120点(额外)攻击速度。


攻击速度(Attack Speed, AS) = 基础攻击速度+额外攻击速度。


攻击间隔(也叫每次攻击所需时间,每XX秒攻击一次)=



或:



每秒攻击次数=



或:



上面两个公式即我们在游戏中攻击力面板见到的数值。



酒仙的BAT为1.7,攻击速度为189,则根据上述公式计算,1.7*(100/189)=0.899,与游戏内数值符合的很好


其实这个问题很好理解,当英雄攻击速度为100的时候每1.7秒攻击一次,那么这个英雄攻击速度为500的时候每多少秒攻击一次?就是一个简单的问题而已。


所以,攻击速度确实是加法叠加的。而每秒攻击次数,也是加法叠加的。


通过每秒攻击次数的公式可以看到,只有IAS是变量,那么这是一个关于IAS的正比例函数,所以是加法叠加。至于攻击间隔,它是每秒攻击次数的倒数,他是加法叠加的倒数,属于反比例叠加(自己造的词)。


如果一个单位的攻击速度到达了600,那么他再增加攻击速度也不会对每秒攻击次数产生任何改变,以为攻击速度是600封顶的。也就是说,5个银月和6个银月在攻击速度方面是一模一样的。多出来的一个银月完全没有作用。那么英雄的极限攻速是什么呢?其实这是一个不严谨的说法,极限攻速就是600,而大家说的应该是英雄极限状态下每多少秒可以攻击一次。这个很好算,用上边的公式,用该英雄的基础攻击间隔乘以100除以600就可以了。[4][5]


关于攻击速度,推荐大家阅读我的下一篇文章,在那里有更详细的介绍。


2.护甲减伤


每点护甲增加当前生命值6%的等效生命值,所以护甲收益是加法叠加的。


如果对这个公式有怀疑的话,可以去贴吧wiki上寻找相关资料。反正这个是对的。


这个公式也可以写成



这显然不符合乘法叠加规律。这也是反比例叠加(自己造的词)。


3.移动速度


移动速度 = (基础移动速度 + 具体值移动速度加成) × (1 + 百分比移动速度加成与减速的和),属于复合叠加。如果其中控制一种速度不变(比如具体值速度不变,只改变百分比速度或百分比速度不变,只改变具体值速度),那么属于加法叠加。


4.PA出大炮


有百益而无一害。


因为高倍数的暴击会覆盖低倍数的暴击,因此你可以这么认为:大炮只负责在恩赐解脱没暴击的时候出暴击。


[1]笔者仿照dota2流言终结者Ep.34的做法,测试了多组3大炮100次攻击触发的暴击次数,得到的结果是平均触发77次暴击,也就是说3大炮触发暴击概率为0.77。而根据乘法叠加得到的概率为


我录制了一段视频,大家可以直观地感受这种叠加机制下的暴击触发几率。


3大炮触发暴击几率:(视频)


[2]中立生物中头狼和巨狼的暴击除外,因为它们采用真随机分布


3]笔者录制了一段视频,学习了恩赐解脱的幻影刺客装备6个代达罗斯之殇,其中恩赐解脱触发15次,代达罗斯之殇触发82次,无暴击3次。


pa装备6大炮:(视频)


需要注意的是,当代达罗斯之殇和恩赐解脱同时触发时,虽然恩赐解脱的伤害会覆盖掉代达罗斯之殇的伤害,但是仍然可以听到代达罗斯之殇触发暴击时的音效——毕竟它也是实实在在地触发了。那么视频中代达罗斯之殇一共触发了多少次呢?答案是97次。触发恩赐解脱的暴击同时无一例外地触发了代达罗斯之殇的暴击。也就是说,出6把大炮触发暴击的几率是97%左右——几乎是100%。而根据真随机分布得到的几率是1-0.7^6=88%,同样比97%低了10个百分点左右。


[4]有的时候攻击力面板的攻击速度会"超过"20-600的范围,但是实际的攻击速度依然遵循20-600的范围,通过观察每秒攻击次数或每次攻击间隔不难发现攻击速度超过600,实际没有任何变化


[5]V社在攻速这里做的处理个人感觉十分失败,他们为了能够“更直观”地反应不同英雄攻速的差异,所以把那些BAT不是1.7的单位的攻击速度换算成1.7的单位来计算。举个例子,一个BAT为0.85的单位,没有额外攻击速度(即只有100攻击速度),那么他会每多少秒攻击一次呢?显然是0.85秒。但是界面上会显示其有200的攻击速度,这是因为同样是0.85秒攻击一次,对于一个1.7秒BAT的单位来说,需要200攻击速度来实现这个效果,所以攻击速度面板就显示该单位拥有了200攻击速度。这种机制本意想让英雄间攻击速度的比较变的更加直观,结果搞得越来越乱。


【来源:】

关于DOTA2的叠加机制的新闻

日期
游戏
状态
下载
礼包

页游测试表

日期
游戏
状态
评分
礼包