物理攻撃速度計算

Last-modified: 2024-03-12 (火) 23:58:54

 ここではDiablo2の物理攻撃及び、アサシンの罠設置・アマゾンの特殊回避のモーションフレーム計算について解説する。


 少し話は逸れるが、小学生の時に習った「速度算」という物を思い出してほしい。
 「1秒間に10mの速さで走れるカール君は、100mを何秒で走り切るでしょう?」という感じのアレである。この問題の答えは当然10秒であるが、もし絶好調で1秒間に15m走れるようになれば100mを約6.6秒で走れるし、反対に絶不調で1秒間に5mしか走れなくなれば20秒もかかるようになってしまう。

 話をDiablo2に戻す。
 実はDiablo2のモーションフレーム計算も、これとやっていることは全く一緒である。若干の例外があったり、EIASだのVIncだのといった英単語が頻出して最初のうちは戸惑うだろうが、一度仕組みがわかってしまえば自力で計算できるようになるし、海外の計算サイトを使うのではなくExcelブックに数式を組み込んで自分好みの自動計算機を作れるようにもなるだろう。

諸注意

  • 各種計算において、[]内の計算結果は小数点以下切り捨て、【】内の計算結果は小数点以下切り上げになります。

基本的な流れ

1.キャラクタークラスと装備中の武器クラスから、基本となるモーションフレームの値を求める。
2.武器のWSM、装備・スキルIASから「EIAS」を算出する。
3.攻撃手段とEIASから「VInc」を算出する。
4.「【( 256 × 基礎フレーム ) ÷ [ 256 × VInc ÷ 100 ] 】」の計算を行った後、そこから1を引く。
5.(アマゾン・ソーサレス限定)「スターティングフレーム補正」が設定されている場合、さらにその分だけ引く。

手順1.基本モーションフレームの算出

 mpq解析によって得られたモーションフレーム一覧がまとめられたサイトがいくつか存在する。ここではBasin Wikiの「Animation」のページに準拠して解説する。
 先述のページを見ると、こんな感じの表が貼りつけられているが、これはどのように読み取ればよいのか。

CodeModeWclassFramesPer
Direction
Animation
Speed
Starting
Frame
ActionFlag
Frames
AIS2XBW812804
AITW1HS82560
AIS3XBW102560
AIGHBOW52560
AITWHT182560
  • 「Code」
    「誰が行っているか」を示す。
    PCだけでなくモンスターの物も含まれているが、ここではPCサイドのみ挙げる。
    • AI…アサシン
    • AM…アマゾン
    • BA…バーバリアン
    • DZ…ドルイド
    • TG…人熊
    • 40…人狼
    • NE…ネクロマンサー
    • PA…パラディン
    • SO…ソーサレス
  • 「Mode」
    攻撃手段を示す。色々載っているが、ここでは「通常攻撃を示す『A1&A2』」「投擲攻撃を示す『TH』」「物理攻撃に割り振られていることがある(いないことも多々ある)『S1~S4』」のみ見ればよい。
    なお、後述する例外を除き、A1とA2は同じ値となっている。
  • 「Wclass」
    装備中の武器を示す。略称は下記の通り。
    • HTH…「Hand to Hand」の略。素手。
    • HT1…「Hand to Hand 1」の略。アサシン専用爪。
    • 1HS…「One Hand Swing」の略。片手持ちで振る武器。ダガー、投げナイフ、ジャベリン以外の片手持ちの武器が該当する。
    • 2HS…「Two Hand Swing」の略。両手持ちで振る武器。両手剣。
    • 1HT…「One Hand Thrust」の略。片手持ちで突く武器。ダガー、投げナイフ&ジャベリンの近接物理攻撃が該当する。
    • 2HT…「Two Hand Thrust」の略。両手持ちで突く武器。槍。
    • STF…「Staff」の略。両手剣以外の両手持ち武器。両手ハンマー、両手斧、杖、ポールアームが該当する。
    • BOW…「Bow」の略。弓。
    • XBW…「Crossbow」の略。クロスボウ。
    • 下記は馬場の二刀流時のみ該当する。
      • 1SS…左右両方の手に1HSの武器を装備している状態。
      • 1JT…左右両方の手に1HTの武器を装備している状態。
      • 1ST…右手に1HS、左手に1HTの武器を装備している状態。
      • 1JS…右手に1HT、左手に1HSの武器を装備している状態。
  • 「FramesPerDirection」
    攻撃モーション全体の基礎フレーム。内部的には256分率で計算されている。
    これに256を乗算した値が冒頭の速度算の例における「距離」に当たる。
  • 「AnimationSpeed」
    攻撃モーションのアニメーションの進行速度。
    基本的には256が入り、これに後述する「( VInc ÷ 100 )」を乗算した値が冒頭の速度算の例における「速度」に当たる。
    ただし一部の攻撃において例外が発生している。それに関しては後述。
  • 「StartingFrame」
    スターティングフレーム補正。
    アマゾンとソーサレスの近接物理攻撃に設定されている値で、この値の分だけ開始フレームが早くなる。その結果攻撃モーション完了までに要するフレームが短縮される。ただしロールバックスキルにおいては初段の攻撃にのみかかる。
  • 「ActionFlagFlames」
    攻撃判定が発生するフレーム。
    後述する「ロールバック・スキル」において、最終段一つ手前までのモーションフレーム算出の際に使用する。
    ちなみに攻撃判定発生フレームは「【(256 × ActionFlagFlames ) ÷ [ 256 × VInc ÷ 100 ] 】 - スターティングフレーム補正 」という計算式で算出できる。

手順2.EIASの算出

 スキルIAS、装備IAS、武器のベース速度によって求められた「有効的な攻撃速度増加」の事を「Effective Increased Attack Speed(EIAS)」と呼ぶ。
 EIASの計算方法は下記の通り。

EIAS = スキルIAS + 装備IAS(逓減計算後の値) - WSM - 各種スロウ効果

  • 装備IAS
    武器や防具に付与されたIncreased Attack Speedが該当する。
    ただし、装備IASは「[ ( 120 × 装備IAS ) ÷ ( 120 + 装備IAS ) ]」によって得られる値XがスキルIASと等価である。(→EIAS・装備IAS換算早見表
    また、武器に付いているIASは、その武器を使用した攻撃にのみ各種計算式に反映させること。例えば二刀流時に左手に装備した武器のIASが右手の攻撃の速度を早めることはない。
  • WSM
    全ての武器には「ベース速度(Weapon Speed Modifier、略称「WSM」)」が設定されている。この値はベース武器一覧で確認可能。
    後述するEIAS/VIncの関係上、この値が小さい程扱いやすい武器である(=攻撃モーションが早い)事を示している。大きいとその逆である。
  • 各種スロウ効果
    DecrepifySlows TargetHoly Freeze等の減速効果が該当する。スキルIASと等価。
    効果量は下表の合計で、各項目は別枠扱いなので併用可能。
    ただしDecrepify以外の効果は各種条件(対象、難易度等)に応じて上限が変動する。詳細は各項目を参照。

<各種スロウ効果>

スキル・状態異常低下量上限
Decrepify50
Holy Freeze50
凍傷効果50
Slows Target90

手順3.VIncの算出

 スキル定数やEIAS等から求められた「攻撃速度上昇/減少度」のことを「VInc(「Velocity Increasement」の略)」と呼ぶ。
 VIncは100を基準値として、1増減する毎に攻撃速度が1%ずつ加速/減速していく。
 VIncの計算方法は下記の通り。

VInc = 100 + スキル定数 + EIAS

スキル定数…一部のスキルにはボーナスもしくはペナルティが加算される。

・シークエンス・スキル群…-30 (※Double Swingは除く)

・馬場のDouble Swing…+20

・朝のDragon Tail…-40

  • VIncにはボトム15&キャップ175の制限がかかっている。
    これは攻撃速度低下効果は-85%、攻撃速度上昇効果は+75%で限界に達することを意味する。よって、VIncが175を超過するようにEIASを稼いでも意味が無い。
  • また、VIncは必ずしもキャップまで稼ぐ必要はない。これは用いる攻撃手段によっては、キャップよりも手前で最速ブレイクポイントに到達するためである。

手順4&5.計算結果

 ここまでわかれば後は実際に計算するだけである。
 注意点として、「分子と分母で256が共通している場合、通分した方が計算が楽じゃね?」と思われるかもしれないが、これはNGである。これは内部カウントでは0~255までを「1」、256~511までを「2」…という風にカウントしているため。そのため通分すると計算結果が1ずれてしまう。

計算例1:アマゾンがLycander's Flankのみを装備して通常攻撃する際のモーションフレームは?

 まずは「Code」「Mode」「Wclass」を求める。
 Codeはアマゾンなので「AM」、Modeは通常攻撃なので「A1」、Wclassは槍なので「2HT」となる。これをBasin Wikiで検索すると、

CodeModeWclassFramesPer
Direction
Animation
Speed
Starting
Frame
ActionFlag
Frames
AMA12HT18256211

 となる。

 次にEIAS/VIncの算出。
 Lycander's FlankのWSMは20、さらに装備IASが30%付いている。スキルIASはなし、スロウ効果は受けていない。
 攻撃手段は通常攻撃なので、VIncへのボーナス/ペナルティはなし。
 よって、

  • 装備IASの逓減計算…[ ( 120 × 30 ) ÷ ( 120 + 30 ) ]= [ 3600 ÷ 150 ] = 24
  • EIAS…24 - 20 = 4
  • VInc…100 + 4 = 104

 となる。

 最後に全体フレームの算出。
 【 ( 256 × 18 ) ÷ [ 256 × 104 ÷ 100 ] 】 = 【 4608 ÷ 266 】 = 17.32…→切り上げで18、
 最後に1&スターティングフレーム補正の計3を引いて15。

 以上より、アマゾンがLycander's Flankのみを装備して通常攻撃する際のモーションフレームは15フレームとなる。

例外

 上記の物理攻撃のモーションフレーム計算式は、通常攻撃かスキルかを問わず大半の物が当てはまるが、下記に挙げる物は計算式が異なっていたり、アニメーションの進行速度が変動するなどしている。

アマゾンの特殊回避

 DodgeAvoidEvadeの3種の特殊回避が該当する。
 これらの特殊回避のモーションもVincの影響を受けて高速化/鈍化する。ただしDecrepifyのスロウ効果は適用されない。

WclassCodeFramesPer
Direction
Animation
Speed
Starting
Frame
ActionFlag
Frames
特殊回避AMS1○○○925602

アサシン専用爪

 まず、アサシンの爪においては、アニメーション進行速度の基本値が256ではなく208になっている。
 また、プライマリー側の通常攻撃の際、敵の大きさによってA1アニメーションとA2アニメーションのどちらを用いるかが変わり、それに応じて全体のモーションフレームが変化する。具体的には下記の様になっている。

  • Size1(人間サイズより小さい敵)…A1
  • Size2(人間サイズと同程度の敵)…A1とA2の半々
  • Size3(人間サイズより大きい敵)…A2
WclassCodeFramesPer
Direction
Animation
Speed
Starting
Frame
ActionFlag
Frames
片手爪(A1)AIA1HT11120806
片手爪(A2)AIA2HT11220806

アサシンの罠設置

 各種罠の設置モーションもVIncの影響を受けて高速化/鈍化する。
 また、アニメーション進行速度の基本値が256ではなく128になっている。

WclassCodeFramesPer
Direction
Animation
Speed
Starting
Frame
ActionFlag
Frames
AIS2○○○812804

パラディンの両手剣

 これもアサシン同様に、敵の大きさによってA1アニメーションとA2アニメーションのどちらを用いるかが変わり、それに応じて全体のモーションフレームが変化する。

WclassCodeFramesPer
Direction
Animation
Speed
Starting
Frame
ActionFlag
Frames
両手剣(A1)PAA12HS1825608
両手剣(A2)PAA22HS1925608

二刀流

 馬場とアサシンは二刀流が可能だが、その際は「プライマリー側とセカンダリー側の武器とでWSMやCodeが変化する」「シークエンス・スキルに該当する攻撃スキルはこれまたWSMや計算式が変化する」といった変更がある。詳細は二刀流の記事を参照。

変身

 ヴァンパイア骨チビ等に変身すると、アニメーション進行速度や計算式が変わるためそれに応じてモーションスピードが変化する。
 このうち狼と熊に関しては戦術に大きな影響を与えるため別記事にて解説する。(→獣人形態攻撃速度計算

ロールバック・スキル

 Jab以外の連続攻撃スキルにおいては、攻撃を連続かつ高速で繰り出しているように見せるため、攻撃判定が発生した次のフレームにて、残りの攻撃モーション(※格ゲーにおける「フォロースルー」に相当する)をキャンセルして次の攻撃を繰り出し始める。この仕組みを持つスキル群を「ロールバック・スキル」と呼ぶ。
 また、その際に「攻撃モーションをどこまで巻き戻すか」を決定するのが「ロールバック率」であり、各スキルによって割合が異なっている。

ロールバック・スキルと割合

スキル名ロールバック率(%)
Fend60
Strafe50
Dragon Talon100
Fury100
Zeal100

 ロールバック率が100%でない場合、中間速の攻撃判定発生フレームは「【 攻撃判定発生フレーム × ロールバック率 】 」で算出できる。

初速、中間速、終速

 ロールバック・スキルのモーションフレーム値は、「初速、中間速、終速」に分かれている。
 初速は振り始めの1発の速度、終速は最後の1発、中間速はその間の3発の速度である。
 この記事では初速/中間速/終速、もしくは初速&中間速/終速の形で記す。
 なお、通常「○フレ××」と言う場合、○には中間速の値が入る。

  • 各攻撃のモーションフレームの速さは初速≧中間速>終速となっている。
    アマゾンとソーサレスがロールバック・スキルを使用した場合、スターティングフレーム補正が適用されるのは初段のみ。中間速・終速にはスターティングフレーム補正が働かないため、初段と中間速では2フレ程違ってくる。
    終速はそれまでの攻撃ではキャンセルされていた残りのモーションが発生するため、モーションフレームは初速&中間速とは倍ぐらい違う。

計算例2:アマゾンがLycander's Flankのみを装備してFendを実行した際のモーションフレームは?

 まずは通常攻撃の攻撃判定発生フレームと全体のモーションフレームを算出する。その結果、攻撃判定発生フレームは9フレーム目、フォロースルーは6フレーム、通常攻撃全体のモーションフレームは15フレームとなる。

  1. 入力開始から9フレ目で初段の攻撃判定発生。
  2. 9フレ目にロールバック発生&2段目の攻撃開始。中間速においてはスターティングフレーム補正(2フレーム)がかからないので、
    計算式は【 ( 9 + 2 ) × 0.6 】 = 7、よって中間速は7フレ。
  3. 最終段1つ前までは、周囲の敵に対し7フレ間隔で攻撃を行う。
  4. 最終段ではフォロースルーが発生するため、7 + 6 = 13、よって終速は13フレとなる。
  5. 以上より、Fendのモーションフレームは、「初速9、中間速7、終速13フレーム」となる。全体のモーションフレーム値は周囲の敵の数に応じて中間速の攻撃回数が可変するため省略する。

シークエンス・スキル

 スキル群のうち、「独自のアニメーション及び計算式を持ち、かつデータや計算式がソースコードに直接書かれている」ものを指す。
 計算式は下記の通りとなっている。大半のシークエンス・スキルにおいては、VIncに-30のペナルティが課されていること及び最後の「-1」がなされないことから、通常攻撃よりもモーションフレーム値が大きい(=攻撃が遅い)。

<シークエンス・スキルのモーションフレーム計算式>

【 ( 256 × 基礎フレーム ) ÷ [ 256 × VInc ÷ 100 ] 】

シークエンス・スキルに該当するスキル一覧

その他例外処理

 下記に挙げるスキル群もまた例外処理が行われている。

通常攻撃のモーションフレーム一覧表

Amazon

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
素手8131256
片手武器(振)10162256
両手剣12202256
片手武器(突)9152256
11182256
杖他12202256
6140256
クロスボウ9200256
投擲攻撃9160256
特殊回避29-256

Assassin

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
素手6110256
爪(A1プライマリー)6110208
爪(A2プライマリー)6120208
爪(セカンダリー)6120208
片手武器(振)7150256
両手剣11230256
片手武器(突)7150256
10230256
杖他9190256
7160256
クロスボウ10210256
投擲攻撃7160256
蹴り4130256
480128

※罠…各種罠設置
※○○ Strike全種は二爪流状態でもプライマリーウェポン側でしか攻撃を実行しない。

Barbarian

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
素手6120256
片手武器(プライマリー)7160256
片手武器(セカンダリー)8120256
両手剣(一刀流)8180256
9190256
杖他9190256
7150256
クロスボウ10200256
投擲攻撃8160256

※両手剣を片手半持ちした際は、片手武器用のモーションフレームを参照すること。
※通常攻撃に準ずる物理攻撃スキルは、二刀流状態でもプライマリーウェポン側でしか攻撃を実行しない。

Druid

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
素手8160256
片手武器(振)9190256
両手剣10210256
片手武器(突)8190256
9230256
杖他9170256
8160256
クロスボウ10200256
投擲攻撃8180256

Necromancer

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
素手8150256
片手武器(振)9190256
両手剣11230256
片手武器(突)9190256
10240256
杖他11200256
9180256
クロスボウ11200256
投擲攻撃10200256

Paladin

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
素手7140256
片手武器(振)7150256
両手剣(A1)8180256
両手剣(A2)8190256
片手武器(突)8170256
8200256
杖他9180256
8160256
クロスボウ10200256
投擲攻撃8160256
7120256

Sorceress

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
素手9161256
片手武器(振)12202256
両手剣14242256
片手武器(突)11192256
13232256
杖他11182256
9170256
クロスボウ11200256
投擲攻撃10200256

Werebear

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
ビンタ7120224可変
噛みつき6100208可変

※「可変」と記載されている箇所は、装備中の武器クラスやIAS、変身前のクラスといった諸々の条件に応じて変化する。人狼形態においても同様。

Werewolf

武器クラス攻撃判定
発生フレーム
基礎フレームスターティング
フレーム補正
アニメーション
進行速度
ビンタ7130256可変
噛みつき6100240可変

ブレイクポイント表の見方と活用方法

 Eth Berserker Axeで発動したRW DeathLaying of Handsを装備し、さらにSLv20 Fanaticismオーラを展開して戦う純正Zealotがいたとする。
 彼はDPSをさらに伸ばそうとしているが、現状のZealの攻撃速度を把握したうえであとどれだけ装備IASを稼ごうか考えていた。
 下表はZeal速度計算から引っ張って来たブレイクポイント表である。これを見ながら解説しようと思う。

Frames装備IAS
WSM
初速中間終速EIAS-30-20-1001020
9918-200
17-165
88-129
16-1110
-100
15-6516
7714001124
13892237
100
12167193452
66178203554
200
1125618325072
300
1037820355478109
55411326426389125
95024406086120168
8675478109152215317
447572102142200292456

 まず現在のEIASだが、装備IASはLoHの20%(EIASに変換すると17%)、スキルIASはSLv20 Fanaの35%。WSMはBerserker Axeなので[0]。よってEIAS合計は17 + 35 - 0 = 52となる。
 次に上記ブレイクポイント表にて、「縦軸がWSM[0]、横軸でEIAS52」の箇所を確認する。しかし表にはEIAS52の列はないので、52以下で最も近い列であるEIAS50の列を参照する。これが現在のZeal攻撃速度であり、現状では「5/5/9」の29フレZealであることがわかった。
 次のブレイクポイントはEIAS67における「5/5/8」の28フレだが、到達するための装備IASを計算すると、「要求EIASは67 - 35 = 32 → EIAS32を装備IASに変換すると44 → LoHの20を引いて残り24%」となる。これなら護符にHighlord's Wrath(20%)とIASジュエルを一つ防具に埋める…といった感じでなんとかなりそうである。ソウルさえいなければ腰をGoldwrapNosferatu's Coilにしてしまえるのだが…。
 しかし最速の「4/4/8」の24フレとなると要求装備IASは60%。ここまでくると装備をかき集めれば不可能ではないものの失う物も多そうだ、ということで見送ることにする。


 この様に、攻撃速度計算の仕組みを理解し、さらにブレイクポイント表を活用すれば、物理攻撃に関連した装備の最適化を行えるようになる。
 余談だが、上記ブレイクポイント一覧表の縦の列に書かれている数字は、「WSMがその値である武器を装備した状態で、あといくつ装備IASを稼げば横のEIASに到達できるか」を示している。例えばWSMが[-30]の武器を装備時かつスキルIASが0%の場合、EIAS75到達までには装備IASが72必要となる。

Resurected情報

  • Impaleのシークエンス・スキル共通のペナルティ(VInc-30)が撤廃され、D2X時代よりも攻撃速度が大幅に上昇した。
  • ロールバック・スキルのうち、Fendのロールバック率が30%に、Furyのロールバック率が70%に減少し、中間速の攻撃間隔が短縮されてDPSが上がった。
  • に変身している間に限り、VIncのキャップが250に引き上げられるようになった。