[YYer]DotA2攻速计算及攻速显示面板研究



作者biggreenpepper

楼主 康猩猩  发布于 2015-01-24 21:45:00 +0800 CST  
先来两首歌,气氛high起来
My Boyfriend Is Gay - Hailey Rowe




Boom Clap - Charli XCX


楼主 康猩猩  发布于 2015-01-24 21:46:00 +0800 CST  
本文分基础篇和进阶篇。


对于大部分dota玩家来说,基础部分就已经足够让他们对dota2中的攻速有一个清楚的认知,如果你也喜欢研究这些机制,或者喜欢打破砂锅问到底,不妨看看后面的进阶部分。

楼主 康猩猩  发布于 2015-01-24 21:49:00 +0800 CST  
基础篇



大部分dota玩家都对攻速有一个基本的认知,至少知道每个英雄都有一个基础攻速,然后你可以通过装备、增加敏捷、光环、技能等途径来提升攻速,有部分玩家还知道攻速是有上限的,这个上限在6.83由500点提升至600点。但是600点攻速有多快,是不是在同等条件下所有的英雄都有一样的攻速,攻速是怎么算出来的,很多人却不清楚,也导致一些dota里攻速最高的英雄是谁之类的日经贴层出不穷。


楼主 康猩猩  发布于 2015-01-24 21:50:00 +0800 CST  
在这里,我必须引进一些常量和变量来帮助我们更好地理解dota2中的攻速是如何计算的。


基础攻击间隔(Base Attack Time,BAT):最底层的攻击间隔数据,是游戏变量与现实时间挂钩的唯一桥梁,所有和攻击速度有关的计算都必须依赖基础攻击间隔,它是一个与*模型绑定的常量。
*模型:模型上绑定了非常多的数据,基本上一个单位所有的属性都可以在模型上找到,一个英雄一般只有一个模型,但拥有变身技能的英雄可拥有多个模型。OMG玩家口中的模型就是指这个模型。


基础攻击速度(Base Attack Speed,BAS):衍生常量,dota2中所有单位的基础攻击速度都是100点,是为了建立攻速计算公式而人为规定的常量。


攻击间隔(Attack Time,AT):一个单位进行持续攻击时,连续两次攻击中间隔的时间,量纲为秒,即dota2的显示面板显示的攻击间隔。


攻击速度 或 攻速,Attack Speed(AS):狭义的攻击速度,特指dota2中对攻击速度的定义。


攻击频率(Attack per Second,ApS):即一个单位进行持续攻击时,1秒内能够攻击的次数,广义上的攻速,经常被玩家误解为上面的攻击速度。


攻速提升(Increased Attack Speed,IAS):即一个单位通过各种途径获得的攻击速度提升。

楼主 康猩猩  发布于 2015-01-24 21:53:00 +0800 CST  
在这6个常量和变量中,最重要也最需要记忆的就是基础攻击间隔,可以说,没有基础攻击间隔,就没有攻速。


其中,基础攻击速度+攻速提升=攻击速度,攻击间隔×攻击频率=1,这两个关系是显而易见的,下面的式子更加重要,记住下面的式子,那么你能自己计算80%以上关于攻速的问题了。
基础攻击间隔÷(攻击速度%)=基础攻击间隔÷(基础攻击速度%+攻速提升%)=攻击间隔,
也即:
BAT÷(1+IAS%)=BAT÷AS%=AT
其中,dota2单位面板上显示的攻击速度即攻击速度AS,面板上显示的时间即攻击间隔AT(事实上这么说并不完全准确,在dota2的攻速显示系统里,上述公式和AS、AT的解释只适用于那些基础攻击间隔为1.7秒的英雄,如果想进一步了解,请看进阶部分)。

楼主 康猩猩  发布于 2015-01-24 21:57:00 +0800 CST  
举个栗子,影魔出生时的敏捷为20点,如果给他一个迈达斯之手(+30攻击速度),此时他的攻击速度为20+30+100=50+100=150点,影魔的基础攻击间隔为1.7秒,那么影魔此时的攻击间隔为1.7÷150%≈1.13秒,换算成攻击频率,则为1÷1.13≈0.88,即1秒攻击0.88次,相比未装备迈达斯之手时的攻击间隔1.7÷1.2≈1.42,攻击频率1÷1.42≈0.71,提升还是比较明显的。


这是1级的裸体影魔(是不是有冲上去干的冲动?)




当你闲着没事干单机测试或者虐菜时,可能会出5把雷神之锤,这时即使不计算敏捷和其他加成,光是这5把雷神之锤提供的攻速提升,就达到了400点,算上100点基础攻击速度,那就是500点攻击速度了,如果再开个疯脸,此时的攻击间隔是1.7÷6≈0.28,攻击频率是1÷0.35≈3.53,1秒钟扇你三巴掌的影魔,还几乎每一下都能拍出一道闪电,大家可以脑补一下画面,这个影魔死的得有多快

500攻速的影魔(8级的哦),这里我通过调整影魔的等级,使得他的敏捷刚好是40点,给敌方英雄加个冰甲,把40点敏捷加的攻速抵消掉,就刚好是500攻速了



开疯脸的影魔(还是8级的哦)

楼主 康猩猩  发布于 2015-01-24 22:06:00 +0800 CST  
大家都知道攻速是有上限的,这个上限是600,那么如果攻速超过600了会怎么样呢?
看图


和上面的影魔相比,这只影魔不受冰甲的影响,640的攻速下,攻击间隔还是0.28,因此超过600的攻速还是按照600攻速来计算。

楼主 康猩猩  发布于 2015-01-24 22:09:00 +0800 CST  
上面是增加攻速的计算方法,如果攻速被降低了,该如何计算?其实上述攻速计算公式对于加减攻速都适用。


举第二个栗子,某只影魔拥有200点攻击速度,攻击拥有满级被动的小鹿,则此时影魔的攻击间隔为1.7÷(200%-120%)=2.125秒,假如小鹿有冰甲,则攻击间隔将达到1.7÷(200%-120%-40%)=4.25秒,1秒只能攻击0.23下,输出被大幅度降低。



80攻速的1级大电锤影魔,攻击满被动的小鹿,此时攻击间隔为2.13



小鹿带冰甲,此时影魔攻击间隔为4.25


尽管冰甲只是多减了40点攻速,但影魔的攻击间隔却大幅增加。

楼主 康猩猩  发布于 2015-01-24 22:25:00 +0800 CST  
看到这里,部分玩家可能会有这么个疑问,如果这只影魔再被凤凰的烈火精灵、全能光环减攻速会怎么样,攻击速度会不会变成负数?
看图


大刑伺候,凤凰F+小鹿被动+双头龙法球+冰甲,总共减150+120+50+40=360点攻速,而影魔也就20+80+100=200点攻速,尽管受到这么多减攻速技能的作用,但是影魔还是有20点攻速,而此时的攻击间隔也达到了可怕的8.5。

楼主 康猩猩  发布于 2015-01-24 22:30:00 +0800 CST  
可以看到,攻速最高就600点,最低20点,这是因为war3对攻击速度设定了一个区间,这个区间是[20,500],也就是说,攻击速度最低20点,最高500点,减攻速技能再多,也是白搭,攻速装备再多,也是浪费。dota诞生于war3,这些设定也自然继承了下来了,dota2也不例外,当然,6.83攻速上限被从500改成600。




看到这里,如果你能充分理解上述内容,你就能应付80%以上的攻速计算问题了。这就是基础部分,概念很简单,不少水友应该早就了解了。

楼主 康猩猩  发布于 2015-01-24 22:31:00 +0800 CST  
人呢
没人看,更不下去了

楼主 康猩猩  发布于 2015-01-24 22:35:00 +0800 CST  
进阶篇





在进一步研究之前,我们必须先明确攻速的定义。
在游戏里,攻速指的就是攻击次数和时间的商,当然,这里的攻速是广义上的攻速,不同游戏对攻速的定义并不一定是一样的,相反,不同的游戏对攻速往往有不同的定义。不同游戏的玩家们对攻速的理解也往往不同,以dota为例,大部分dota玩家口中的攻速其实更经常代表的是攻击频率(Attack perSecond,ApS),然而dota里的攻速则是war3定义的一个抽象变量(dota2亦然),而war3定义的攻速是一个没有量纲的导出量。
由于攻速是导出量,因此仅有攻速一个量是无法得知一个单位确切的攻击速度到底是多快,无法和现实进行联系,就像你只知道速度,而对米和秒没有概念,就无法对这个速度有一个确切的认识。
因此,基础攻击间隔这个概念就被引入了,这是一个具象常量,量纲是时间,有了基础攻击间隔,你就能对一个单位的攻速有具体的概念。
例如在dota里,如果我只告诉你某个单位的攻击速度是200点,你是无法得知这个单位打人究竟有多快,但只要再告诉你这个单位的基础攻击间隔是2秒,你就知道,这个单位每秒攻击1下。



楼主 康猩猩  发布于 2015-01-24 22:49:00 +0800 CST  
在基础篇里我们已经讲过dota里(实际上是war3)基础攻击间隔和攻速这两个量的关系,即BAT÷AS=AT,dota2也不外乎如此,但dota2的面板显示却有一个相当奇葩的设定,这个设定得留到后面再详细解释,在此之前还有很多的工作需要做。


首先让我们看看war3是怎么显示一个单位的攻击速度的。在war3里,一个单位当前的攻击速度通过攻击间隔来表现,war3里攻击速度在其面板上显示的是这几种:非常快,快,中等,慢,非常慢。这6个词分别代表6个攻击间隔区间,war3默认的平衡常数里,非常快代表攻击间隔在(0,1.0),快代表攻击间隔在(1.0,1.5),中等代表攻击间隔在(1.5,2.0),慢代表(2.0,3.0),非常慢代表(3.0,∞),这些数字的单位都是秒。这6个词能提供较为模糊的信息,能让你对这个单位的攻速有一个初步的概念。



到了dota里,可操作单位往往只有一个英雄,因此对单位信息的了解就更加有必要,特别是攻击速度这么重要的属性,因此光有这6个模糊的词是不够的,我们需要更加具体的信息。随着各路大神的辛勤探索,war3里单位各项属性的相关信息都被一一挖掘出来,他们通过多次试验得出了攻速计算公式,甚至连war3限定最低攻击间隔都挖出来了。因此,基础攻击间隔BAT、攻击间隔AT、攻击速度AS、攻速提升IAS、攻击频率ApS这些概念一个个出现在了我们面前。

楼主 康猩猩  发布于 2015-01-24 22:55:00 +0800 CST  
OK,前面扯这么多,都是为了说明攻击速度是一个相当抽象的概念,而Valve定义的攻击速度更加抽象,到后面你就知道为什么会这么说了。


把目光在转回回到dota2,尽管不少玩家都把攻击速度误解为攻击频率,但Valve仍在dota2里采用一套比较复杂的显示方法——攻击间隔(Attack Time,AT),以及攻击速度(Attack Speed,AS)来组合显示。攻击间隔,即一个单位进行连续攻击时,连续两次攻击中间隔的时间,量纲为秒。而这里的Valve定义的攻击速度,正是进阶篇的重点。

楼主 康猩猩  发布于 2015-01-24 23:02:00 +0800 CST  
为什么dota2要采用攻击间隔+攻击速度提升这样比较复杂又不那么直观的显示方式呢?


这两种显示方式各有利弊,采用ApS这种显示方式,对玩家来说是一个比较容易接受的数据,他所操作的英雄的攻击速度如何一目了然,但是这种显示方式却不利于战场环境下的预先计算。
例如,我要想击杀对面一个英雄,我知道他有一个技能能降低我的攻击速度,那么问题就来了(拒绝挖掘机),在他降低了你的攻击速度之后,你的ApS是多少呢?由于只有ApS一个数据,除非你对你所操作的英雄的基础数据都十分清楚,否则计算是不可能的,尽管你可以在被降低攻速之后快速地瞄一眼面板来知道你现在的ApS是多少,但对于lol、dota这种战场形势变化迅速的游戏来说,等到你上战场了你才知道准确数据,往往会是致命的,极有可能出现你的估算出现了偏差,导致你没有将其击杀,甚至被反杀。而AT+AS这种组合,虽然没有ApS直观,但却让玩家可以进行预先计算,降低估算错误的风险,哪怕计算并不是那么容易。


当然实际游戏中,dota和lol两款游戏往往表现出截然不同的风格。尽管LoL的显示方式不便于提前计算,但玩家击杀失败往往不是因为估算问题,而是操作问题。另外LoL的法强等设定使得其英雄的技能伤害偏高,你往往不需要考虑攻击速度的问题,更多的是考虑如何才能把技能打出更高的伤害。
而Dota在一次击杀中对物理攻击的依赖明显要高于LoL,或许正是考虑到这种情况,Valve采用了AT+IAS组合显示攻速,方便玩家提前进行计算。

楼主 康猩猩  发布于 2015-01-24 23:06:00 +0800 CST  
扯远了,回到Valve定义的攻击速度上来。




在基础篇里,我曾说过,在dota2的攻速显示系统里,“dota2单位面板上显示的攻击速度即攻击速度AS,面板上显示的时间即攻击间隔AT”,这个解释只适用于那些基础攻击间隔为1.7秒的英雄,其中,攻击间隔AT的解释对于基础攻击间隔不是1.7的英雄来说依旧适用,但为什么对于基础攻击间隔不是1.7的英雄来说,AS的解释行不通呢?
让我们来看一组图





这是大树分别攻击0-4级不可侵犯的小鹿的攻速截图,电锤和冰甲是为了消除敏捷加成的影响,漩涡+25点攻速,加上15点敏捷刚好和冰甲-40攻速相抵消。


我们知道,大树的基础攻击间隔是1.9秒,也就是说,如果不计算敏捷加成,裸体1级大树的攻击间隔是1.9秒,最后一张图也确实显示了1.9秒的攻击间隔,然而,此时大树的攻击速度却不是100点,而攻速最低时,也不是20点。细心的吧友应该也注意到,这个攻击速度和攻击间隔也和1.9的基础攻击间隔不对应。


这有悖于基础篇里的BAT÷(1+IAS%)=BAT÷AS%=AT这个公式。
那是不是说这个公式就是错的呢?非也,这个公式是绝对正确的。
问题的原因我前面已经提到了,正是Valve在攻速方面的一个奇葩设定。



楼主 康猩猩  发布于 2015-01-24 23:24:00 +0800 CST  
在这里,我要引入一个你以前可能从来都没有见过或听说过的常量,这是我为了解释攻速显示面板不符合BAT÷(1+IAS%)=BAT÷AS%=AT这个公式而自创的概念:
校准攻速或补偿攻速,Calibration/Compensation Attack Speed(CAS)(后面统一称为补偿攻速)


这个变量是干什么用的呢?看大树攻速的最后一张图

在消除了敏捷加成的影响之后,英雄的攻击速度应该是100点,而大树却只有89点,这是因为大树的补偿攻速是-11点,100点的基础攻击速度在加上-11点的补偿攻速之后,就变成了89点。


再来看83火热的剑圣


同样,这些装备和冰甲都是为了消除26点初始敏捷对攻速的影响。
可以看到即使不计算26点敏捷加成,剑圣的攻击速度仍然有121点,也就是说,剑圣的补偿攻速是21点。


补偿攻速与其他攻速(敏捷、装备、技能效果加成)是什么关系呢?由于这是个为了解释面板显示问题而衍生的常量,自然和面板的显示有关。在看两张图你就会明白补偿攻速和其他攻速是什么关系了。




这是600点攻速的jugg,攻击间隔是0.24,而0.24≠1.4/600=0.23
那么剑圣极限攻击间隔时,面板上的攻速应该是多少呢?看下图


621的攻速下,达到了最低的攻击间隔0.23,你应该注意到了,这21点攻速正是我前面说的剑圣的补偿攻速。


很明显,补偿攻速与其他攻速在面板上是直接相加的,而正是由于在面板上是直接相加的,导致对于基础攻击间隔不是1.7的英雄来说,他们的AT*AS≠BAS。

楼主 康猩猩  发布于 2015-01-24 23:41:00 +0800 CST  
接着看几张图





第一张炼金是没有开大的,第二张则是开了三级大的,四张图都消除了敏捷的攻速加成。


对比四个模型的攻击速度和攻击间隔,如果你对数字足够敏感,应该会发现这里显示的AS和AT,AS*AT=1.7。
没错,dota2面板都是以1.7的基础攻击间隔来计算的,当英雄不受任何攻速加成的影响的时候,根据面板上显示的攻击速度和攻击间隔计算出来的基础攻击间隔都是1.7。这就是我前面一直说的,V社在攻速显示方面的一个奇葩设定,而正是因为都是基于1.7的基础攻击间隔来计算攻击间隔的,因此V社程序员不得不引入补偿攻速这个常量,来使AS和AT符合AS*AT=BAS这个公式。





楼主 康猩猩  发布于 2015-01-24 23:58:00 +0800 CST  
刚刚突然内急,放了个大

楼主 康猩猩  发布于 2015-01-25 00:44:00 +0800 CST  

楼主:康猩猩

字数:7312

发表时间:2015-01-25 05:45:00 +0800 CST

更新时间:2016-03-10 17:05:52 +0800 CST

评论数:427条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看