暗黑3野蛮人攻速讨论:Thinking In IAS
新闻导语
我所说的很多东西,都是基于假设,测试结果接近也不能说明他就一定是对的,未必可靠,只有官方说的才可靠。
三 从小旋风跳数说起
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
- (2024-11-29) 暗黑3 巫医圣教军高层秘境打法教学分享
- (2024-11-28) 暗黑3 野蛮人毕业装备及装备属性选择
- (2024-11-27) 暗黑3 野蛮人物理嘲讽流大秘境装备技能搭配
- (2024-11-26) 暗黑3 圣教军格挡值收益分析 格挡几率多少合适
- (2024-11-25) 暗黑3 古董之家位置 古董之家在哪刷