暴雪游戏推荐

暗黑3野蛮人攻速讨论:Thinking In IAS

时间:2013-06-23 00:00 作者:gazeofdoom 手机订阅 神评论

新闻导语

我所说的很多东西,都是基于假设,测试结果接近也不能说明他就一定是对的,未必可靠,只有官方说的才可靠。

三 从小旋风跳数说起

0.90-1.00 攻速  = 9 跳

1.01-1.11 攻速  = 10 跳

1.12-1.17 攻速  = 11 跳

1.18-1.32 攻速  = 12 跳

1.33-1.43 攻速  = 13 跳

1.44-1.53 攻速  = 14 跳

1.54-1.665 攻速 = 15 跳

1.67-1.815 攻速 = 17 跳

1.82-1.995攻速  = 18 跳

2.00-2.22 攻速  = 20 跳

2.23-2.4975 攻速 = 23 跳

2.50-2.8512 攻速 = 26 跳

2.86-2.98035 攻速 = 30 跳        3.3333

这张表是冲刺小旋风跳数和攻速的关系,大部分人都很熟悉这张表,从这里开始讲,因为他的产生过程和我前面提到的现象在原理上是一样的,顺便也正好对这个表做一下解释。

其实很长一段时间,我对这个表是不太认可的,为甚么左边的攻速都是这些奇葩的数字,为甚么右边的跳数随着数值的增长开始变的不连续,不能有19跳吗?各种疑问,甚至一度认为他是错的,实际在论坛上也确实流传着一些有细微错误的版本。我以前一直认为:“尾气没有这么复杂。如果一个技能写造成XXX% 武器伤害,代表他每秒攻击攻速次,每秒XXX%*攻速*DPH的伤害,猛击,先祖都是这样,尾气也一样,区别只是,尾气的60%不是一次产生,是拆分成3 个20%来产生,于是每跳20%DPH,每秒就是攻速*3跳,3秒就是攻速*9跳”。  我一直觉得我的想法比这个表更合理,但实际对错还是要通过测试来说明

测试时的攻速:1.98 | 2.01 | 2.04(可以下载我的测试视频)

测试方法还是和前面一样的,通过把伤害值调成固定,根据目标的损血来计算伤害次数,为了凑这个攻速我更换了一些装备,不暴伤害变成213 暴击362,结果:

攻速 总伤害 暴击次数 非暴击次数 总次数
1.98 4430 4 14 18
2.01 4260 0 20 20
2.04 4558 2 18 20

按照我以前的想法,在2.01攻速时,跳数=2.01*9=18.09,应该是18或者19跳,实测结果是,当攻速跨过2.00后,直接从18跳突变到了20跳,没有19跳这个过程,这与表格是相符的。说明我以前的想法是错的,表格才是对的。

验证了他的正确性后,开始找原因。

很多人是从这个帖子看到的这张表: 1.04无限双旋风传奇级攻略 ,基本上每个玩双旋风的玩家都会看过这个帖子,但该贴并没有解释这张表为甚么是这样,只是提到摘自“午夜镇魂曲”的帖子

午夜镇魂曲的帖子还是没有解释为甚么,只是提到摘自“蛮子一桶浆糊”的帖子,论坛搜索这个ID,还好他只发过2帖,有提到这张表,但依然没有解释为甚么,也没写转自哪里,于是,线索断了。还好,在浆糊的帖中,我发现他列的这张表中的单位是用英文写的,说明,他很可能是转自国外某网站,并且没有经过修改。

在这个贴中,作者终于非常详细对这个表做了解释,原帖是英文的,我简单讲下:D3中有一个最小时间单位:帧,Frame,下文简称F,他的长度是1/60秒,每一秒游戏固定由60个F组成,这些不会变。

作为最小时间单位,他不可分割,不会出现0.5F这种东西。D3中的各种动作,都会占用一段时间,由于F是最小单位且不可分割,各种动作占用的时间就必须是F的整数倍,一个动作可以占用10F的时间,如果要快一点,他要么变成9F,要么变成8F,无法变成8.5或者9.875F这种。

冲刺的小旋风的每一跳也是一个动作,他也会占用一定的时间,这个时间一定是F的整数倍,即NF,N是整数。一个小旋风持续3秒,3秒=180F,每一跳的时间是NF,那么3秒内的跳数=180F/NF=180/N,由于N必须是整数,当他等于9的时候,180/9=20,当他等于10的时候,180 /10=18。这就是为甚么不会有19跳的原因,因为小旋风一跳的时常要么是9F,要么是10F,无法是中间的某个值。同理,我们可以算出当N等于 1,2,3...时的跳数,都是180/N。比如在某个攻速下小旋风每跳的时间是5F,那么3秒就有180/5=36跳。

N的取值是怎么确定的呢,是由攻速决定的。N与攻速的关系是怎样的呢?在前面我的错误设想里有提到过,我认为跳数=攻速*9,实际上这个想法在理论上是正确的,或者可以说是设计师的本意。我们还刚推出了,跳数=180/N,于是180/N=攻速*9,N=20/攻速。造成我的想法产生偏差的原因,是因为F已经是最小时间单位,无法再分割,于是N必须是整数,当用某个攻速比如2.1,代进去得到的N不是整数,20/2.1=9.524。然后用一个不是整数的N去计算跳数,自然也就得不出正确的跳数,因为实际上不存在9.524F,要么9F,要么10F。

当在指定攻速下算出来的N不是整数时,N会向下取整。道理是这样的:比如2.0攻速时N=10,当你的攻速比2.0快一些的时候,必须快到足以使N 变成下一个整数才有用,否则没变化。下个整数是9,对应的攻速是20/9=2.22222,如果你的攻速比2.0高,比如2.1,但每达到2.2222,那小旋风每跳的时间消耗就降不到9F,还是10F。2.1时每跳的帧数就是用20/2.1=9.52,向下取整变成9得到的,跳数就是用180/=20得到的,这就是这张表的产生方式。

掌握了这个原理后,即使找不到这个表格,我们也能自己算出各个攻速临界点,这些临界点就是使20/攻速等于整数的点。对应的攻速和跳数分别为:

帧数   攻速         跳数

5     20/5=4.00    180/5=36

6     20/6=3.33    180/6=30

7     20/7=3.86    180/7=26

.......

15    20/15=1.33   180/15=12

.....

等等,依次可以自己计算,我就不贴全表了,需要的可以去原帖查阅,我觉得自己学会算更好,可以帮助理解,或者发现一些错误,比如前面贴的那一段表中最后一行的30跳就有问题,不是2.98035,应该是3.3333。 运用前面的知识,要30跳,意味着N=180/30=6,即小旋风每跳的时间是6F。N=6时的攻速节点应该是20/6=3.3333.N=7时的节点是 20/7=2.857,所以最后一行应该是2.857-3.333,在国外的原帖中,这已经修改了。

这并不是小旋风的特例,很多一次攻击被分成若干次来判定的技能都是这个原理,比如DH的连射等。

关于冲刺小旋风跳数与攻速的关系就说到这里这部分不是重点,我讲这些主要是为了通过这个大家都比较熟悉的东西引出Frame(F)这个概念,然后再看看这种原理是否对其他更多的技能有效。

四 关于Frame

D3中最小的时间单位称为一个Frame(帧,F),一秒=60F,1F=1/60秒,F不可分割。

先说一下他与我们平时说的帧数的区别。不管你的CPU,显卡等等性能如何,游戏总是固定的每秒生成60F。他与我们平时说的玩XX游戏多少帧比如在游戏里按CTRL看到的数字(我称他f,或者fps)不是一个概念,F是游戏生成的次数,f是显卡捕捉到的次数。F是恒定的,只要是玩D3就是一秒 60F,不会变;f是变化的,他取决于电脑性能。我们平时只能通过显示器来看游戏,所以在感官上我们只认识f,但真正在背后决定游戏运行方式,动作长短的,是F.

打个比方,F是一个隐形人在跳绳,稳定的一分钟跳60下,f是拿着一个能拍到隐形人的相机在对他拍照,我们看不到隐形人但能看到照片。相机可以拍的快或慢,f的数值也就可以变化,可以一分钟拍120张,也可以一分钟拍15张,但不管拍到几张,这个隐形人实际总是每分钟在跳60下这与相机是无关的。F 是固定的。f高,只是不会错过他的某一跳,f低,比如只有15,就会漏掉很多跳没拍到,这样看上去动作就不连贯,就是所谓的卡。

本文中一直会说到的1F,代表的不是一个画面,代表的是1/60秒的时间,他是一个时间计量单位。比如我说一下猛击8帧,意思不是他需要8个画面,意思是他需要8*1/60秒的时间。

我在这里引入了Frame这个概念,其实他对一个D2老玩家来说并不新鲜,这个系统不是在D3开始的,在D2时就有了,并且是大多数D2玩家所熟知的,因为当时所有的配装核心就是围绕F。这里顺便多说一些D2中的Frame,因为我不确定D3中是怎样,但很确定D2里是怎样,通过描述他在D2中的运作方式看看这套机制是否能搬到D3中。

D2的1秒是由25个F构成,1F=1/25秒。他的工作方式是这样的:一个动作固定会占用一定的时间,这断时间必须是F的整数倍。动作会有很多种,比如攻击,施法,格挡,硬直,都是不同种类的动作。会有专门的属性来加快动作的频率,缩短每次动作的时间,比如快速攻击(IAS),快速施法(FCR),快速格挡(FBR),快速打击恢复(FHR)等等。可惜的是,在D3中,这套系统已经被极度简化了,施法和攻击合并了,格挡不需要时间不是动作了,硬直被取消了。只剩攻击这一个动作和攻速这一个属性。(这些东西可以参考凯恩百科中breakpoint这个词条)

动作之间是一个序列的关系,不能同时做几个动作,必须做完一个再做下一个。想在单位时间内做更多动作,唯一的办法就是缩短每次动作的时间。动作的时间缩短是跳跃的,只能从N*F变成(N-1)F,没有中间量,这也就决定了用来改变动作时间的属性比如IAS,FCR这些,也只能是跳跃的,要使一个动作减少1F,必须堆积一定量的属性,不够量,则无效。

在D2中,由于没有面板攻速可以看,所以人们谈论速度问题时,更多的是直接说F,"你的亚马逊攻速是多少? " "10F"。这在当时的交流中是非常常见的,没有人会说X.XX。10F这代表射一箭,从抬手到射出去,到手放下来这个完整动作,需要10个F的时间,D2中一秒是25F,那一秒就可以射25/10=2.5箭,相当于现在的2.5攻速。如果你想提高攻击频率,可以增加IAS属性的数值,使他达到 9F。不同的武器需要的数值不一样,比如九头蛇弓(风之力),基础攻速是15F,要达到10F需要60ias,9F需要90ias,如果你现在是 60ias 10F,要提高到9F需要再堆30ias,如果达不到90。那么75也好,80也好,都没用的,和60完全一样,还是10F。

D2是这样,我现在关心的是D3是否也这样,前面我们已经通过小旋风攻速跳数对应关系表说明了Frame机制在D3中是存在的,至少对小旋风这个技能是适用的,那么接下去要看看这个机制是否对其他技能全面适用,比如猛击,因为猛击适用的话,那么可以想象很多技能,先祖啊甚么的,应该就都适用。

五 提出假想

我先假设猛击也和D2中的一次攻击一样,他从抬手到伤害判定,到手放下来这一个周期我称他为一个动作,在引入Frame的概念后,动作周期我不再用秒来表述,全都用F,因为F是最小单位不可分割,所以一个动作的长度必须是整数个F。

假设一次猛击需要60F,一秒有60F的时间,意味着一秒可以打60/60=1下,即攻速=1.0

假设一次猛击需要30F,一秒可以打60/30=2下,即攻速=2.0

以此类推,我们可以得出,当单次猛击耗时等于不同的F时,需要的对应攻速是多少。做出一张单次猛击攻击动作时间,与攻速的对应表:

帧数 攻速 1分钟攻击次数 帧数 攻速 1分钟攻击次数
60 1.000 60.00 30 2.000 120.00
59 1.017 61.02 29 2.069 124.14
58 1.034 62.07 28 2.143 128.57
57 1.053 63.16 27 2.222 133.33
56 1.071 64.29 26 2.308 138.46
55 1.091 65.45 25 2.400 144.00
54 1.111 66.67 24 2.500 150.00
53 1.132 67.92 23 2.609 156.52
52 1.154 69.23 22 2.727 163.64
51 1.176 70.59 21 2.857 171.43
50 1.200 72.00 20 3.000 180.00
49 1.224 73.47 19 3.158 189.47
48 1.250 75.00 18 3.333 200.00
47 1.277 76.60 17 3.529 211.76
46 1.304 78.26 16 3.750 225.00
45 1.333 80.00 15 4.000 240.00
44 1.364 81.82 14 4.286 257.14
43 1.395 83.72 13 4.615 276.92
42 1.429 85.71 12 5.000 300.00
41 1.463 87.80 11 5.455 327.27
40 1.500 90.00 10 6.000 360.00
39 1.538 92.31 9 6.667 400.00
38 1.579 94.74 8 7.500 450.00
37 1.622 97.30 7 8.571 514.29
36 1.667 100.00 6 10.000 600.00
35 1.714 102.86 5 12.000 720.00
34 1.765 105.88 4 15.000 900.00
33 1.818 109.09 3 20.000 1200.00
32 1.875 112.50 2 30.000 1800.00
31 1.935 116.13 1 60.000 3600.00

这个表是有偏差的,后文会再修正,不用在意他的具体数值是否精确,我们主要是看他的规律。我的假想是,直接决定单位时间内攻击次数的,是每次猛击的帧数,先借用这张不太准确的表里的数据打比方。

1分钟有3600F,如果一次猛击NF,攻击次数就=3600/N。比如一次猛击的时间是31F,那1分钟就打出116下,想再快一点,猛击的耗时只能从31F降到30F,那就打出120下,不管我们怎么微调攻速,打不出118下,就像小旋风不会有19跳一样。 虽然我们可以搭配出很多很多种攻速,100个蛮子有100种攻速,但他们站着打10分钟,打出的攻击次数只会有60种。

我们通常认为直接决定单位时间攻击次数的就是攻速,两者是联动的,攻速*时间就是次数。但在这个假设中,不是这样。攻速不是直接决定攻击次数,根据这个表,如果攻速从1.90提高到1.92,只要不超过1.935,每次猛击还是32F,每分钟还是112.5下,没有变化,多0.02的攻速不会使你在 60秒内多打1.2下。 攻速直接影响的是每次猛击的耗时,攻速的改变必须达到一定的量,超过某个具体数值,使得每次猛击的帧数发生了变化,单位时间的攻击次数才会发生变化。我称这些需要达到的具体数值为断点,或者阀值。

这就能解释第一个对比测试中,先加2%攻速多了27次,再加2%攻速完全无变化这个现象了。因为第一个2%攻速正好使得攻速越过了断点,1次猛击的帧数减少了1F,而第二个2%攻速的提升没有越过断点,帧数没有改变,攻击次数就不会有改变,不管是打5分钟还是10分钟,平均每分钟的攻击次数都不会有变化。

如果这个假设是成立的,那么我们平时选择装备时,在考虑要不要花钱去多买1% 2% 3%攻速时,就需要考虑下这个提升能不能使你的攻速越过断点,如果越不过,就没任何变化,这个钱就是白花的。如果能越过断点,那么这个提升就是有意义的,有价值的。

六 更多测试数据

为了验证这个假设,单靠一组对比测试是不够的,我还做了一些测试。

攻速 伤害 暴击 非暴击 1分总次数
1.710 115940 10 95 105
1.740 120156 10 99 109
1.770 119629 11 97 108





1.980 227580 8 116 124
2.010 234957 14 110 124
2.040 238293 11 117 128





2.862 563609 12 167 179
2.898 567820 14 165 179
2.934 548870 5 174 179










3.024 621117 18 168 186
3.060 610830 15 171 186
3.096 603972 13 173 186










2.250 1564991 79 609 688/5=137.4
2.280 1620366 78 637 715/5=143
2.310 1555532 34 681 715/5=143

蓝色攻速的这些都是新做的,2.2X那组是前面已经贴过的,放一起,方便看看数值。如果想验证准确性点攻速可以下载测试视频。为了降低一些测试量(5分钟的话从录,到截,到数,一条数据需要大概20分钟时间,太久了),每条数据我都只测了1分钟。 测试方法还是一样的,按住鼠标猛击打罪恶之心。每个视频的开头我会开一下面板,可以看到我的攻速和爆伤,暴击的数值会在屏幕上直接显示,非暴击的数值可以根据爆伤算出来,然后根据结束时目标的血量和数出来的暴击次数,算出非暴击次数,相加得到总次数。 误差前面说过,最多不会超过1次。

每3条数据为一组,每一组里,我穿的装备,除了左戒,其他都一样,通过替换左戒,来得到3个临近的攻速,左戒就是前面贴过的3个,攻速分别为5 7 9,他们附带的最小值都一样,都不带力量和爆伤,所以在同一组测试里,换左戒不会影响打出来的数字大小。

通过这些测试的结果,主要看到两个现象:

1)这些实测出来的攻击次数,在我前面推导出来的帧数-攻速-攻击次数表里都有出现,至少是近似值,105 109(108可能是误差) 124 128 179,137 143 都有近似值。186差的比较多,这个后面再说。这些攻速是我随便取的,穿一件暮光,得到一组,再穿一个巫异,得到一组,主手匕首1.5换成1.8的,再得到一组,这样得到的,不是根据表刻意凑的。所以得到的这些实测值与推测值很近似,这应该不是个巧合。

2)每组3条数据,都是差2%攻速,每多2%攻速,可能会改变攻击次数,也可能完全没变化。

这两个现象说明,我的假设基本可以认为是成立的:Frame这个机制在D3中确实存在,不光是作用在冲刺尾气上,对猛击这样的普通攻击技能也有效。攻速的提升需要达到一定量变,才会引发单次动作帧数的改变,从而引发单位时间攻击次数的改变,这一条通过这些数据应该可以得到确认了。

相关阅读:暗黑3