精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>热门游戏>>暗黑破坏神>>暗黑资料>>暗黑算法>>武器速度的简化计算公式,结论,测试.

主题:武器速度的简化计算公式,结论,测试.
发信人: seaeye()
整理人: yufif(2002-12-13 09:32:15), 站内信件
结论:
1 + xx% attack speed的数值越高,实际效果的提高就越不明显
  就象MF%的递减规律一样.
2 利用武器本身的速度修正更容易达到高攻击速度
3 + xx% attack speed(也就是通常说的IAS)没有上限.
  不过 IAS - 武器修正 + FAN光环 的总加速上限S%为75%
4 武器的极限速度由武器的Base Frame决定.
5 D2X中武器的普通攻击(Normal Attack)速度之王是:拿标枪的Amazon 
 极限速度为:每分钟214次攻击,3.57次/秒
6 D2X中武器的极限攻击速度之王是:扫射中的Amazon 
 极限速度为:每分钟750次攻击,12.5箭/秒
7 拿弓的Amazon,普通射击
 极限速度为:每分钟188次攻击,3.13箭/秒
8 中了减速咒语,HolyFreezy,冰伤害之后
  任你怎么修改IAS也不可能达到极限速度的!
  因为1亿的IAS,转换为S%只有119%
  只要对方降低你 44%以上的速度,你就不可能达到75%上限
  除非靠FAN光环或者武器的速度修正(-60的Chu-Ko-Lu)

****************************************************
*** 总加速上限S%的化简公式如下:
               120 
S% = xx%  * --------- - Weapon Speed + FAN光环 ...(无条件去掉小数部分)
            120 + xx
上限为75%, xx为所有+ xx% attack speed的装备总和.

武器攻击的Frames简化计算公式如下:
7 Frames =  Base / (1+S%) ...(无条件去掉小数部分)
Base为不同角色不同武器类型的基本Frame数值,数值表在后面附上.
每秒攻击次数等于:25 / Frames 

如果没有IAS装备,武器速度修正为0 (施放魔法的原始条件也是如此)
则每秒攻击次数等于: 25 / (Base - 1)
实际上有IAS,和武器速度修正不为0的时候
只需要算出IAS的实际加成,减去武器速度修正,就得到S%了
然后就可以计算 Frames和每秒攻击次数了.

****************************************************
以下是根据化简后的公式,预测和测试了PAL的弓弩射击速度
因为弓箭最容易数数了.
结果证明:公式完全正确......(存在按鼠标的误差 ^_^)

*** 圣骑士的弓弩射击测试数据
PAL的弩BASE=20
预测值                0% 20% 75% 200% 295% 415% 460% +FAN

0速度的Siege-CrossBow 79     115  136            136  136
+10速度Ballist        68     107       136       136  136
-60速度C-K-N         125 136                     136
-10速度的HuntersBow                              167
PAL的BowBase=16

圣骑士的弩射击测试
PAL的弩BASE=20
实测值                0% 20% 75% 200% 295% 415% 460% +FAN

0速度的Siege-CrossBow 79     116  137            137  137
+10速度Ballist        68     107       137       137  137
-60速度C-K-N         125 137                     137
-10速度的HuntersBow                              164
PAL的BowBase=16

*** 以下是公式的化简过程 ***
先送上精华区里的原文
本文转载自http://blizzard.myrice.com/vb/,很好的一片技术文章。在这里要和大家稍微解释一下的是speed incease的上限75%,跟武器的的base speed的关系:就是每种武器都能在自己的base frame基础上提升75%的速度. 
首先,每个动作帧数的计算公式和以前一样,  
Frames = {256*(Base + 1)/[(100 + Speed Increase)/100*256]} - 1  
(frame/25就是每个动作所需的时间)  
但是,和以前不同的是,speed incease不再是像以前一样把各种装备的ias简单的加起来,现在只有武器的base speed modifier(这是指武器本身的速度,不包括武器的ias属性和镶嵌的rune的效果)和fan光环的作用可以简单的叠加起来,总的加速效果如下:  
speed incease=[weapon base speed modifier+fan+(ias/(1+ias/120))]  
上面的公式中,[x]是去尾算法
speed incease的上限也是75%,fcr的效果类似的:  
Speed Increase = [Cast Speed Bonus/(1 + Cast Speed Bonus/120)]  
上面的公式中,{x}是进1算法.  
每秒攻击次数等于 25/Frames

*** 我的简便计算 ***
化简过程
先化简 S%的计算公式
S% = [ias/(1+ias/120)] - Weapon Speed + Fan光环 ......去掉小数部分
S% 的上限是75%.
后面的Weapon Speed和FAN光环无需化简
而前部化简为  
          120
ias * -----------  
       120 + ias 
也就是 +xx attack speed的装备,实际效果只有xx的百分之几
xx越高,这个百分率越低.
例如:
+10% attack speed的手套,最后实际的速度加成是
10% * 120 / (120 + 10) = 9%

+20% attack speed的手套,最后实际的速度加成是
20% * 120 / (120 + 20) = 17%

+40% attack speed的手套,最后实际的速度加成是
40% * 120 / (120 + 40)= 30%

任何角色要达到最慢武器(Weapon Speed=20)的理论最高速度
必须有+ 460% attack speed 的装备!
460% * 120 / (120 + 460) = 95%
S% = 95% - 20% = 75% 速度加成

要达到0速度修正武器(Weapon Speed=0)的理论最高速度
必须有+ 200% attack speed 的装备!
200% * 120 / (120 + 200) = 75%
S% = 75% - 0% = 75% 速度加成
可见武器本身的速度修正比有损耗的 +xx% speed 更好.

*** 然后化简Frame计算公式 ***
1 原公式中的256是互相消去的,根本没有存在的意义!
原公式变为
Frames = { (Base + 1) / [ (100 + Speed Increase) / 100 ] } - 1  

2 (100 + Speed Increase)/100部分可以化简为
  (1 + S%) S%为速度修正.这样就好看多了.
原公式变为
Frames = { (Base + 1) / (1 + S%) } - 1  

3 把武器的Base速度数据全部+1,公式中的Base+1就可以化简为 Base
原公式变为
Frames = { Base / ( 1 + S% ) } - 1  

4 公式的{}括号是小数部分进1,而进1后,结果又-1 
  这两步可以化简为小数部分无条件去掉,最后不-1
  于是原公式变为
  Frames =  Base / ( 1 + S% ) (小数位无条件去掉)

  这个做法在 Base / ( 1 + S% ) 结果没有小数位的时候有+1的误差
  可是从Base =13-24, S% = -20% - 75%的范围计算所有1152个结果
  只有35个计算结果没有小数位.
  (-20%是武器的最低速度修正,75%是加速上限)
 也就是只有3%的结果会出现没有小数位导致误差 +1 Frame.
  对最终攻击速度的误差范围是 -3.22% 至 -8.33% 
 最大误差值只出现了三次,分别在
 Base = 15 S%=25% 
 Base = 18 S%=50% 
 Base = 21 S%=75% 
  还要一提的是,如果根本没有任何IAS装备,拿着0速度修正的武器
  没有任何技能的加速.
  那么这个化简公式的计算结果是一定出现 +1 Frame 误差的.
  
而最终的每秒攻击次数等于:
25 / Frames = 25 / ( Base / (1+S%) )


*** 武器基础速度 ***
分8大类,不同角色使用这8类武器的Base速度如下: 
(以下的Base速度,已经是根据化简公式+1的了)
One-handed weapons 
Amazon: 14 
Barbarian: 16 
Necromancer: 19 
Paladin: 15 
Sorceress: 18 
这一类包括:one-handed Axes、 one-handed Maces、Wands、 one-handed  
Swords,Throwing Axes进行普通攻击时也算在这一类. 

Two-handed swords 
Amazon: 18 
Barbarian: 18 
Necromancer: 23 
Paladin: 18 or 19 (PAL使用双手剑时有两种不同的动画)
Sorceress: 22 
这一类只包括所有的双手剑 

One-handed thrusting weapons 
Amazon: 13 
Barbarian: 16 
Necromancer: 19 
Paladin: 17 
Sorceress: 17 
这一类包括:Daggers, 进行普通攻击时的Javelins和Throwing Knives。 

Two-handed thrusting weapons 
Amazon: 16 
Barbarian: 19 
Necromancer: 24 
Paladin: 20 
Sorceress: 21 
这一类包括spear系武器。 

Staves and other two-handed weapons 
Amazon: 18 
Barbarian: 19 
Necromancer: 20 
Paladin: 18 
Sorceress: 16 
这一类包括:two-handed Axes, two-handed Maces (Mauls), Polearm, Staves. 

Bows 
Amazon: 14 
Barbarian: 15 
Necromancer: 18 
Paladin: 16 
Sorceress: 17 
这一类包括所有的弓 

Crossbows 
Amazon: 20 
Barbarian: 20 
Necromancer: 20 
Paladin: 20 
Sorceress: 20 
这一类包括所有的弩 

Throwing weapons 
Amazon: 16 
Barbarian: 16 
Necromancer: 20 
Paladin: 16 
Sorceress: 20 
这一类包括所有的投掷武器 

几个特例:
对于zeal,Straft公式的小数部分不是去掉,而是向上+1: 
Frames = Base / (1 + S%) (有小数就+1)
对于strafe,用BOW的时候Base取4,用CORSSBOW的时候Base取6。 
对于zeal,Base取7。 
另外,在使用这些特殊攻击时第一下攻击的时间是按普通攻击计算的!

附:
IAS转换为实际的S%的转换表
5 4%
10 9%
15 13%
20 17%
25 20%
30 24%
35 27%
40 30%
45 32%
50 35%
55 37%
60 40%
65 42%
70 44%
75 46%
80 48%
85 49%
90 51%
95 53%
100 54%
105 56%
110 57%
115 58%
120 60%
125 61%
130 62%
135 63%
140 64%
145 65%
150 66%
155 67%
160 68%
165 69%
170 70%
175 71%
180 72%
185 72%
190 73%
195 74%
200 75%
205 75%
210 76%
215 77%
220 77%
225 78%
230 78%
235 79%
240 80%
245 80%
250 81%
255 81%
260 82%
265 82%
270 83%
275 83%
280 84%
285 84%
290 84%
295 85%
300 85%
305 86%
310 86%
315 86%
320 87%
325 87%
330 88%
335 88%
340 88%
345 89%
350 89%
355 89%
360 90%
365 90%
370 90%
375 90%
380 91%
385 91%
390 91%
395 92%
400 92%
405 92%
410 92%
415 93%
420 93%
425 93%
430 93%
435 94%
440 94%
445 94%
450 94%
455 94%
460 95%
465 95%
470 95%
475 95%

[关闭][返回]