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