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