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