|
|
Animation Frame
; t9 X8 P/ \1 _# W4 u" B—Dtalon Fpa Specific1 R, c" [. E9 P& z+ D0 X$ s% i+ @
动作帧数—Dtalon详解% X/ G1 {+ Z+ G/ ]( A
l* H/ y: t" h+ O
BY Louis-J# `2 ~. Z3 a, Y; u1 V/ t
2 ~ y7 L Y, W/ I: [9 l: W) V, r% j1 w8 |/ Q/ q7 B7 G _" o
感谢:- z8 [9 n% O: j
jrichard 对Fpa原理和Dtalon攻击特性的详尽论述,本贴许多资料和理论来自他
9 q0 O0 J/ R; DBrianc84 对C/C WSM公式的计算推导及提出Dtalon的极限为7/3/3/3……而非7/2/2/2……
" F3 e$ k: n. E; |3 URuvanal 提出Rollback概念及对其的精彩论述
6 }( s- f" U9 K, {% g4 K0 O- x" C, X+ r& o: L
写这个帖子前后花费了4天的时间,期间查阅论证了许多资料数据并做了多次测试。本帖虽然主要是说Dtalon这个技能的攻击帧数,但其实是对D2所有动作运行帧数的一个剖析。
7 \" B% }4 E7 |, t3 l" {+ c V由于我个人对D2这个游戏的认识有效,难免有错误纰漏的地方,请LRs多多指正。
* e) m8 @7 ~; i6 S @7 t- b% C5 }0 z% O0 I, R( t9 T6 B: `! L1 s- S
' Z# O* y5 k5 z: ^# w( y) |. n
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
7 L4 i5 \) J# `/ l3 Y4 Z- ]完成一个动作所需的帧数公式% N' P2 Y: C0 }( S0 h- v1 o! D
Frames Per Attack={HitShift*(FramePerDirection) / [AnimationSpeed*(BaseRate+SpeedIncrease)/100]}-1
P! I1 Q; X+ x5 M1 Z# h9 `/ }4 A# }2 D1 `. x4 F. d
6 m: X3 Z: R. s' x b, ?
Fpa=Frames Per Attack 每次攻击帧数
5 |% G% S4 a$ YHitShift=256
6 @( I' R/ ~( rFramePerDirection 动作长度
) O9 F8 F/ \- }5 ~AnimationSpeed 动作速度
: J8 b8 e- V6 a2 @3 L& x8 q6 T+ [" xBaseRate 基础效率
$ i, ]+ d( \9 ZSI=SpeedIncrease=Skill EIAS-100*Slow%-WSM+EIAS - ~. L' q, z+ l* z, a$ Q; q
SpeedIncrease 速度增量
0 m( K+ b2 D+ j9 a1 P1 XSkill EIAS 技能提供的EIAS:包括Asn的BoS(速度爆发),Pal的Fanaticism(狂热光环)3 P' l( w4 Q3 m q2 p
Slow% 减速效果:包括Slows Target(使目标减速),Clay Golem(土魔),Freeze(各种冰冻效果),Slow Missiles(缓慢攻击),Decrepify(衰老)等等。
2 _/ l1 U! T7 Q5 H0 ]% ^8 tWSM=Weapon Speed MODifier 武器基础速度
: p. H: u# h+ V2 s( u+ ?( c: P fEIAS=Effective Increase Attack Speed = [120*IAS/(120+IAS)] 有效IAS/ E" x+ |2 F: D) g( R
IAS=Increased Attack Speed=(120*EIAS)/(120-EIAS) 装备提速属性之和4 R# ~+ w6 S; m. v5 s# a
{ } 向上取整6 x* O, p- K* b
[ ] 向下取整' m% p; B, C+ Y* w9 C
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
' [9 b. k4 r% k0 u k
) E9 v |+ M L% Z9 }% B v% \- }4 i3 g- x, { O8 t2 N
8 c+ g n4 O7 y: Y, N- P※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※% ^) n$ l6 C; F) u/ x- L0 W8 g
Animation:动作6 T1 t, R$ }. R8 v9 Y
Animation types:动作类型+ n3 b4 a; y0 I; T
Weapon types:武器类型" i' q9 q7 W( s
FramePerDirection:动作长度& |9 N8 a# l' V! w0 B9 [
AnimationSpeed:动作速度
4 D R1 t0 J& W% j: H) z
+ X: k, |7 y7 K3 q; N* M/ i A
1 V+ o$ s9 M, [& T在游戏中,无论角色什么时候做什么动作,包括走、跑、格挡、攻击,甚至站立不动,游戏都会有记录。在这个过程中,首先游戏确定其为什么动作,这取决于角色使用何种动作类型和武器类型;确定后,游戏就会运做这个动作直到下一个动作;再确定下一个为什么动作,运做这个动作到再下一个动作,周而复始。
- _; r9 C0 Z5 J! j2 c& D. S
: |8 Q0 Y' J* W" @7 c) s, P与动作相关的参量是动作长度和动作速度。大多数动作的动作速度是256,但也不全是。" J0 k; @0 C3 N& G
动作类型不同,动作长度和动作速度也会不同。+ F( E+ g8 c2 Y8 f
同一种动作类型,武器类型不同,动作长度和动作速度也会不同;至于Asn的踢击技能,用的都是鞋子-o-(确切的说不划分在武器类型之内),所以踢击技能的动作长度和动作速度都是一样的;一些动作类型的动作长度和动作速度不受武器类型的影响,比如打击恢复、施法动作,但还是受角色类型的影响(最直观的例子就是Nec的Human形态和Vampire形态其施法动作的速度就不同)。) u) }& s- g4 b4 Y
当然,如果角色类型不同,即使动作类型和武器类型都相同,其动作长度也可能会有差异,比如Asn/Pal、Ama、Sor、Dru/Nec、Bar使用1HS的武器类型做Zeal的攻击,其动作长度就各不相同。
" S- C$ Q' v* W( u1 L, H(说的有些拗口,希望大家能听懂-o-)
# M* o& x" O$ s8 p, }1 G& q) [8 ^* g" I% {: d
' }1 c" @. m6 @
0 V$ I+ z$ A2 u$ y) TAnimation types:动作类型 0 e ^& D6 m) h5 I3 I4 _( S
(From PlrMode.txt)
g# P: ?( a2 h( G2 Z9 j. N3 iA1 – Attack 1
& W" k- r4 G5 C6 J* z( m6 IA2 – Attack 2; k+ {5 Q& T8 `3 H* ?& f6 {
BL – Blocking
8 Y- g j2 f iDD - Death * e q& g0 ~7 s) I, [. F$ j
DT – Death Throe
T% M3 b0 x9 d. \, UGH – Get hit(hit recovery)
' W5 I/ t, L6 B" O) k9 ^4 O. |+ aKK - Kick
2 x' Z+ H" \. g0 p2 l# y- hNU – Neutral(outside of town) o5 C6 ~% O. t5 S% Z8 e3 m
RN - Run
* ]& Y P% y8 E' y- oS1 – Skill 1# W9 `! d7 ]% {6 V) @ f' U( m4 i
S2 – Skill 2
4 V) X2 P; j4 R" E. fS3 – Skill 3
5 u# k7 t! P- `$ e: eS4 – Skill 4
% _% Z5 i) A+ q, @* F. vSC – Spell casting
% M! y |9 B" {) c- R9 K( WTH – Get Hit(in town)5 I5 j( I' v" n ^1 \) v2 e* [
TN – Neutral(in town)# m6 ]: Y! l, B4 d& ~# E g
TW – Walk(in town)' w3 v" H8 L( ~" q
WL – Walk(outside of town)/ b+ C2 V5 C# h! o- f" T
/ F w* _- ^! J1 CWeapon types:武器类型' y/ U' n: ?1 M5 [& M
(From Weapons.txt)
5 }, z. Y( i: c* e2 T; b9 Q4 Y# G) w1HS - One Handed Swinging (axes, swords, flails, maces, hammers, clubs and wands)5 u9 G, Q3 S: s+ M \3 m Z
1HT - One Handed Thrusting/Throwing* (Daggers, javelins, potions)' K. g! A' E2 ^9 P
2HS - Two Handed Swords (swords)
; l: w. T; K& q/ p" f4 s' @* }2HT - Two Handed Thrusting (All Spear class weapons)
# X- D0 i/ @. \. VBOW – Bows (All Bow class weapons)3 p: z! p/ J- ]
HT1 - Single wielded katars (Katar, Claw, Scissors type assassin class weapons)! r2 V% Y6 M7 s
HT2 - Dual wielded katars (Katar, claw, scissors type assassin class weapons) V+ T, ~7 O. [( {+ z4 E# W. }" t
HTH - Hand to Hand (Bare fists)3 }6 J2 G5 a2 s. [( x) Y2 p4 [) P
STF - Two handed Swinging (Staves, polearms, axes, mauls)5 u$ E3 O4 Q/ U8 i7 f) K
XBW – Crossbows (All Crossbow class weapons)
( E( ~! @, p3 C# Y*注:throwing axes不属于1HT(One Handed Throwing)类型, 而属于1HS(one handed swinging)类型。. V. v: ]6 z' j6 _" L$ }
c% w5 v( K- T1 Y: I' t
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
* c* n$ z4 k: B6 g3 |- L( N, |
7 L/ H+ b7 }+ p9 w7 x( M( ^% k; x& D3 V1 ?$ g$ k
5 A+ ^3 W" n) J( O9 ?( e" m※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※' V5 o7 m5 r0 Q
BaseRate:基础效率* j7 I( t" c+ H' A
SpeedIncrease:速度增量
?) d O+ r* _Skill EIAS:技能提供的EIAS . p" y8 r" D1 U$ t
WSM:武器基础速度
2 I7 E# N. V+ k8 P4 H8 y3 i/ VEIAS:有效IAS
3 n B$ f, P# A4 `IAS:装备提速属性之和
. M/ R& P( z! V' Q/ w, L9 t# ^. J9 V# Y9 p7 {
+ s- T. b2 @! T$ D J" C* ^. f
0 F3 Y" P0 a# D, x0 u/ q* V- b
BaseRate:基础效率
! z, T0 \* z" }, l; W9 t) T- wBaseRate只取决于角色使用何种动作类型,不受装备的影响,大多数的BaseRate为100。Asn的所有BaseRate除了格挡和打击恢复为50及一些顺序攻击如(FoF/CoT/BoI/DC 为70,其实是个攻击速度惩罚-30,即100-30=70);DTail为60(攻击速度惩罚为-40,即100-40=60);其他都是100 。7 \. s0 U! b: ]
; q1 e6 l- l0 M0 c! j
3 ?% L" r: ^2 o8 V5 m' D, ]8 x
(BaseRate+SpeedIncrease)/ ]. p+ o9 A4 `, J- b l$ q
上限为175,这也是为什么攻击动作有急速封顶Fpa的原因。
. J) z# a E& r" o: O5 p7 ^+ K关于下限,由于角色攻击时基本不考虑减速效果,则SpeedIncrease=Skill EIAS-WSM+EIAS=0-30+0=-30(武器的最慢WSM为30,关于C/C 的WSM在下面论述)。所以SI的下限为-30,所以基本上(BaseRate+SpeedIncrease)下限为100-30=70。. y7 g. y& K; _' f
如果考虑减速效果,则(BaseRate+SpeedIncrease)=BaseRate+Skill EIAS-100*Slow%-WSM+EIAS,很显然能达到0甚至是负数的下限,但是当(BaseRate+SpeedIncrease) < BaseRate*15%,(BaseRate+SpeedIncrease)=BaseRate*15%,则基本上(BaseRate+SpeedIncrease)下限为100*15%=15。
8 h, q6 J! D' B. D
9 s/ N+ f0 b0 M0 _4 A1 e: f& H3 j8 a4 }& j
SI=SpeedIncrease:速度增量
0 h4 a+ M4 }5 o=Skill EIAS-100*Slow%-WSM+EIAS3 f4 m* |, i! _% K7 S! [
比如9级的BOS(Attack Speed +44),20%的减速效果,WSM=-10,EIAS=206 {# {" m4 V" r/ B! U
则SI=44-100*20%-(-10)+20=542 @' n1 f' u$ X6 O- W
n: n3 B8 Z* m1 N5 ~
9 i; w6 t' h$ b+ g7 z7 W. l9 MSkill EIAS:技能提供的EIAS7 l& j9 r( g0 M5 r
Skill EIAS = ((110*lvl) * (b-a))/(100 * (lvl+6)) + a- T- K8 N) |, z0 x# I' `
b=60,a=15(BoS速度爆发),
1 A7 m# ?% d* U3 u4 h- \. gb=40,a=10(Fanaticism狂热光环)
- ?5 N' k) g' b, L8 q$ y3 ^9 L5 K(from skillcalc.txt and skills.txt)2 b: s( g1 _6 k8 [- p0 [, }
这个公式算出的EIAS和游戏中我们看到的数值个别级别有些出入,比如1级的BOS(Attack Speed +21),但用这个公式的话6 B! p# D' P0 R1 o0 q1 K$ I& [
Skill EIAS = ((110*lvl) * (b-a))/(100 * (lvl+6)) + a/ S. r" |4 Z3 o( I0 U3 o% l
SLVL 1 BOS EIAS=((110*1) * (60-15))/(100 * (1+6)) + 15=110*45 / 100*7 + (15)=22" N$ ~3 F6 P8 c2 k4 d( w
% e$ {4 \ A" v& _7 E& K
其实稍微懂些java方面的语言就很好理解了
& l/ ^# K& `' a6 wjavascript:( K% V* ^( U/ u: I6 ]6 l
function dm(l,a,b){
! ^. e/ _/ y9 f3 B9 o6 `9 lreturn a+dec((b-a)*dec(110*l/(l+6),0)/100,0); Q O; _3 w+ u6 x
}
3 J+ X" N. o! m; a! t( }1 T其中a,b即相当于上面公式中的a,b;l 即相当于上面公式中的技能等级 Skill Lvl。, N9 I' R( n$ I) c/ X: g
没学过也不要紧,看下面这个公式吧
: e5 m, A6 H. Z) U; H# oIF LEVEL>0
' D* Z- _$ |6 J6 _) DSkill EIAS = a + ROUNDDOWN( (b-a)*ROUNDDOWN( 110*LEVEL / (LEVEL+6) ) /100) 2 j6 _6 i- M5 [' J# w" e) V
b=60,a=15,Level=1代入8 }7 c! ^: j. |: o+ H9 d; j+ l6 \
=15 + ROUNDDOWN( 45*ROUNDDOWN(110*1/7) /100)% g2 k, ]5 u9 T5 }; o
=15 + ROUNDDOWN( 45*ROUNDDOWN(15.xxx) /100)
8 }) U1 w: K7 Z4 A8 v1 ]=15 + ROUNDDOWN(45*15/100)0 }8 x0 I7 D. O
=15 + ROUNDDOWN(45*15/100)! Y }3 m5 w. y3 A: J# h: A% m
=15 + ROUNDDOWN(6.75)# {3 J+ |% k: `; o4 |" A# A% i
=15 + 6# t" ?) _- v& b6 B/ u
=21
$ \/ Q: c6 `$ O. ^* V' o搞定。! q3 Y. \! ^ @7 k g- y
(Skill EIAS只要看游戏中直接显示的数值就可以了,这个公式有兴趣的当消遣看吧- - !)( |2 D% P) l& a
# w: K- |1 G; E ]% S" z
8 S/ w' b7 O" x3 I% pWSM:武器基础速度/ G: q$ t, }: q+ G
当装备武器/盾牌或双手武器,没什么说的,就是我们在许多资料上常看到的那样,是该武器的WSM,如-10啊,0啊,30啊什么的。
# b: Y) h& c, ] T2 F7 Y V当用双爪时
+ g# A/ Z( Q4 u<1>先放屏幕左边装备槽,再放屏幕右边装备槽, f" _& B% S; C0 e. E9 ], K
WSMs=(right_WSM + left_WSM)/2 ) E: i, M+ @8 { h) x1 _$ N9 ]$ z
例:两把爪的WSM分别为10和-30,则最终WSMs为-10
3 x) y+ l3 i. }& M1 ]9 e5 x7 C% T4 T7 x
+ s0 b: X; J6 q5 s4 J<2>先放屏幕右边,再放屏幕左边(EIAS C/C Bug)
x2 r% T- Q+ H3 Q; s+ V z2 zWSMs = (right_WSM + left_WSM)/2 + (right_WSM - left_WSM)
7 R1 q/ F' T7 z# |9 U( V例:先把WSM为-30的放在屏幕右边,再把WSM为10的放在屏幕左边0 E. _4 f; T2 _1 h0 m7 r
WSMs = (-30+10)/2 +(-30–10)
: ^- F, u0 I3 x3 [! v) l# l# @* _= (-20)/2 + (-40)
5 C* K& s( P: Z& Q/ L+ [; a4 n7 n= (-10) + (-40)
0 L/ ~+ I* H7 ?& C3 ^= -501 D. I# f, V( }. O, _
先把WSM为10的放在屏幕右边,再把WSM为-30的放在屏幕左边
' T* W! I+ Q8 C+ z1 PWSMs = (10+(-30))/2 + (10-(-30))
. p( _4 \6 U n4 {7 D) K) s3 H= (-20)/2 + (40)
; w# F# m4 e. t1 ~= (-10) + 40
. h d7 a' m O= 30) w' i! h: I% r! c" ]! M- Y
当把WSM快的爪先放在屏幕右边时,就可以利用这个EIAS Bug了。
, l( J4 T5 D- A; w但是当角色在游戏中切换武器后,WSMs将变回<1>的状态- -!。1 k% a7 B+ P s" s1 _! p
注:C/C bug对踢击有效。" M( E/ c' S2 \! \9 L
4 w7 `- a! R1 g+ C) e- ^; mEIAS:有效IAS) D3 ?$ h! C& |# ^4 q6 h0 I
=Effective Increase Attack Speed = [120*IAS/(120+IAS)]' w9 K" W' e# L- u- ^6 m" Y
比如装备提供20IAS,则EIAS=[120*20/(120+20)] =17. G0 o( v8 M! e# o
" e9 q, x8 I/ ~. A# Q
% R7 f9 L/ `! v' H! NEIAS/IAS 换算表格5 Y+ Z9 B' o+ A9 J
+----+----+ +----+----+ +----+----+ +----+----+. g, I8 D9 k5 L- E8 }( H- c
|EIAS| IAS| |EIAS| IAS| |EIAS| IAS| |EIAS| IAS|
! {/ ^" m/ a" e: K# a6 T+----+----+ +----+----+ +----+----+ +----+----+9 v* |4 ]) H9 k
| 1| 2| | 31| 42| | 61| 125| | 91| 377|
, s3 C. x1 n0 n# M. n5 w/ R' {| 2| 3| | 32| 44| | 62| 129| | 92| 395|
3 _. y, t" V7 D& U: a8 g) l| 3| 4| | 33| 46| | 63| 133| | 93| 414|
! D) C1 N4 r6 V b% Q7 G w| 4| 5| | 34| 48| | 64| 138| | 94| 434|" h3 F7 h6 G% ~8 T; ?' C, |
| 5| 6| | 35| 50| | 65| 142| | 95| 456|
- L6 v6 d! ?2 W8 u- e1 ?3 n* u4 I| 6| 7| | 36| 52| | 66| 147| | 96| 480|2 I3 b+ l3 S- g: g u
| 7| 8| | 37| 54| | 67| 152| | 97| 507|, [( W. G9 L7 G4 }/ L
| 8| 9| | 38| 56| | 68| 157| | 98| 535|
; p) G8 c* _+ J1 h/ o, [| 9| 10| | 39| 58| | 69| 163| | 99| 566|
* M6 C# L" ~6 Z* {| 10| 11| | 40| 60| | 70| 168| | 100| 600|
! \8 }% j3 r9 `, T& L P6 X| 11| 13| | 41| 63| | 71| 174| | 101| 638|; D5 f+ J7 d l% I9 k
| 12| 14| | 42| 65| | 72| 180| | 102| 680|+ G, c P7 G) _( h0 `9 D! _
| 13| 15| | 43| 68| | 73| 187| | 103| 728|
+ i1 A8 R5 w* C2 o) n* h| 14| 16| | 44| 70| | 74| 194| | 104| 780|
+ {9 [) O( V- v% D B1 U+ h| 15| 18| | 45| 72| | 75| 200| | 105| 840|
7 e5 Z& u: O3 `" Q| 16| 19| | 46| 75| | 76| 208| | 106| 909|
7 {4 H( e) [2 [: ^( W( W9 H| 17| 20| | 47| 78| | 77| 215| | 107| 988|
/ K. E* D) `( n2 S2 h| 18| 22| | 48| 80| | 78| 223| | 108|1080|
9 t. x. i4 u- m: I! t. s1 _, [9 r| 19| 23| | 49| 83| | 79| 232| | 109|1190|
9 V3 n: W, G- H+ x| 20| 24| | 50| 86| | 80| 240| | 110|1320|3 h. g1 v/ h# K! J
| 21| 26| | 51| 89| | 81| 250| | 111|1480|0 M$ _9 w# L& d: ]/ F$ k8 L
| 22| 27| | 52| 92| | 82| 259| | 112|1680|3 `: _) n: B" S, |7 E8 ?+ u& P
| 23| 29| | 53| 95| | 83| 270| | 113|1938|8 o1 p4 t5 h) o
| 24| 30| | 54| 99| | 84| 280| | 114|2280|
! u& V( m8 i' x2 {. m! N' G| 25| 32| | 55| 102| | 85| 292| | 115|2760|
% W4 N! }" K( }. G6 V. a: }| 26| 34| | 56| 105| | 86| 304| | 116|3480|* M5 G" d- D! D( r
| 27| 35| | 57| 109| | 87| 317| | 117|4680|- M8 P" G# l/ W6 A: k$ b
| 28| 37| | 58| 113| | 88| 330| | 118|7080|8 A$ z4 w" a. t6 r
| 29| 39| | 59| 117| | 89| 345| | 119|14280
( Q4 d& s% _. U, I2 f6 b/ s9 v| 30| 40| | 60| 120| | 90| 360| | 120|inf |
$ k( E: G3 ?. u+----+----+ +----+----+ +----+----+ +----+----+
- d- U* I% r% P/ A
$ J S4 g, E6 l注:这个换算表同样适用于EFCR/FCR、EFHR/FHR、EFBR/FBR的相互换算。7 O" `( T1 f9 t' z
+ {+ X/ C, T& ]- E3 M9 ^+ h8 S
3 o' o5 v1 ]% a+ o: [! R* T
IAS:装备提速属性之和: p. I ^* G$ y+ M2 p' q
=Increased Attack Speed=(120*EIAS)/(120-EIAS) 这个是和EIAS的换算公式; y; e- g9 ~4 p, H9 a, k
很简单,装备上所有的IAS叠加起来。" k$ |. N1 R- V& k/ s
如果是双爪,只算先装备的爪上的IAS(如果切换后,则只算屏幕左方即手套上面爪的IAS,也是大家常说的主爪位置):这个只相对使用主爪攻击如TS、CS、PS和踢击技能及陷阱放置而言。
7 [8 \# g( ?0 i2 ~) I( O一些双爪轮流击打如normal attack、FoF、CoT、BoI包括WW,则只算当前攻击爪的IAS。# d/ k- l h7 J. |
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
; A3 J' q# j$ f- J
2 Z" p, ~8 |: X5 O& [3 C1 [※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ / b& Q/ c. w1 z. h( d
Frame:帧数9 ~) M2 B9 y9 f; o
Fpa:每次攻击帧数
2 K/ n$ a8 y n' E3 T* XIncrement:增量
" X3 h) q) j0 cTerminating_value:终止值
- }/ T7 R3 H) w2 o4 OAFrame:计数范围
; x, H- D$ c! fCounter:计数值9 r: K% j" Y5 f; m j ]
ticks:计数
5 O* B* v/ c- y) k; s6 M" I1 r6 T6 ?. k
. L1 O1 [6 m$ ~3 {( F
" P2 |& b: t0 {9 S% x4 e; YFrame:帧数8 ~$ `/ j; M# M4 c2 p6 l* e
D2 每秒运行25Frames。意思是指游戏每秒刷新你的屏幕画面25次,即每0.04秒刷新一次屏幕画面。如果你在游戏里用/fps的命令(frames per second 每秒运行帧数),你会看见每秒的Frames会超过25(这个越高越好啦-o-)。这只是指你的系统可以超过25fps,不是指D2这个游戏能超过25fps。每秒运行25帧是D2这个游戏的程序设定,是不能改变的。
8 D; q. D- d1 i) R: x6 a6 I* J" r) |' ^. Y8 ~5 i9 n
. v% S: Q5 U, I) U1 b
Fpa(Frames per attack):(完成)一次攻击(所需)帧数9 z' d* L6 o, w- d
比如说一种攻击的速度是7Fpa,意思是指完成这个动作需要7帧。% j" v3 e3 b) R% w8 R# E
4 C5 ~1 q4 P0 u) m6 q( n, X; [
( z' e6 w- z, c0 `0 _4 q, CIncrement:增量" v0 i% T; X/ l7 H7 e' ^
= [AnimationSpeed * (BaseRate + SpeedIncrease) / 100]$ d- u% Y: Y( P+ ~' M
数值越大,则攻击速度越快。如前面所说的,由于(BaseRate + SpeedIncrease)有上下限, 所以Increment也有上下限。/ Y( ^" Q+ Q7 G$ q
: X" A2 M$ n Q3 u5 I+ k j
8 M3 u2 }4 X( ~% R
Terminating_value:终止值
. _* k+ M5 S; ]( R, {( Q2 N6 nTerminating_value= 256*FramePerDirection
- Q9 m- j4 z" ^/ g5 A1 |5 G {* h8 V4 ^5 F9 l% Q) l# U" U
比如动作长度为5,则终止值为1280。
- ~, F% U, I/ H7 {1 Q0 c把这个终止值按256分解成5个计数范围
8 X; O6 w, ^) E0 I9 d# n5 O6 @0-2551 D+ o- P( d/ O) Y2 i# P
256-511' n6 q+ f7 v' e* P) A r% s7 [8 S, c3 O
512-767
/ |; B% _" g2 A K6 s768-1023
5 K& E' h i+ h' C: X2 k4 z3 l1023-1279
- m: _0 A: G, [即到1279时,整个动作完成。之所以没有1280,是因为从0开始计数。$ u! i2 a6 J. |8 y2 e5 c
( E( L/ F1 y. n9 e: F- x ~6 X! gAFrame:计数范围6 ^: @1 d3 t4 }$ q: D
Counter:计数值
8 P# I) K2 ^% g2 ZAFrame表示一个计数范围, 如0 - 255表示AFrame为00,256-511表示AFrame为01。/ d, p9 r I2 h" X: T0 Z5 ?
如果一个计数值为4000,则/256后为15.625,舍去小数,此时的AFrame为15。
4 C& C6 l( q2 | F4 J3 n: t3 a$ r- E9 e$ e
$ Z4 l8 a$ U6 {4 T
6 g, c& T6 t: J2 i
Counter/AFrame 对照图表/ G/ @- ^) ?" h1 Z3 [6 _' l
Counter value AFrame displayed Counter value AFrame displayed
' k0 Q F& M: Z* x; O3 S# b! ]0 - 255 00 3328 - 3583 13
1 A% _" H5 |% C256 - 511 01 3584 - 3839 14
. Z9 n* ^2 A7 r \8 ~1 I: a0 D512 - 767 02 3840 - 4095 15- [8 Z2 a/ Z; ?3 Z
768 - 1023 03 4096 - 4351 16
( t7 ]) b2 t0 `; X" j) {+ @1024 - 1279 04 4352 - 4607 17/ Z: g$ [5 m9 R) z! ], u+ I$ @
1280 - 1535 05 4608 - 4863 18
* P- n! ^% V2 w, n# c1536 - 1791 06 4864 - 5119 19% ], j4 c- K0 x1 C! t9 ]& T0 t
1792 - 2047 07 5120 - 5375 20, |7 w1 C% \& c7 [
2048 - 2303 08 5376 - 5631 21! j& q& w* e- \. q' Z: J+ E5 P
2304 - 2559 09 5632 - 5887 22
; S& u, [- i* c7 A7 N& S) h2560 - 2815 10 5888 - 6143 23! D9 w+ E% }/ G% R! ], R S
2816 - 3071 11 6144 - 6399 24/ y" J$ I( K% a4 ^! X6 e/ Z, Y1 r
3072 - 3327 12
) z1 V) o0 n$ e& B' P0 C7 k- u3 x" t1 G: c/ A- e
. U! }- V; l4 @5 T8 g1 Q9 a. N5 ]* X2 h5 m
ticks:计数
: T5 {% y) h" r+ C( u4 h! |; }许多资料和帖子在解析游戏中的Animation(动作)信息的时候都会提到这个词。这个计数有什么用?让游戏知道一个动作什么时候结束?不是,这只是为了让大家比较直观的了解一个攻击动作的完成所需Fpa而引入的一个游戏程序计数器。5 S0 T! q7 |) Q: d, r4 U1 K" K
7 D3 P f$ O0 E2 {, v* u0 U
0 i- F; Y0 I: {6 V' L5 z! F下面举个例子,还是以上面的动作长度5为例,假设某个动作的动作速度为256,基础效率为100,速度增量为0。
6 T* [5 R: G+ j1 g9 K7 k! [这个动作的各项参量: K; X( E/ j- |- G& B" ^
AnimationSpeed = 256
4 G5 i$ t3 ]$ |: ~- d+ QFramePerDirection = 5 ( Aframe从00到04,共5个Aframe)
1 X0 t0 D# w( c% H: I% I& CBaseRate = 100
8 |/ y" A+ O9 a/ z4 RSpeedIncrease = 0
1 K, k% S( `* o; e* V$ W( I2 i# B' h* B4 x
Terminating_value = 256* FramePerDirection = 256*5 = 12804 A& r( z1 D, k" a6 Q" U
Increment = [AnimationSpeed * (BaseRate + SpeedIncrease) / 100] = 256*(100 + 0) / 100=256*100/100 = 256* B0 }" z5 w0 w3 w6 T* G9 E
- x0 A" _& I: `6 m
代码:5 v% Y- O( B1 S& E& Y0 r& F0 s0 s
' ^0 @9 T# f$ K7 s( Y. Q/ w从0开始计数,动作开始
1 Q" {4 X$ R5 _$ q! `# M e
8 l, ^+ h, ~. ]1 v% OGame tick 1$ b; H$ [% i" Y0 w$ h
counter增加, counter=256
* a2 Y1 G! T+ ]counter < 1280 动作继续
3 z* @' M F% C$ E( W- i1 U: tAframe = 01(看上面的对照表counter=256时,Aframe = 01)& v' u: v Y6 q( d, e8 Q; a7 ]
2 ~0 r1 h/ }6 v" Y9 h- g2 E1 L6 T
Game tick 2' d6 T0 u/ t/ A V, Y y! ? ^+ J: q
counter增加, counter=5121 Q0 p: c) j& }) d8 I0 ~6 H
counter < 1280& c% H; x- {! y0 d. g" ^8 ]6 ?4 k! L
Aframe = 02 9 W) t- B* { T! Z8 N
- [9 M& l/ S) X- N% t
Game tick 3
1 F) ]; N( a7 H6 _counter增加, counter=7689 p4 \, j3 `# C6 Y, f% Z+ B
counter < 1280
# m4 j% h, l) [8 a3 [Aframe = 030 J1 A6 z) t5 o3 e- H+ R9 K
! m2 w+ ]3 {( Y" M& HGame tick 49 R" d! Z! a, M0 ~1 f
counter增加, counter=1024, r2 `4 y7 J1 M# V h# H+ f/ J
counter < 1280
! a0 {& r6 m% tAframe = 041 d$ m0 E% V* M
" o8 q' D2 ^8 {/ Y
Game tick 5
& D7 f" c- ]9 i/ Z' o6 ~counter增加, counter=1280# s4 T; u9 l) I( y, ^. N
counter>=1280
% F o! [/ l: c- w8 X$ A& u动作结束,寻找下一个动作,counter重新计数,下一个动作从这个tick开始。
1 m- ?; Y% t! X" Q4 i p* j8 L' t/ c6 ~9 l6 s# |6 F
/ Y) `$ B, W; j4 W2 T由于1279时动作就结束,所以Game tick 5将作为下一个动作的Game tick 1(下一个动作从这个tick开始)。而不算在这个假设的动作中。即从tick 1到tick 4共4ticks整个动作完成。就是说这个假设的动作速度增量SI为0时,可达到4Fpa(完成这个动作需4帧)。
0 R) A8 Y# M5 @' E4 z( K( V; s# U9 ]( G- @
+ P1 Z6 I7 c7 s8 ^: X {3 z3 I7 R/ P上面是个很简单的例子,下面我们再考虑SI分别为-1、24、25这3种状态。其他参量都不变。
" m, Q& z& \$ D& j0 DSI=-1,Increment = [256*(100-1) / 100]=[256*99/100] = 253. |, f* N7 z; A0 v& Z0 f) w+ W5 t
SI=24,Increment = [256*(100+24) / 100]=[256*124/100] = 317
. a0 k; g1 }+ e1 y+ kSI=25,Increment = [256*(100+25) / 100]=[256*125/100] = 320, y3 |0 N$ B9 f7 }7 [( z* |
- A0 [6 M, z) x; Z6 S 代码:2 E# Q$ ]0 g5 L+ ^ W3 x( e
@3 \( ~& h9 z* Q动作开始
3 f" Q4 h9 n* T8 t7 X! V' E/ f5 C" B. R
Game tick 1
. |/ P8 w' _9 a; l' r. cSI=-1,counter=253 Aframe=00
9 f7 J# h8 O: R q, p+ }- J7 RSI=24,counter=317 Aframe=01: l4 ?: O$ n0 G( v' N6 f
SI=25,counter=320 Aframe=015 v% e1 X0 D: l# a0 ^2 m
7 t" N) |( N- ^1 x
Game tick 2& N8 G1 ~+ |9 y$ Y# G+ R% ?5 {
SI=-1,counter=506 Aframe=01) \& O9 F5 B! d# U: D
SI=24,counter=634 Aframe=02& G/ t" I9 j0 Q( T+ c
SI=25,counter=640 Aframe=02
: ]( e+ Q$ s& E7 ?+ }" O4 P+ s( Y# b* M ^7 Z0 W& P
Game tick 3) f% A' H0 ]! K& o4 t4 X0 p
SI=-1,counter=751 Aframe=02
7 e: y7 {6 K* P7 O1 l' jSI=24,counter=951 Aframe=03* P2 b1 U% Q# i% y
SI=25,counter=960 Aframe=03
9 p- |1 s% h6 z% L* M7 ?" ~) G2 }+ C; X8 h7 T' j
Game tick 4# X2 C; z4 `+ f1 ~* @# W
SI=-1,counter=1012 Aframe=03+ O' c# X, w2 d% j5 T* g0 F& m$ c! Q
SI=24,counter=1268 Aframe=04
# w: P; U. R8 U! N; F0 V8 zSI=25,counter=1280 动作结束; O6 }: D; ?5 K: x" o
/ ?0 o6 k4 i3 J# T
Game tick 5 . m; V% B! R* F8 D; [6 g7 P+ |, B
SI=-1,counter=1265 Aframe=04
4 X2 a7 y, i, bSI=24,counter=1585 动作结束
- {- `7 V j2 H5 g: f/ w- P$ _' {9 ^6 N& z
Game tick 6
6 l* X. Z- K4 c4 B! jSI=-1,counter=1518 动作结束
1 v5 K3 r8 M$ r+ e9 {. G; v
3 E8 C% ?' X: U+ ~7 m8 d" f
" G* y4 u( H( S( s7 z1 N可见,SI=0时,动作在tick 4就完成;而SI=-1时,动作在tick 5完成。
) N3 ]/ b, |1 ^) Y; V) }" V2 R8 uSI=25时,动作在tick 3就完成;而SI=24时,动作在tick 4完成。4 a% K; k6 l- K5 x
-1-,0,25就代表了这个动作Fpa所需SI的3个档次。
9 b+ J( H( ~5 M- A; e- `. I2 ^一般情况不考虑Slow影响,SI=Skill EIAS-WSM+EIAS,Skill EIAS和WSM都是已知的,只要知道EIAS的数值,就能知道一个动作的Fpa是多少了。而这个EIAS就取决于你装备上提供的IAS。; h* ~& f& N. N6 B. \- c
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※( z; F% F' k; V+ @8 n
$ x# P8 k# A! k- L( A
8 E! z, w, ^1 f$ ^7 w+ k; q$ [0 E
2 l' T: J5 M% {- m3 Q$ w; ?/ h* ?
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
! F4 k3 T" F3 @+ l% N$ R' o* vDtalon:龙爪& Y7 T9 B* L/ ]) p$ T
Rollback:回退特性& b" `5 @' f& X* o* c
Initial Kicks:最初踢击
' i% e% [: n7 K4 L( yFollow-Up Kicks:后续踢击
# `6 k# `5 A+ w3 x$ \5 vFrameDataActionFlag:发生回退特性标记点6 A R0 }# n: u' ^( {6 l) f8 F+ q
- M0 B9 A0 l4 Z1 n( G( L' r# t! x5 w
$ a5 f9 \# {( N- P: ~Rollback这个概念的解释最早是由Ruvanal在lurkerlounge上给出的,简单的说,就是相对角色完成一个完整动作,具有Rollback特性的只完成其中的某些部分。一些拥有Rollback特性的技能有Fend(Ama的击退技能)、Strafe(Ama的炮轰技能)、Jab(Ama的戳刺技能)、Zeal(Pal的热诚技能)、Fury(Dru的狂怒技能)和Dragon Talon(Asn的龙爪技能),它们共有的特征就是在一次攻击中包括多重打击。这些技能的% Rollback各有不同,比如Zeal/Dtalon为100%,Strafe为50%。
! S$ O: H( g4 }) H# ?; X
& F3 y9 j! E& qDtalon的整个踢击动作包括最后1次踢击(Dtalon只有1 kick的这次踢击也算在最后1次踢击范畴内)和前面的几次多重踢击。通常我们把这最后1次踢击称为Initial Kicks(最初踢击),反而把前面的几次多重踢击称为Follow-Up Kicks(后续踢击),这是一个叫法的习惯问题。比如我们说7/3/3/3,如果按踢击顺序的话应该是3/3/3/7;这样会让许多人认为第1次踢击是7Fpa,其实正确的认识是第1次→第3次这3次多重踢击为3Fpa,最后一次踢击为7Fpa。3 z4 C& k% y, \' G/ l. h
) H! \& B' G1 j: O, W5 v
下面就用Counter/AFrame理论来说说DTalon的Rollback。为了完成Dtalon的多重踢击,Counter将回退,也就是AFrame值将会重复,由于Dtalon是个100% Rollback技能,所以发生Rollback时Counter将回退到0然后开始对多重踢击进行计数。一个关于Rollback的参量是FrameDataActionFlag,如果到达这个标记点,表示一次多重踢击结束。Dtalon的FrameDataActionFlag=04。
) n1 L- r) a) `- \, Y, ^; m1 W
. X: Q5 z0 Z4 N
5 N) S+ V2 j2 z% h7 }举个简单的2 kicks的例子。
2 y3 Q% @8 l" ]7 I6 RDtalon的各项参量数值
( y) i) H' u% m% FAnimationSpeed = 2569 ^8 E ~7 k5 ]
FramePerDirection = 13 (Aframe从00到12)
& {3 Y- a. ?) l. k/ S9 i- A: ^: \FrameDataActionFlag = 04
& z5 L x3 c( _BaseRate = 1002 i: L* G/ L; |( i) w L
假设其SI = 0
1 ~4 I" N* ~8 V+ E& j0 N! J- v5 C$ ^1 S3 Q8 |0 G
其增量和终止值分别为
: ^; p s) l% X w2 W% oIncrement = [AnimationSpeed * (BaseRate + SpeedIncrease) / 100] = [256*100 / 100] = 256' ?5 L+ ] t( ~* d/ N7 u& }
Initial Kicks的终止值Terminating_value = 256* FramePerDirection = 256*13 = 3328
: a/ m) W5 k7 }, A* L( p9 P/ PFollow-Up Kicks的终止值Terminating_value = 256* FrameDataActionFlag = 256*4 = 1024
/ a; p1 Y4 o9 x# ?5 m
+ O _7 b5 B. V4 R1 r- K' d 代码:
. [7 T1 ^5 M, s: Z- d0 a0 q% W
2 \" c# o; H" p1 M* t* e% a动作开始6 O7 n7 O$ O* [$ b+ \
. Y/ Q$ M R" f4 OGame tick 1! Q. D/ Y" v* ]4 {+ R5 z' l! s
counter增加, counter=2560 l( P' k# T* |+ k
counter<3328; `# C) {! w# g3 [, ?
Aframe=01 , t+ S. e. W/ k
counter<1024 0 h1 w$ t% H9 K( j& C+ i0 ?
* t* ]) n; ?3 b& g/ x0 A
Game tick 2& f. L' X0 ~7 k1 f; y3 I
counter增加,counter=512 E' P) h" P2 f3 w0 {
counter<3328
6 ?8 z5 W9 O- x% T, {7 H8 xAframe=02 . {6 ^5 h% s M' B' _2 H
counter<1024
2 ]9 q% h4 |3 a% w ?$ q2 `8 f1 G2 `' V! v* x
Game tick 30 R. }' W* u# p
counter增加, counter=768) l" Q% P8 H* z; p8 }
is counter<3328
2 i/ n- y( W. H! ?Aframe=03 5 {0 }! M7 V/ h
counter<1024 # _0 o/ N; d; a- Q! g
0 a% l; h4 b/ K" AGame tick 4
' F$ w/ u- j1 ^. T* |counter增加, counter=1024, H) `, Z- k0 C2 x
counter<3328 ( I" j5 Z$ \" H3 g7 `& c
Aframe=04 4 P% u# _, w! S9 h; e9 M6 q) L3 o) K; V
counter>=1024 8 |1 T% g3 {! x6 {4 }" a4 }2 d
第1次(多重)踢击结束,寻找下一个动作
0 _, x& p: W. gcounter回复到06 P! T( r1 v& c# U" ?
7 l! v( c; V* N; ~% G" e2 YGame tick 5
! L2 R/ ?: P; X, F$ S9 A/ B- V0 wcounter增加, counter=256
6 J Q0 p$ {# W$ m% `counter<3328
& z! n U2 a0 l& z$ {% gAframe=01
; y0 M& J5 `( x' H+ d& F! Zcounter<1024
2 Q9 M9 I" G8 @3 n$ Q第2次踢击开始! M( i1 ~3 P8 D1 y
. {' I+ U; I( V5 B( p, aGame tick 6
# O7 \" x$ B L3 i8 ecounter增加, counter=512! \+ i+ R e5 k/ N
counter<3328
, H o& E* ?9 s. C. B8 DAframe=02 4 W" Y8 Z. U# p% O& b4 f& X
counter<1024
2 o& f5 E1 O# I6 } P: T) R7 X" g+ M% ]9 u
Game tick 7
: l; @9 Z- `8 d6 A- a* y5 zcounter增加, counter=768- K/ t# [& n* Y" x
counter<3328
' [4 {' D+ {4 X' K7 ?Aframe=03
G, N4 Y h+ O( hcounter<1024
& o& ?! F& \3 E! {; ?
3 l1 B( P0 M5 l0 w! HGame tick 8
, J2 |, N8 ~" C. S/ ]. icounter增加, counter=1024
7 O- c" m" ]1 w, _counter<3328
5 X) s: `% W. o8 i- X: M0 B% m! PAframe=04 , B* l: I, c2 b" V5 R& C/ ?* n
counter>=1024
* h$ h' Y0 K5 V6 m; Q! s6 ?+ T' V( M; {# S# x' M
Game tick 9% E8 U6 `4 k' Z4 r
counter增加, counter=1280
7 H: j: @; V. ]% K, k) N- [counter<3328
. q9 E2 q' }5 {, _% |$ c7 iAframe=05
; o8 @0 K# f/ J) P; o& V$ ccounter>=1024 ' n. c _6 a7 y" T O
第1次(多重)踢击在 tick 4已完成,counter不需要rolled back到06 @2 M# d I! k( g0 @0 t6 y
第2次踢击继续 : G4 T5 t" [4 k# U' ]6 s
.3 u3 j& A( u" j* |
.+ J0 O5 m# G9 S' G) X) H0 T6 ?
.# m" J5 z9 O" E! t, C8 k
.
6 C- ?( o6 t: Z* n2 cGame tick 16) ~( q$ a- t$ x6 b! ^" \% K
counter增加, counter=3072" k$ _+ b# v; B& g/ K6 W( n
counter<3328 * u) [$ F5 K( v. g2 b, X
Aframe=12
7 H z( I& [8 `- Ucounter>=1024
) B2 d: ~2 P# }( i第1次(多重)踢击在 tick 4已完成,counter不需要rolled back到0
, h) `* m' |% v7 T0 S, `8 Z第2次踢击继续
5 q/ l( s. T$ c6 V1 b9 N+ T4 K4 l. S
Game tick 17
0 |1 ~1 E+ r( e5 h" f5 I! Ycounter增加, counter=3328* ]" r p. R' P* n& M
counter>=3328
# ]4 Q/ y8 V, U! r$ D整个踢击结束
3 b. F3 Z+ O: I) u! ~' b/ K$ H
+ n. G8 p1 ~/ s, W6 f0 U* l4 x5 }7 J. {# U+ H' t# O" @3 ~8 ?% k
从这里我们可以看出,第1次踢击从tick 1 到 tick 4完成共4ticks,第2次踢击从tick 5 to tick 16完成共12ticks,整个过程一共是16ticks,即第1次踢击为4Fpa,第2次踢击为12Fpa,整个踢击共16Fpa。 按习惯,我们会说这次踢击的Fpa为12/4。9 F0 H8 j# S/ p% |! Z, T X
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
" M7 h- L' I; K2 }4 I& y
" o; J% r" C2 V) X b, U5 O9 w! Q' N0 B+ A0 A8 P
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※0 c' d% B5 x# I% z% F/ }, X
DTalon Fpa公式
0 r$ v: `+ f) d" P3 ^7 `Initial Kick Frames={256*(FramePerDirection) / [AnimationSpeed*(BaseRate+SpeedIncrease)/100]}-1
2 V" v' ?4 }; P B& [& }& JFollow-Up Kick Frames={256*(FrameDataActionFlag) / [AnimationSpeed*(BaseRate+Speed_Increase)/100]}
; k6 k1 S* o: n; W" QFollow-Up Kicks的Fpa极速上下限 7 x# `5 H# _3 u7 T% P% z' A
Initial Kicks的Fpa极速上下限
0 R" M4 K, E. |1 }
1 e0 T. i5 B" }0 ~0 J8 {/ j. }% _1 Y0 Z' i R+ U# b
" @. S+ q' } \# O
DTalon Follow-Up Kicks的Fpa极速上限 / g' p9 U/ U+ w5 Y0 E" {
前面说过(BaseRate + SpeedIncrease)的上限为175
: ?, O- ~0 s! A; {, z# GIncrement = [AnimationSpeed * (BaseRate + SpeedIncrease) / 100]0 Q/ m8 i2 X9 G# z6 Q5 O* o
= [256 * 175 / 100] = 448$ p2 t: V b, n
增量Increment的上限就是448
: u u y3 u4 p" Y6 ]Initial Kicks的终止值Terminating_value = 256* FramePerDirection = 256*13 = 3328
$ [ U. A& B6 U% j f$ IFollow-Up Kicks的终止值Terminating_value = 256* FrameDataActionFlag = 256*4 = 1024
3 z3 c) c; c* k# J6 q* U
+ Z# _: u8 R; V T1 B$ {5 G以2 Kicks为例
4 ]! L7 C( b" @$ E' r) |! e4 y 代码:
# U5 u7 T& ]) ^0 F7 v' V/ ~1 \, X' n3 C7 o) x4 f6 y# m; O
动作开始
0 b x W8 c5 s! o
5 ]2 H8 A6 D* Y! L; NGame tick 1* T' H# @# c J+ B/ C; l; P( q
counter增加,counter=448$ B. f; u4 s! c6 F$ B z; r; N2 Q
counter<3328! z4 C- t+ j8 F: ^0 h4 p
Aframe=01
6 a0 R) |) n& g* ]( g- } @8 ^5 Tcounter<1024 - _9 A( K$ o ^% G
0 n6 O8 }$ l# K$ pGame tick 2' N- ~7 B6 j) ~ ]% e
counter增加,counter=896
2 @! J# Y( M. ?; Ocounter<3328
4 Y0 W5 @+ E0 \! H( bAframe=03 W/ |. l( b6 F8 D& J) W( M4 {
counter<1024* l1 V) E7 G( P0 W% b- g# D
: k0 N6 Y; r$ U M
Game tick 3
8 ]2 m; E( @6 W& e9 m1 \counter增加,counter=1344" j8 L' L. S- ?/ Z5 E8 Z1 F
counter<3328' f: [& Y1 J( M s+ G; t7 f
Aframe=05
8 P+ }+ V; [; d$ `( {! Ecounter>=1024 o! ~0 r# ]1 {' D4 f* j1 K
? ? ? ? ? ? ?
3 g+ K3 r* G; g7 j7 m
7 U% }4 r8 A- Q. F8 X5 u0 O( W& y$ {* r+ {: z+ }3 f6 Y- ^" F
暂且在这里停止。从tick 1到tick 3共 3 ticks,counter在哪里回复到0?第1次踢击从tick 1到tick 几?下次踢击从哪个tick开始?能达到tick 2 (2Fpa)吗?其实这个问题前面已经有答案了。6 ^4 e; r0 }5 Q( W4 Z; j: b
% o0 z+ {, N- d前面最早的那个例子有这么一句话:下一个动作从这个tick开始. F& n5 E6 S3 S1 a8 Q5 H* S1 J
即终止值不算在一次动作内,反映在帧数公式上就是最后的“ - 1 ”. w T7 ^5 ]8 ~# ?
Fpa={256*(FramePerDirection) / [AnimationSpeed*(BaseRate+SI)/100]}-1$ b: v2 X P. M, x9 U
如果这个公式也适用于DTalon的Follow-Up多重踢击的话,那么显然,Follow-Up Kicks是能达到2Fpa的。
e% g2 P% t9 b% ?" c+ y* _9 Y8 H v6 W6 j+ H
啊啊啊~````不要急不要急 - -!
* \$ n9 r% `; ^看看刚开始说Dtalon的那个简单的2 kicks例子3 w' ]8 J) _ E; `+ N- j9 K; @
/ ?7 a, W4 t* uGame tick 4$ a; U, t1 L/ x
counter增加, counter=1024
1 U& R' F/ Y; n+ F) ]3 Vcounter<3328
& q, k% E3 M; X0 } v, c$ t) D8 pAframe=04
/ i; ^) J& Z9 ^counter>=1024
) _2 D s! \0 W8 q- _. N% E4 |4 a- `第1次(多重)踢击结束,寻找下一个动作+ ]* a/ @" z# f/ q. p, P6 I: U
counter回复到0
3 m# r! x2 U m$ ]# G; J' B) p$ J( D; x! h& G: r) ~6 `
Game tick 54 t: V! M* B9 v# v: T4 z* f0 G
counter增加, counter=256
9 x/ G$ R0 X* }1 s( A/ qcounter<3328
! B+ z$ r, ?: m7 D( JAframe=01
1 W2 Q. a: ?3 \: ~+ S3 ^counter<1024
2 R& i5 A, B; B* H/ n第2次踢击开始1 i( G. k1 Z( D0 |9 \& z
虽然counter在这个tick 4将回复到0,但是新的动作将从下一个tick开始而不是从这个tick开始。因而,不需要“ - 1 ”。, V6 R0 |8 A% S. y% @; R q
+ ]! b+ {7 m4 ?1 a1 t7 b/ }$ l% K% U
所以第1次踢击是从tick 1到tick 3共 3 ticks,下一个动作从tick 4开始,即Follow-Up Kicks的极速上限Fpa为3,HOHO,大功告成 -o- 。
1 G- r1 c. c! v0 k" G( W0 F }% ]: `+ u# x
8 S F5 F; f, ~: f" `! ~
DTalon Initial Kicks的Fpa极速上限
) V1 ?7 O9 T1 c1 g$ t$ t8 O ~* l继续上面的增量上限448的例子* h* f/ z+ T. W
" u1 c* m; R2 {0 r: L B) _. Z+ o 代码:/ c, m9 X6 o. g
& d* U6 S8 k3 y) N4 d4 m2 N
动作开始
! p- x, e% U+ IGame tick 1 k3 F6 }9 ]% u H! [
counter增加,counter=4488 j( c/ z) V8 ^! y
counter<3328
7 ^2 D& D+ J* ^( b: J: a4 `Aframe=01
+ H/ q( \9 v& [3 b8 A5 c3 Jcounter<1024 " W' X, W" m4 Q& O% v9 ^5 O8 ?
. h& ~5 Z+ k" Q( A. q( p
Game tick 2
k# ?* L& B7 \5 acounter增加,counter=896
% @5 h7 C# v7 D! X4 H' b0 k, h" `; Bcounter<3328
/ Q+ J7 y( _& V8 A- nAframe=03 % X K$ D5 e8 r
counter<1024% `" I e! l7 V n$ c
( n" p8 t! O' z9 r) c8 c) K' sGame tick 34 e( S. W( |+ ^6 Y( }
counter增加,counter=1344
6 t/ o! P. W- Q, F0 bcounter<3328
% |! |9 O; a$ d) u7 A/ H( BAframe=05 ) ^; T# |' j/ I/ @- G4 o
counter>=1024
6 z% ]6 d! W5 l3 S4 {" t) k第1次(多重)踢击结束,寻找下一个动作7 O- D9 q! ?8 O5 o5 F1 l! A9 `3 \
counter回复到08 ?3 Y- x* G2 r! d( Z7 L
6 L, i% |) E3 i6 k( p/ v; h
Game tick 4
0 x9 p4 I I% o, s% e; }counter增加,counter=448
& T* s# X" X# E1 O: P( C% F6 F- Tcounter<3328! l8 o) Z9 o; ?4 v5 s+ N
Aframe=01 - x5 {* x% ~! I) i9 `
counter<1024
/ i0 P. P( K$ u9 I; E% M第2次踢击开始* X! r0 M c4 l' a
. K, ^! k$ \% Q! t! uGame tick 5
# v3 n. L7 E+ V" f0 o1 ^4 Y) tcounter增加,counter=896
# z) V4 |8 { `counter<3328 1 E+ B! U# |, Q4 n |! o8 p
Aframe=03 8 |& W5 n2 J* S0 t# b8 n
counter<1024
4 D d7 o( w0 E- x# j- T! v0 t' ?8 {% u4 y% k* L& d9 S A: s
Game tick 6, r, N8 L1 S( b3 K4 R8 s/ v
counter增加,counter=1344* r |* e& [& ^& a$ N; U, n# o
counter<3328
% x0 j9 C: }8 I, {( p4 k2 Y7 u3 RAframe=05
5 }4 V2 C( ]! @4 X3 Ecounter>=1024" J( P# k; ~) Q1 I* o
第1次(多重)踢击在 tick 4已完成,counter不需要rolled back到0
" O' \- B6 C$ i" U0 }: @' n# N- a第2次踢击继续
% V4 K, ]! P* B, o+ [8 w$ \" R0 ~* K.% r b$ r9 j+ S$ c
.
/ i, o, i4 X6 R3 s* g., ]: e2 X0 o" F
.
& S0 l' r% P( K oGame tick 10
5 {. e8 I0 H; e/ j6 k% {) ]% s4 Lcounter增加,counter=31366 v: H9 F2 m! D# A
counter<33289 T$ m/ [/ R- P" w( T% O% N6 x
Aframe=12 ( v7 O' u+ |) \; i+ O) h
counter>=1024, S- P! X+ W$ d
第1次(多重)踢击在 tick 4已完成,counter不需要rolled back到0
: v9 k. u5 V+ o6 @$ o第2次踢击继续
; d* r3 d& l; f4 ?/ d& f* p
0 o: ^6 V. c( m1 L6 n9 fGame tick 11
/ e0 G$ v! i/ Z, @counter增加,counter=3584$ H- V e% i8 B# g. v
counter>=3328
1 y% i- Q' b: X+ i: mAframe=14 # B, \* ]( X1 w, A3 X
counter>=10242 Z9 Z( Y% U4 j" | C" n% |! ^' l
整个踢击结束,寻找新的动作,counter重新计数,下一个动作从这个tick开始。 G3 G1 g$ s' K8 k0 O, i# U1 H/ u
3 `% Y8 b& W$ m: d2 W, {6 B6 _, t( E
$ t& p Y9 `$ a' c( ]可见Initial Kicks从tick 4到tick 10共7ticks,即7Fpa。7 N1 x L! }7 |
所以Dtalon的极速上限为7/3/3/3/3/3 Fpa。
. V8 N' L: v0 k; t; H9 Q+ L0 Y/ T/ p ]. t% C
$ ~6 z3 _! D, v! s8 g如果你是从头开始看到这里的话,应该有些明白了吧:)。9 ]3 e) P0 K" B3 [7 T
要是连续2次Dtalon 2kick,这2次之间的下一个动作从这个tick开始怎么理解呢?看下面这个例子。
6 N% M# q; H7 {- Q% R3 w连续2次Dtalon 2kick 极速3/7
) l' X. a) l) e9 J! H& x% c/ v9 G- w; \2 E
代码:
6 o) W6 r0 t( ?
I9 b! G1 P n+ {# Z/ n/ n& E# u动作开始" R2 m6 |: C+ l8 S4 M% g
Game tick 1
' e; y& S' C. D. |2 g; [0 T$ Q! }counter增加,counter=448
& z' I* b. h8 pcounter<3328# F" U1 U6 j1 Z) f. y/ F) S7 j
Aframe=01 $ f% {9 h) S9 r! f1 s+ V
counter<1024
8 u* s f, `% u
- b+ m4 m9 Z/ ~$ h4 X# Z) fGame tick 2) H9 Y2 c) E. i5 A
counter增加,counter=896
+ q2 T* z! P( \- m+ U$ W: Mcounter<3328 ) a& v7 X9 c& m, L S
Aframe=03
# ?/ [5 {" t5 C3 [& ?( N% P4 hcounter<1024
/ }1 p5 H, a r8 L O' M& y
3 I% h5 p2 ^* u6 ~5 L. oGame tick 3
- H0 w; U, c! i8 k9 P7 B! kcounter增加,counter=1344; b& Z. u. [- C5 i. ~( q
counter<3328/ [! B' j- s) m6 T$ h9 B
Aframe=05 3 O6 D- x1 N) a7 p+ A9 N% [3 P8 X$ l
counter>=1024
: e% y d. o! V8 v$ n第1次(多重)踢击结束,寻找下一个动作# p1 Q3 O9 j2 R/ A H8 O; N0 z8 r
counter回复到0# D8 m2 Q# h M4 K
7 \+ W" f. l8 S+ l. S% AGame tick 4* [6 u* N4 ]! N4 `
counter增加,counter=448
0 g' E" @. M7 b& j. x/ Ucounter<3328. q7 B8 n7 k ]# `. [/ q- f
Aframe=01 ; P* _, P4 m) O$ ]; |" x
counter<1024
i) ]+ C2 [1 D+ w9 O5 D第2次踢击开始' B) M2 Y3 Q+ z- Q
2 \9 U% e2 Y |* ?: @* Z0 [
Game tick 5- [2 l. N# E5 C6 i1 Y
counter增加,counter=896
3 U; K! U; t1 {, ?" tcounter<3328 # _2 n# V4 [: t D3 \* a' W
Aframe=03
* J6 ^, ]6 k' g" Zcounter<1024. m: J4 m0 w' R- u/ T+ N2 {
' A/ p( ~" p- `" zGame tick 6
: x1 a7 a- U; U* a: v7 J jcounter增加,counter=1344
: z C; n6 x) Ocounter<3328
& l! A( n0 P8 X5 a" t4 |9 RAframe=05 & E$ J& ^) o4 d' F) T% I
counter>=1024
- N3 \# i m; t% A! \第1次(多重)踢击在 tick 4已完成,counter不需要rolled back到0
. X) F. G% K( k, }9 j第2次踢击继续
7 Q- D- q2 K2 o7 z9 F4 y$ v0 E./ B; [ E8 {+ u& p/ S+ }5 @
., T: X( s& l7 \& g$ B+ m* z# v
.0 q4 b: Q# ^+ M+ w' j
.) l! c. s, I' K1 j3 k5 W4 s. s
Game tick 10
8 F' f9 C. \" E/ k# _counter增加,counter=3136/ H7 U2 ~. P6 d* H+ H
counter<3328
- |! [' f6 |( ~1 C% UAframe=12
: l1 l0 n5 ~; V9 Q, f7 wcounter>=1024% z3 \( S* y, A) u9 V& {8 Y; A& m
第1次(多重)踢击在 tick 4已完成,counter不需要rolled back到0
4 `6 _- F& a# f" `3 }第2次踢击继续6 A/ C, ?8 h R+ m8 n" A& x# Y
# g& o+ F; O" fGame tick 11
: I' ~3 P' ]& T/ s) I: _2 k3 ^counter增加,counter=3584
( T9 O; |7 [2 u7 S( o1 N2 Xcounter>=33289 a2 D6 d2 Q. I2 v9 C
Aframe=14 2 U& q u% H5 s, T. m8 |
counter>=10240 E: S1 W# h% W
第1次Dtalon结束,找到第2次Dtalon的动作,counter重新计数回复到0,第2次Dtalon从这个tick开始。2 T3 L9 D7 B- Y8 s
+ t5 p3 T n; {
6 F* l& Z3 ], s. b9 Y9 o/ MGame tick 11
6 u! D8 o0 { n# u4 y$ zcounter增加,counter=448. E# G$ o/ ]8 @2 ^# _( O( S& A }
counter<3328
2 r, O! @6 P: LAframe=01 9 M& u) D4 d# ]; V# t
counter<1024
* y( e; R1 {& A- |+ u% ?7 g, g: T7 F2 R2 O7 `0 S8 E1 i2 D- S
Game tick 120 t6 I8 U8 J G5 k6 j9 B$ h
counter增加,counter=896/ W7 `4 K: t* _: H
counter<3328
- `- ~2 D0 h" [+ z1 f* a IAframe=03 ! E- r1 r/ V; z0 t$ K
counter<1024
# H! T! c! Q# _; I9 K" u! w" }) e# b. l1 x
Game tick 13: R* ?- f' o; d# J
counter增加,counter=13446 M6 `& ^% f+ t3 o
counter<3328
' q6 G, a2 T, N# c8 R. w/ z d# }Aframe=05 3 x4 E8 d( H: Z( N# V
counter>=1024' K& w& M. V) [! E V* U
第1次(多重)踢击结束,寻找下一个动作* r2 p0 t; c- L5 m
counter回复到0
+ }4 J" f2 _* s7 B( l) n' r1 C. V0 Z$ a4 `$ Z8 l- y8 f5 G
Game tick 14
9 \! T) m# S- ]% U) ?1 Icounter增加,counter=448/ O" z/ F8 U7 c% B$ R
counter<33282 r9 o0 c8 d2 ]3 Z3 F0 t4 D2 @
Aframe=01
2 o; v, E& M. U; A+ d% Wcounter<1024 w7 j6 f" z. ^' z5 q3 Q6 G. `6 d
第2次踢击开始4 C* a- b9 s F; y1 K8 M9 D
" T. Y( c+ g: p
Game tick 15# r* d, n2 e$ V: p, b
counter增加,counter=896
: P0 F7 E9 j; Rcounter<3328 & V. _5 k* d9 s! w& U* I+ H
Aframe=03 ) B' D+ J: P* y- E
counter<10244 b+ ], S q" y# g( f# q( H* T0 e
1 r5 b' j! F% w9 Z2 H
Game tick 16
( C( I& @# P5 }; h4 t8 jcounter增加,counter=1344
+ R- [1 A! J G7 k3 Dcounter<3328& G* B9 U1 U. p2 V" S1 u" J
Aframe=05 3 E: w5 \' b0 S) g/ w* ~1 n
counter>=1024
: Y) S' p7 J' i8 B. O% o8 d第1次(多重)踢击在 tick 13已完成,counter不需要rolled back到0 X& D) A5 F* R; \ A8 J( @
第2次踢击继续
; R) }3 i z, C) k7 T) B6 t.
! k) a" ]7 o" z" }) E% A3 V o( a.
! J1 ]. W' ]' ~* L* W! [.0 p; g: \; x) H3 N: u6 e8 z$ S
.
$ n1 [, I. q8 FGame tick 20
$ d2 a! h$ |7 F$ `counter增加,counter=31363 @( u. x6 H( X4 R
counter<3328 {6 n, _6 F+ E. H: M% ?+ ?
Aframe=12
7 e0 ^, y) [1 `" m" m9 icounter>=10241 s4 @3 ~6 S( z5 k @# I5 E
第1次(多重)踢击在 tick 13已完成,counter不需要rolled back到0
8 r3 p( e, |( K+ j( j第2次踢击继续0 z/ W9 }* S4 `$ M3 I; H- l
1 P6 t n8 ?8 A, m: |
Game tick 211 b3 L0 u; t0 E, n: b" R9 u
counter增加,counter=3584
5 M& F5 i) f; h8 v9 kcounter>=3328* g& v n( s' Z9 a
Aframe=14 * K/ z; V9 ~- f* M8 E4 M/ L' D6 c
counter>=1024
9 W# o2 Z; r9 O# U/ M7 B. B第2次Dtalon结束,寻找下一个动作,counter重新计数,下一个动作从这个tick开始。* D1 p. I- B2 B1 K
# v/ Z$ z, T s; b; Z5 i; |
1 T4 Q6 o4 v P0 G( h9 l即第1次Dtalon3 }; _& b, ~6 ~* J6 w8 n$ O p9 E
从tick 1到tick 3,共3ticks 即3fpa。3 _9 ~" a r" p- x! l
从tick 4到tick 10,共7ticks 即7fpa。2 ~* m- A! q" k4 ?, q
: M* Q& l; E1 H第2次Dtalon5 E; c2 Y4 v6 r$ T# S" y9 T1 V
从tick 11到tick 13,共3ticks 即3fpa。7 t; [, u _! O3 l' C
从tick 14到tick 20,共7ticks 即7fpa。
) _( p$ M1 L. D3 ]* o
5 y; l2 D1 \8 e% {5 ^1 Y! K
' i- g2 q: G. {/ Z! W' d& R至于下限的问题,前面说过基本不考虑Slow的因素,SI的下限为-30,(BaseRate+SI)下限为100-30=70。5 R9 Z5 T! k* W% j3 Z/ ~/ U; ~, x
就由Dtalon的Fpa公式直接计算了,18/6/6/6/6/6。
5 S9 w4 q0 w5 Y: ?
6 Q! q& G4 Z! H: u9 mInitial Kick Frames={256*(FramePerDirection) / [AnimationSpeed*(BaseRate+SpeedIncrease)/100]}-1 8 c d) w5 u1 q- x) _3 |& j2 \
Follow-Up Kick Frames={256*(FrameDataActionFlag) / [AnimationSpeed*(BaseRate+Speed_Increase)/100]}
4 r h0 S7 u" m, q' o6 Q' _$ R. {; T/ W
AnimationSpeed = 256
?' U4 n: I# C9 C% |' D/ l" yFramePerDirection = 13
- n( M# K+ j) f- k, \9 \5 eFrameDataActionFlag = 4* T% G& J$ B, |( ^5 ?
BaseRate = 100
' \7 t5 z( B8 X( H# q0 Q) m* P2 e
6 _! D" h; K. H) y- p0 ]* @( A7 U3 C& S. c0 f' G; g6 C$ k" N- @' ?
0 ~% n) a" |5 _3 Z
DTalon Initial Kick SI Table:; h$ f! X9 a6 H
+------+-----+( _! y2 l+ z# F' [$ W, g& {
| SI | Fpa |. T1 X) |; Z% L- L" f& R& M
+------+-----+2 D( W8 [ o g- F3 S
| -30 | 18 |3 o9 X9 c; [6 P* G% M/ j; _0 y9 u+ a
| -27 | 17 |
) m- L( k* z* x4 M. o8 ?" Y% f k| -23 | 16 |& [1 j V9 ]2 ]# `1 h* T
| -18 | 15 |
) E9 C* k$ i' t7 A& a2 ^0 I3 y| -13 | 14 |
3 E6 s8 S% N" n| -7 | 13 |
5 f. @+ |0 |$ {8 @% l, E! m| 0 | 12 |
% h, Q1 Z# U3 C| 9 | 11 |8 ]) b& A4 } e" c9 y u, V
| 19 | 10 |
. U- y' T7 b, G9 c| 31 | 9 |
- A0 Z+ D: C& D3 k| 45 | 8 |& ]+ Q2 y0 r0 S6 n+ m6 w5 ?/ @
| 63 | 7 |/ F; B$ b1 O; l* L2 L9 ?# I
+------+-----+
$ I! O7 R" w5 d
! W0 l/ s/ \5 d Z( sDTalon Follow-Up Kick SI Table:
8 u/ T& I5 b- C" a7 o% H4 F+------+-----+- ~. V6 q0 v. h# X/ R0 p0 _# Q
| SI | Fpa |& I9 L# x3 W' p/ q2 P
+------+-----+
+ m4 u# f0 l" W _$ Z( K| -30 | 6 |
3 e, B% W0 ~ h7 W. `( p| -19 | 5 |
% O$ J0 P3 G; |5 z| 0 | 4 |
( n/ m3 U. d* E3 r8 h$ M| 34 | 3 |
( s2 D+ P% P2 P) @+------+-----+
' }( S' W6 ^) U2 W) m& d
2 J Y$ N# C* d# G# x8 a- E
: o8 Q* a C1 d+ h顺便举个例子:1级Bos(Attack Speed +21),拿双爪:主爪巨鹰爪(-30WSM/0IAS),副爪绿爪(0WSM/40IAS),其他装备提供20IAS,Dtalon能达到多少Fpa?$ S) t" K/ y3 J- W7 ^3 E& w0 Q3 Y1 G
5 z5 {" V. s& s1 ~4 L7 H; W
<1>不考虑C/C bug
& G8 n+ j$ M( @, WSI=Skill EIAS-WSM+EIAS 2 C- L' I8 O- s, L5 u4 c
= 21 - (-30+0)/2 + [120*20 / (120+20)], V2 ~0 C) w. F2 D2 g
= 21 + 15 + 17
3 ^. [, d5 m/ `- T0 G+ }= 53
/ r6 \4 k4 D6 T9 w/ \) [+ o能达到8/3/3/3/3……。(绿爪的IAS怎么不算在内?啊啊啊,什么?踢击技能只算主爪的IAS?答对-o-)
% V3 V- _4 q( e$ j" _" O# ?* ^& b; E: j( Q! e/ w; k' ~
<2>考虑C/C bug A- E3 v6 Z& ]* ?% U
SI=Skill EIAS-WSM+EIAS 0 C0 z+ @, ` X; p! t1 D2 m0 M
= 21 -[(-30+0)/2 +(-30-0)] + [120*20 / (120+20)]3 @- t y4 C4 i) X: p7 |3 M5 v2 f
= 21 + 45 + 17
8 F0 `: h+ i3 C8 Y= 83' g1 j1 U5 B( [3 i/ L
能达到7/3/3/3……急速。4 y0 f+ _1 e( v
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※, T$ U' d2 [+ g# y7 {
0 d' x/ u( `3 m* `7 Q$ k: D: F
& n7 M+ M. i- S( S7 T+ j/ k1 }+ ?2 |" M3 z+ @; P
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※0 w3 |6 g& d, V# b6 T0 o+ J0 y
到这里这个帖子算是结束了,其实举一反三的话,我们还可以计算其他动作的帧数。
6 K/ }# l# q4 N: i
: k" m/ I9 |8 N! v; ]4 J- h0 sSpell Casting:施法动作
4 J6 l2 d& }+ ^9 D' xAsn的施法动作有Psychic Hammer(心灵战锤),Cloak of Shadows(魔影斗篷)和Mindblast(精神爆震),IAS, WSM和BoS对他们的速度都没有影响,FCR决定了施展他们的快慢。
: Y7 v4 D" Q9 t# I4 u1 X+ k( e$ }% m) A7 o/ @
一个非常有趣的技能就是Dragon Flight(飞龙在天),FCR决定了它的初始cast速度,传送到目标面前后的踢击动作则取决于Asn的IAS、WSM和BOS等这些EIAS特性(即SI),HOHO,完美的结合。( d% T0 C! h/ U! T: v; C9 {
- R1 S( {+ @/ w
再顺便说说Teleport(瞬移)吧,现在已经不是Sor的专利了。假设Asn的Cast Rate Frames为9帧,从A点TP到B点,那这9帧的动作是在哪里完成?A点全部、B点全部、A→B整个过程?
6 _, c( l* k) U' v答案是A→B整个过程(上面的DF也是如此),以前一直有存疑,这次终于了解了,施法动作和攻击动作的原理是一样的,算是拨乱反正吧。
& e7 Z" r8 Q6 u* A! o L5 X! l% y
9 _ M5 _/ T* H1 |* iEFCR=Effective Faster Cast Rate:有效FCR
. q( {: k, L) hFCR=Faster Cast Rate:快速施法速度0 U4 {0 y+ s, A6 e8 c$ h: ~
EFCR = [(120 * FCR)/(120 + FCR)]
, M9 A! g7 F9 e( V5 ?相应的,EFCR也可转换为FCR:FCR = (120 * EFCR)/(120-EFCR)
. i$ j) ~5 T0 Q+ \! B! O/ x+ Y& z! D, K5 U; P3 g
Asn施法动作的各项参量及公式
' b5 F1 @3 m8 t- O l: ~- v( ~Cast Rate Frames = {256*(FramePerDirection) / [AnimationSpeed*(BaseRate+EFCR)/100]}-1 2 N) c# \- t% {/ Q4 v, R. h
AnimationSpeed = 256
9 \9 x5 T; H1 z$ F2 sFramePerDirection = 17* k9 a/ U1 O1 j4 H! Z+ \
BaseRate = 100' f8 w4 D" e% H4 |, n4 i8 j* Z
1 [: X/ p1 J% P7 Y/ ]# h
& G; V6 w D+ E6 i+ h* z' z/ l3 S r F8 i+ ~: p9 }# m4 E% Q
+-----+------+
) K; q. C0 @+ J, F7 }| FCR |Frames|: J( C; o0 x. r; w7 D: {) m) U
+-----+------++ p: K# B& y: N* G, A5 I }
| 0 | 16 |
9 V& S: E$ n- L& D" P| 8 | 15 |: C- T9 z( b) z; w; B# h' Z
| 16 | 14 |7 Q8 \* |. q( Y r% C( N3 d
| 27 | 13 |& O" o3 o# ?( K2 g$ ^
| 42 | 12 |) L" N+ l C' ?5 K* p
| 65 | 11 |+ ]" H2 [0 l& _" r# e- T
| 102 | 10 |& ^- b) R5 X" }0 X: n
| 174 | 9 |- ^( |% z! J( n W( O- H/ P) o( u
+-----+------+5 ^' A. D0 b$ B' B7 Q; R+ B
) M v7 n9 H! }
l9 W7 b& T3 [ X$ R& k
! d1 a- U- Z+ ~/ F; \
: q2 U1 u. f* ]0 a$ S" d( ]/ [Hit Recovery(打击恢复)和Blocking(格挡动作): I% {8 w7 b2 U5 j
和施法动作类似。
! M/ X& _$ T: J! @6 c; f5 Q) w" E1 h9 ~2 [
EFCR=Effective Faster Hit Recovery:有效FHR6 E% t7 y; `* `4 \7 N: | b' |+ F. _2 p
FHR=Faster Hit Recovery:快速打击恢复6 O7 B8 i) z& D1 F& [
EFHR = [(120 * FHR)/(120 + FHR)]
7 ~" F4 I+ b; e
# ?$ ~7 \" Q$ |8 TAsn打击恢复的各项参量及公式. J- J. _8 i: n2 v% {2 K) [' L! N9 V
Hit Recovery Frames = {256*(FramePerDirection) / [AnimationSpeed*(BaseRate+EFHR)/100]}-1
1 K# F$ V6 F2 s" H9 F2 E0 q( ?4 pAnimationSpeed = 256
9 }0 @2 f: j @1 H8 f/ LFramePerDirection = 5
; D9 j# o1 B& j5 \) ZBase = 503 `% d8 ]3 F. L; b% M! O B$ E h
+ y0 h1 B* s0 ^* t# ?
2 d$ }- f7 [& B
. R) F$ ?; U1 _) ]- y. l+-----+------+* X3 e# E% b4 a, n9 d
| FHR |Frames|9 N4 [# G) R4 C% m% M, F
+-----+------+
% A3 j5 }) W& d9 b/ m8 R. [4 a% ]( ^| 0 | 9 | E0 H* J4 H+ J7 t2 Z5 x' {
| 7 | 8 |& {2 d; R W! L, e+ C
| 15 | 7 |
8 e" f! a1 x/ s4 u: d* h9 y) r| 27 | 6 |
% Z9 `4 O1 N) T% J$ z| 48 | 5 |5 Q1 J& F; \ ^7 J9 q. N. T& _
| 86 | 4 |' |% ~! v; {( m' ^. K6 f2 i
| 200 | 3 |
4 a) |; |$ G. w- t8 I1 H; `+-----+------+
3 r* T6 ~) J/ i q. d
$ v7 U7 P$ t- \% | Y0 _& a T2 g" A. v& F0 _
" U: {0 `& C2 [( `; }& VEFBR=Effective Faster Block Rate:有效FBR( e* U& @: M# q, U) @1 D
FBR=Faster Block Rate:快速格挡速度& W& O- c1 q* K, R7 m
EFBR = [(120 * FBR)/(120 + FBR)]+ Skill Bonus' M4 w* Y! a2 M3 c0 N5 i
) `+ S6 {1 z3 W9 o: S! q4 h+ L- `Asn快速格挡的各项参量及公式
& F3 `( C: u: Z3 B$ O- k$ ]7 fBlock Rate Frames = {256*(FramePerDirection) / [AnimationSpeed*(BaseRate+EFBR)/100]}-1 . X |* {! m( K3 k, L7 p6 e# \4 o. ^) x
AnimationSpeed = 256% t* e0 a& X, w
FramePerDirection = 3. C& O6 e1 a* f7 ~9 v. P( ~3 g
Base = 50
2 ?1 X% X1 P3 c& L/ V1 e3 ~* A8 G5 K/ n) H5 C9 s6 R
, M( {1 Q% r* _: ~$ n5 O- [
) c2 Y/ G4 I; X; E' J+-----+------+
' p$ H/ O, M7 m/ p5 W. P4 k| FBR |Frames|5 Y/ ?: @$ D. N# i
+-----+------+
' S. M( M) |' C| 0 | 5 |# R/ a/ Y& ^4 p' o9 ]7 s( n
| 13 | 4 |
1 I* G$ d+ ^0 Z2 B+ r| 32 | 3 |0 @$ p ]( V `3 W5 s( x$ [
| 86 | 2 |" f1 I, h# b- n# N" ~+ k' v: z
| 600 | 1 |
' Q- ~. Y. A( ]& l, _. h+-----+------+
3 ~. Q) j+ ~) y% z' @" u5 G- S7 h; d9 d: V
* o0 A2 y/ H$ b9 q, x- ]2 d! T
2 C$ ^4 Q T6 w$ z7 r8 @; M& e
收工。
2 b6 M: C& X% O$ n* E0 o, M※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
. ?1 _" U p0 h0 T |
|