【Apewar】CPタイマーの数理モデル🍌🍌🍌

ApewarのCover Point(CP)で猿Aがエリア内に残り,猿Bが入退場を繰り返す状況における占領タイマーの数理モデルを扱います.扱う仕様は2026年11月5日時点のものです.🍌

推定内部処理と数理モデル

通常,ゲームは1フレームごとにタイマーをフレームレート時間(DeltaTime)ずつ更新します.「TAKING PONT IN」タイマーは7秒なので,固定フレームレートにおいて1フレームの更新量は,DeltaTimeを7で割った値になります.占領進行度を0から1まで増加する数値とすれば,

 \displaystyle \Delta p=\frac{\Delta t}{7}

となります.ここで, \Delta p は1回の更新による進行度の増加量, \Delta t はDeltaTimeです.基本的には7秒で占領が完了します.ところが,猿Aが占領エリア内に留まり,猿Bが退出すると,どういうわけか占領進行度を更新する処理が重複した状態になります.それぞれの更新処理が同じ占領進行度に対してDeltaTimeに応じた値を加算しているような挙動をします.更新処理の重複度を  k とすれば,1フレーム当たりの進行度の増加量は,次のように表せます.

 \displaystyle \Delta p=\frac{k\Delta t}{7}

したがって,占領完了までの時間は,

 \displaystyle T\simeq\frac{7}{k}

と近似できます.例えば10重なら約0.7秒で占領が完了します.占領が完了すると,進行度は0に戻ります.このとき重複した更新処理がすべて終了するのではなく,1つだけ終了し,残りは更新を続けていると仮定すると更新速度が徐々に減衰している事象を説明できます.つまり,10重だった場合は最初の占領完了で9重になり,次は9重の速度でタイマーが進行します(ここからさらに重複させない).その後も占領完了のたびに1重ずつ減少するため,スコア加算の間隔は次第に長くなります.入退室によって占領進行度を更新する処理が蓄積し,その重複度に比例して占領タイマーが加速するという仕組みで説明できます.猿Aがいないと猿Bが退室した時点で進行度がリセットされてしまうので,猿2匹が必要になります.🍌


時刻を  t ,タイマー処理の重複度を  k(t) ,占領進行度を  p(t) ,Aの累積スコアを  S(t) とします.また,Bの入退出頻度を  f(t) とします.

記号 意味 単位や量
 t 時刻 秒
 k(t) 重複度 処理数
 p(t) 占領進行度 0~1
 f(t) 入退室頻度 往復/秒
 N_{\rm in}(t) 累計処理数 処理数
 N_{\rm cap}(t) 占領完了の累計回数 回
 r(t) 占領完了頻度 回/秒

最初に,離散モデルを構成します.2つのイベントの間は  k が一定であり,進行度は

 \displaystyle\frac{dp}{dt}=\frac{k}{D}=\frac{k}{7}

を満たします.Bの出入りによって処理が追加されれば,

 \displaystyle k\longrightarrow k+1

とします.占領完了で,

 \displaystyle(p,k,S)\longrightarrow(0,k-1,S+250)

という状態遷移を行います.🍌

保存則と定常状態

占領開始後のある時刻までに新しく起動した処理数を  N_{\rm in}(t) ,占領完了によって終了した処理数を  N_{\rm cap}(t) とすると保存則が,

 \displaystyle k(t)=k(0)+N_{\rm in}(t)-N_{\rm cap}(t)

です.よって,

 \displaystyle N_{\rm cap}(t)=N_{\rm in}(t)+k(0)-k(t)

となります.両辺を  t で割って,

 \displaystyle \frac{N_{\mathrm{cap}}(t)}{t}=\frac{N_{\mathrm{in}}(t)}{t}+\frac{k(0)-k(t)}{t}

ここで,定常状態では処理数が発散しないため,

 \displaystyle \lim_{t\to\infty}\frac{k(0)-k(t)}{t}=0

入退室頻度が  f で一定とすると,

 \displaystyle \lim_{t\to\infty}\frac{N_{\mathrm{in}}(t)}{t}=f

したがって,

 \displaystyle \begin{aligned} \langle r\rangle =\lim_{t\to\infty}\frac{N_{\mathrm{cap}}(t)}{t} = f \end{aligned}

🍌

過渡状態の微分方程式

スコア加算頻度を連続量として近似します.  k 処理が進行度を毎秒  k/D 増やすので,占領完了頻度を  r\simeq k/D と近似します.処理数の流入は  f ,占領完了による流出は  k/D です.したがって,

 \displaystyle\frac{dk}{dt}= f(t)-\frac{k(t)}{D}

となります.  r(t)=k(t)/7 とおくと,

 \displaystyle \frac{dr}{dt}+\frac{r}{7}=\frac{f(t)}{7}

が得られます.🍌

一定頻度の入退室

一定の入退室頻度を  f_0 ,時刻  t=0 における処理数を  k_0 とします.

処理数の時間変化は,

 \displaystyle \frac{dk}{dt}+\frac{k}{7} =f_0

となります.この1階線形微分方程式を積分因子法で解くと,

 \displaystyle e^{t/7}\frac{dk}{dt}+\frac{k}{7}e^{t/7}=f_0e^{t/7}

 \displaystyle \frac{d}{dt}\left(ke^{t/7}\right)=f_0e^{t/7}

 \displaystyle ke^{t/7}=\int f_0e^{t/7}\,dt =7f_0e^{t/7}+C

 \displaystyle k(t)=7f_0+Ce^{-t/7}

が得られます.初期条件  k(0)=k_0 から,

 \displaystyle C=k_0-7f_0

 \displaystyle k(t)=7f_0+(k_0-7f_0)e^{-t/7}

となります.

次に,占領完了頻度  r(t) は,処理数を占領時間7秒で割った値で近似できるため, \displaystyle r(t)\simeq k(t)/7 で,先ほどの解から,

 \displaystyle r(t)=\frac{7f_0+(k_0-7f_0)e^{-t/7}}7

 \displaystyle r(t)=f_0+\left(\frac{k_0}{7}-f_0\right)e^{-t/7}

が得られます.さらに, t\to\infty では  e^{-t/7}\to0 となるため,

 \displaystyle \lim_{t\to\infty}r(t)=f_0

となります.したがって,過渡状態では初期値と定常値の差が指数関数的に減少し,定常状態ではスコア加算頻度(占領完了頻度)が入退室頻度に一致することが分かります.🍌


初期処理数が定常値  7f_0 より小さければ加速し,大きければ減速します.例えば  f_0=0.5 往復/秒なら定常処理重複数は3.5回,定常スコア増加速度は125点/秒です.

この指数関数の時定数は7秒なので,初期値と定常値の差は7秒後に約36.8%,14秒後に約13.5%,21秒後に約5.0%残ります.約21~35秒で定常値にかなり近づくと予測されます.

累積スコアの連続近似での積分は,

 \displaystyle S(t)\simeq S_0+250\left[f_0t+(k_0-7f_0)(1-e^{-t/7})\right]

です.🍌

入退室終了後の減衰

微分方程式では  k(t) は指数関数的に0へ近づきますが,実際の処理は整数です.例えば入退室をやめた瞬間に10回分の処理が残り,占領進行度が0であったとします.新しい処理は追加されないので,各占領完了のたびに10本,9本,8本……と減ります.

占領完了直前の処理数が  j なら,次の完了までにかかる時間は  D/j=7/j 秒です.

占領回数 重複処理数 占領時間
1 10 0.700秒
2 9 0.778秒
3 8 0.875秒
4 7 1.000秒
5 6 1.167秒
6 5 1.400秒
7 4 1.750秒
8 3 2.333秒
9 2 3.500秒
10 1 7.000秒

最後の10回目までの時間は,調和数を用いて,

 \displaystyle T_{\rm end}=7\sum_{j=1}^{10}\frac1j\simeq20.50\,\mathrm{s}

と求まります.🍌

【SAOFD】通信の確率過程とジャスト回避の定量評価

ソードアート・オンライン フラクチュアード デイドリーム(SAOFD)のジャスト回避(以下PD)のオンライン上での判定機構について数理モデルを構成します.

本記事の内容はリバースエンジニアリングによって得られた事実ではなく,ゲーム内の実測値をもとに一般的なゲームの内部処理と照らし合わせて推定しています.したがって,実際のゲーム内部の処理は異なる可能性はあります(特にSwitch版).
検証にはFPS制限,遅延再現,パケットのキャプチャを行っています.パケットのキャプチャのみでバイナリの解析はしていません.

1.評価対象

まず,敵が攻撃を1回行う機会を1試行と考えます.この試行には,次の4つの結果があります.

  • ヒット候補なし:エネミーの攻撃とプレイヤーのヒット候補が検出されない.
  • ジャスト回避(PD):ヒット候補が発生し,PD判定で受ける.
  • 通常回避(ND):ヒット候補が発生し,PD判定時間終了後にND判定で受ける.
  • 被弾:ヒット候補が発生し,PD・ND判定時間外で受ける.

PD発動率には2通りの意味があります.

\displaystyle P(\mathrm{PD})=\frac{\mathrm{PD成功試行数}}{\mathrm{全攻撃機会数}}

\displaystyle P(\mathrm{PD}\mid\mathrm{候補})=\frac{\mathrm{PD成功試行数}}{\mathrm{候補発生試行数}}

後者だとサーバーが低Tick状態中に攻撃がすり抜けやすいせいでPDが成立しなくなるといった効果を考えることができなくなります.本記事では,全攻撃機会を分母とするPD発動率を使います.

2.処理方式

ゲーム内の実験と経験に基づいて推定した処理方式は以下のようになります.Sはサーバー上、Cはクライアント上での処理です.

S:エネミーの攻撃生成
↓
C:攻撃生成通知をクライアントで受け取り,アニメーション再生(以降同期なし)
↓
C:回避時刻決定(誤差あり)
↓
C:入力受付 → PD開始 → 回避移動開始
C:プレイヤー位置を記録して軌跡を送信
↓
S:Outbound遅延を経て,サーバーTickで位置を採用し,軌跡を再現
↓
S:攻撃形状と再現した軌跡からヒット候補を検出
↓
C:Inbound遅延を経て,ヒット候補を受理

3.入力誤差

3.1.入力時刻

人間は毎回まったく同じタイミングでボタンを押せるわけではありません.ここでは,予測した接触タイミングからの誤差が正規分布に従うと仮定します.予測型の入力と反応型の入力があり,予測型は正規分布に従うことが知られています.ゲームを長くプレイすることでどの攻撃も予測して入力することになるわけですからこの仮定は妥当といえます.

攻撃生成を時刻0とし,その情報をクライアントが認識した時刻を t_{\rm seen},回避をしない場合の予測接触までの時間を t_{\rm ref} とおきます.入力時刻を

\displaystyle \boxed{t_{\rm input}=t_{\rm seen}+t_{\rm ref}+\mu+\sigma Z},\qquad Z\sim N(0,1)

とします.\mu は平均入力誤差, \sigma はその標準偏差です.例えば \mu=-0.050\,\mathrm{s} なら,予測した接触より平均50 ms早く入力する設定を表します. \sigma=0.050\,\mathrm{s} なら,入力タイミングには50 ms程度の標準偏差があるということです.

あなたの入力誤差がどのくらいあるかはここで測定してきでください.
fumofumobun.github.io

3.2.フレーム量子化

ゲームの処理は連続時間ではなくフレーム境界で行われます.クライアントFPSを f_c,フレーム位相を \phi_c とすると,フレーム境界は

\displaystyle t_{c,j}=\phi_c+\frac{j}{f_c}

です.物理入力が起こったフレーム番号は

\displaystyle n=\left\lfloor f_c(t_{\rm input}-\phi_c)\right\rfloor

となります.

このモデルでは,入力フレームから各処理へ進む順序を次のように設定しています.

イベント 処理フレーム
物理的な入力 n の途中
入力受付 n+1
PD開始 n+2
回避移動開始 n+3
ヒット候補を受理 h
結果を反映 h+1

60 FPSなら1フレームは約16.67 msです.したがって,PD開始と回避移動開始は同時ではなく,このモデルでは1フレームずれます.この差は後で扱う空間的な接触判定にも影響します.

攻撃生成の通知自体もInbound遅延 L_{\rm spawn}^{\downarrow} を経てフレームへ量子化されるので,その認識時刻は

\displaystyle t_{\rm seen}=\phi_c+\frac{1}{f_c}\left\lceil f_c(L_{\rm spawn}^{\downarrow}-\phi_c)\right\rceil

とします.つまり人間の入力誤差だけでなく,「攻撃の始まりをどのフレームで見たか」も試行ごとに変動します.

入力フレームの確率は,正規分布の累積分布関数(CDF) \Phi を用いて

\displaystyle P(n=j)=\Phi\!\left(\frac{t_{c,j+1}-t_{\rm seen}-t_{\rm ref}-\mu}{\sigma}\right)-\Phi\!\left(\frac{t_{c,j}-t_{\rm seen}-t_{\rm ref}-\mu}{\sigma}\right)

と書けます.これは「入力がどのフレームに入るか」の確率です.

4.回避軌跡

ここでは敵が中心から外側へ広がる衝撃波を発生させる場合を考えます.中心を原点 (0,0),プレイヤーの初期位置を (d_0,0) とします.

通常移動速度を v_m,波の外向きに対する移動方向の角度を \theta とすれば,通常移動の速度ベクトルは

\displaystyle \mathbf v_m=v_m(\cos\theta,\sin\theta)

です.\theta=0^\circ は衝撃波から外側へ逃げる方向, 90^\circ は接線方向, 180^\circ は中心に近づく方向を表します.

4.1.接触時刻

衝撃波の初期外半径を R_0,拡大速度を v_w,プレイヤーの判定半径を r_p とすると,回避しなかった場合の外縁との最初の接触時刻は

\displaystyle \sqrt{(d_0+v_m t\cos\theta)^2+(v_m t\sin\theta)^2}=R_0+r_p+v_wt

を満たします.両辺を二乗して整理すると

\displaystyle At^2+Bt+C=0

\displaystyle A=v_m^2-v_w^2

\displaystyle B=2\{d_0v_m\cos\theta-(R_0+r_p)v_w\}

\displaystyle C=d_0^2-(R_0+r_p)^2

となるので,元の距離の式を満たす最初の非負根を t_{\rm ref} とすればよいわけです.

d_0=30\,\mathrm m, R_0=1\,\mathrm m, r_p=0.35\,\mathrm m, v_w=30\,\mathrm{m/s}, v_m=9\,\mathrm{m/s} では,

移動方向 予測接触時刻
静止 0.955 s
外向き 0° 約1.364286 s
接線方向 90° 約0.998939 s
中心向き 180° 約0.734615 s

となります.

4.2.回避運動

回避移動が始まる時刻を t_{\rm move}=t_{c,n+3},その直前の位置を \mathbf x_m とすると,

\displaystyle \mathbf x_m=\mathbf x_0+\mathbf v_m t_{\rm move}

です.今回の例では回避方向を衝撃波の中心向きに固定し,回避速度の大きさを v_d=16\,\mathrm{m/s} としています.その速度ベクトルは

\displaystyle \mathbf v_d=-v_d\frac{\mathbf x_m}{\|\mathbf x_m\|}

です.回避運動の継続時間を T_d=0.5\,\mathrm{s} として,回避に置き換わる時間を

\displaystyle \ell(t)=\min\{T_d,\max(0,t-t_{\rm move})\}

と書けば,プレイヤーの位置は一つの式で

\displaystyle \boxed{\mathbf x_p(t)=\mathbf x_0+\mathbf v_m t+(\mathbf v_d-\mathbf v_m)\ell(t)}

と表せます.回避前は通常移動,回避中は中心向き16 m/s,回避終了後は通常移動に戻るという軌跡です.回避速度は通常移動速度に加算するのではなく,置き換えます.加速度は無視しています.

5.通信遅延

5.1.位置送信

プレイヤーの位置は各フレームで記録され,ある送信レートでまとめてパケットとして送られるということがキャプチャから推定できました.自環境での計測から,送信間隔の平均を66.886 ms,標準偏差を0.776 msとした小さな揺らぎを考え,送信時刻をフレーム境界に丸めています.環境によっては送信間隔の分布が異なるかもしれません.

FPSによって(特に15の倍数)送信間隔が短いフレーム数・長いフレーム数に分かれ,2状態Markov連鎖で表します.長間隔の定常確率を q,その状態相関を r とすれば

\displaystyle P(\mathrm{短}\to\mathrm{長})=q(1-r),\qquad P(\mathrm{長}\to\mathrm{長})=q+r(1-q)

です.ただし,後述の計算では,フレーム丸めした送信の小さなゆらぎを使い,このMarkov近似を重複して適用していません.

5.2.遅延の自己相関

通信遅延を毎回独立な正規乱数としてしまうと,負の遅延を取り得る上に,連続するパケットの遅延が似やすいという性質を表現できません.そこで,上りと下りのそれぞれに対数正規AR(1)過程を使います.

方向 d\in\{\uparrow,\downarrow\} に対して潜在正規系列 Y_j^d を

\displaystyle Y_{j+1}^d=\rho_dY_j^d+\sqrt{1-\rho_d^2}\,\xi_j^d,\qquad \xi_j^d\sim N(0,1)

で生成し,これを指数変換して

\displaystyle \boxed{L_j^d=\bar L_d\exp\!\left(\sqrt{\ln(1+\mathrm{CV}_d^2)}\,Y_j^d-\frac{\ln(1+\mathrm{CV}_d^2)}{2}\right)}

とします. \bar L_d は平均の片道遅延, \mathrm{CV}_d は変動係数です.定常状態で生成すれば E[L_j^d=\bar L_d] になります. \rho_d は遅延そのものではなく対数遅延の潜在系列の相関です. 対数遅延の分散を v=\ln(1+\mathrm{CV}_d^2) と書くなら,実際の遅延のラグ k の相関は

\displaystyle \operatorname{Corr}(L_j,L_{j+k})=\frac{e^{v\rho_d^{|k|}}-1}{e^v-1}

であり,一般に \rho_d^{|k|} そのものではありません.

過去に遅延が大きかったパケットの次も,ある程度大きな遅延になりやすくなります.上りと下りは独立の系列として扱います.計算例では平均遅延を上下とも5 ms,変動係数をともに0.25,相関を上り0.65,下り0.35と仮定しています.

上りパケットの到着時刻は

\displaystyle t_{\rm arrive,j}=t_{\rm send,j}+L_j^{\uparrow}

です.ただし,パケットが到着した瞬間に,衝突判定で新しい位置が使われるわけではなく,次のTickで採用されます.

6.サーバーTick

サーバーの処理が1秒間に f_s 回実行されるとすれば,Tick境界は

\displaystyle t_{s,k}=\phi_s+\frac{k}{f_s}

です.例えば30 Hzでは約33.33 msごと,15 Hzでは約66.67 msごとに処理機会が来ます.なお,30 Hzを上限とするのはサーバーからのパケット送信頻度による推定であり,SAOFDのサーバーが実際に30 Hzで動作していると確定したわけではありません.送信頻度以上のTickレートで稼働している可能性も十分にありますが,のちにわかる低Tickへの落ち込みで起こる現象がそれなりの頻度で見られることから30Hzで稼働していることは濃厚です.

Tick k までに届いた記録から,サンプル時刻が最も新しい記録 i_k を選び,

\displaystyle i_k=\mathop{\arg\max}_{i:\,t_{\rm arrive}(i)\le t_{s,k}}t_{\rm sample,i}

\displaystyle \boxed{\mathbf x_{s,k}=\mathbf x_p(t_{\rm sample,i_k})}

とします. \mathbf x_{s,k} はそのTickで採用された位置です.現在位置 \mathbf x_p(t_{s,k}) とは一般には一致しません.

これは仮定にしかすぎず,実際どうなっているかリバースエンジニアリングを行わないとわかりません.

7.ヒット検出

攻撃とプレイヤーの接触判定には離散衝突検出と連続衝突検出のいずれも使われています.片方のみをモデルに組み込むと,Tickが低下したときのすり抜け現象を正しく説明できません.

7.1.離散検出

攻撃形状を半径 r_a の円,プレイヤーを半径 r_p の円で近似すれば,そのTickで採用された位置同士の距離が

\displaystyle \boxed{\|\mathbf x_{s,k}-\mathbf x_{a,k}\|\le r_a+r_p}

を満たすとき接触候補が成立します.これは現在時刻の重なりだけを見る判定です.直前のTickと現在のTickの間ですれ違っても,現在時刻で重なっていなければ検出しません.

7.2.衝撃波の接触判定

波の外半径を R_k=R_0+v_w(t_{s,k}-t_{\rm birth}),厚みを w,中心からプレイヤー位置までの距離を d_k,プレイヤー半径を r_p とします.このとき,接触が成立する条件は

\displaystyle \boxed{d_k\le R_k+r_p\quad\land\quad R_k-w\le d_k+r_p}

です.第1条件は波の外側がプレイヤーに到達していること,第2条件は波の内側がプレイヤーを完全に通り過ぎていないことを表します.

この2つの不等式を整理すると,

\displaystyle \boxed{d_k-r_p\le R_k\le d_k+w+r_p}

となります.例えば,波の厚みを w=0.30\,\mathrm m,プレイヤー半径を r_p=0.35\,\mathrm m としたとき,

\displaystyle \boxed{d_k-0.35\le R_k\le d_k+0.65}

です.したがって,判定が成立する外半径の幅は

\displaystyle \boxed{W=w+2r_p=0.30+2(0.35)=1.00\,\mathrm m}

となります.

波の拡大速度が30 m/sのとき,静止したプレイヤーに対して衝撃波が通過する時間は

\displaystyle \boxed{T_{\rm contact}=\frac{W}{v_w}=\frac{1.00}{30}\simeq0.03333\,\mathrm s}

となり,約33.33 msです.

サーバーTickが30 Hzなら判定間隔は約33.33 msで,接触可能時間とほぼ一致します.一方,15 Hzなら判定間隔は約66.67 msとなり,接触可能時間の約2倍になります.そのため,あるTickでは衝撃波がまだプレイヤーに届いておらず,次のTickではすでに通過しているという状況が発生します.これが「衝撃波をすり抜ける」という現象の単純な説明になります.

7.3.連続検出

前Tickと現在Tickの攻撃形状の平行移動区間を調べる方法を考えます.ただし移動区間を調べるのは攻撃側だけとします.プレイヤーの位置は現在Tickで採用された \mathbf x_{s,k} に固定します.

攻撃中心の位置を \mathbf x_{a,k-1} と \mathbf x_{a,k} として,その差を

\displaystyle \mathbf u_k=\mathbf x_{a,k}-\mathbf x_{a,k-1}

とします.円板近似の場合,プレイヤーから攻撃中心の線分までの最短位置は

\displaystyle \lambda_k=\min\!\left(1,\max\!\left(0,\frac{(\mathbf x_{s,k}-\mathbf x_{a,k-1})\cdot\mathbf u_k}{\|\mathbf u_k\|^2}\right)\right)

を用いて \mathbf x_{a,k-1}+\lambda_k\mathbf u_k と書けます.したがって最短距離は

\displaystyle d_{\min,k}=\|\mathbf x_{s,k}-(\mathbf x_{a,k-1}+\lambda_k\mathbf u_k)\|

で,

\displaystyle \boxed{d_{\min,k}\le r_a+r_p}

ならヒットが成立します. \|\mathbf u_k\|=0 なら現Tickの中心距離をそのまま使います.

例として,攻撃中心が (0,0) から (2,0) mへ移動し,プレイヤーが (1,0.20) mにいるとします.攻撃半径を [tex=0.05,\mathrm m],プレイヤー半径を [tex=0.35,\mathrm m] とすれば,接触が成立する中心間距離の上限は

\displaystyle r_a+r_p=0.05+0.35=0.40,\mathrm m

です.

攻撃中心の両端からプレイヤーまでの距離は,いずれも

\displaystyle d_{\rm end}=\sqrt{1^2+0.20^2}=\sqrt{1.04}\simeq1.0198,\mathrm m

となり,0.40 mを超えるため,現在位置だけを調べる離散検出では接触しません.

一方,連続検出では攻撃中心の移動区間全体を調べるので,

\displaystyle \lambda_k=\frac{(1,0.20)\cdot(2,0)}{2^2}=\frac24=0.5

となります.最も近い攻撃中心の位置は (1,0) であり,最短距離は

\displaystyle d_{\min,k}=\sqrt{(1-1)^2+(0.20-0)^2}=0.20,\mathrm m

です.したがって,

\displaystyle \boxed{0.20\le0.40}

となり,連続検出ではヒットが成立します.

離散検出ではTick間の移動によってヒットを見逃す場合でも,連続検出では攻撃側の移動経路を調べるため,候補を検出できます.ただし,計算が重くなるのでサーバー負荷が増えます.

8.PD判定

攻撃候補が検出された最初の実行Tickを t_{\rm hit} とします.仮に連続検出で幾何学的に交わっていても,候補時刻は線分上の交点の時刻ではなく,候補を検出した実行Tickの時刻です.

候補通知のInbound遅延を L_{\rm hit}^{\downarrow} とすると,到着は

\displaystyle t_{\rm recv}=t_{\rm hit}+L_{\rm hit}^{\downarrow}

です.それをクライアントが受理するフレーム番号は

\displaystyle h=\left\lceil f_c(t_{\rm recv}-\phi_c)\right\rceil

で,実際の処理時刻は t_{c,h}=\phi_c+h/f_c です.

PDはフレーム n+2 から始まるので,PDの実効有効フレーム数を N_{\rm PD} とすると,時間条件は

\displaystyle \boxed{2\le h-n\le N_{\rm PD}+1}

です.PDを満たさなかった候補でも,NDの実効フレーム数を N_{\rm inv} として

\displaystyle \boxed{2\le h-n\le N_{\rm inv}+1}

を満たせば無敵で防げます.どちらも満たさなければ被弾になります.候補自体が存在しなければ,受理フレーム h は未定義であり,PDにもなりません.

8.1.PDの有効フレーム

判定時間はPDで110 ms,サポートディフェンス(SD Lv3)で187 ms,NDを350 msとなっています(猫シノン以外).

\displaystyle N_{\rm PD}=\lceil f_c G\rceil,\qquad N_{\rm inv}=\lceil f_cT_{\rm inv}\rceil

これにより60 FPSではPDが7フレーム,SDが12フレーム,NDが21フレームになります.

PDの実効時間は

FPS PDフレーム数 実効受付時間
36 4 約111.11 ms
37 5 約135.14 ms
38 5 約131.58 ms

となります.37 FPSで急に1フレーム増えて,38 FPSでは再び実効時間が短くなるという鋸歯状の変化です.30~40FPSでは37 FPSが局所的に長くなりますが,実ゲームの最適FPSが37とは結論づけられません.FPSによって入力遅延や他にも影響する部分があるので,総合的に判断する必要があります.

9.時間差と位置差

ローカルで見えている攻撃状態とプレイヤーの実位置から,比較用の反実仮想的な接触時刻 t_{\rm view} を定義します.サーバー側で生成された候補が物理的に到着した時刻 t_{\rm recv} との差は

\displaystyle \boxed{\Delta t_{\rm raw}=t_{\rm recv}-t_{\rm view}}

です.実際の受理フレームを使うと

\displaystyle \boxed{\Delta t_{\rm exec}=t_{c,h}-t_{\rm view}}

となります.したがって

\displaystyle \Delta t_{\rm exec}-\Delta t_{\rm raw}=t_{c,h}-t_{\rm recv}\ge0

です.つまり,通知の通信遅延だけでなく,到着してから次のフレーム処理まで待つ時間も考える必要があります.

位置のずれも同様です.ヒット候補を生んだサーバー採用位置を \mathbf x_{s,k_{\rm hit}} とすると,

\displaystyle \boxed{\Delta\mathbf x_{\rm raw}=\mathbf x_p(t_{\rm recv})-\mathbf x_{s,k_{\rm hit}}}

\displaystyle \boxed{\Delta\mathbf x_{\rm exec}=\mathbf x_p(t_{c,h})-\mathbf x_{s,k_{\rm hit}}}

です.ローカル接触がない試行では t_{\rm view} が定義できず,ヒット候補がない場合では t_{\rm recv} も定義できないことには注意してください.

10.SDの効果

SDによるPD成功率向上効果は,受付時間が110 msから187 msへ単に延びるだけ効果と,人間が広くなった判定に合わせて入力タイミングを調整する効果を区別します.

通常時の入力平均を \mu_0=-50\,\mathrm{ms} とし,固定した攻撃・移動方向・Tick・通信条件の下でSD時のPD発動率を最大にする平均を

\displaystyle \mu_*=\mathop{\arg\max}_{\mu}P(\mathrm{PD}\mid G_{\rm SD},\mu,\mathrm{固定条件})

とします.最適化された入力平均にどれだけ近づくかを適応率 \alpha として,

\displaystyle \boxed{\mu_{\rm SD}(\alpha)=\mu_0+\alpha(\mu_*-\mu_0)}

と定義します.

  • \alpha=0:SDを使っても入力平均は変えない.
  • \alpha=0.5:最適平均へ半分だけ近づく.
  • \alpha=1:最適平均に合わせる.

この \alpha はSDの効能をプレイヤーがどれだけ理解できているかという理解度とも言えます.また,入力の標準偏差 \sigma=50\,\mathrm{ms} は固定したまま,平均だけを動かします.

11.期待DPS

PDは無敵で受けるというだけでなく,その後のクリティカルによってダメージにも影響します.PDを発動できる確率をそのままDPS倍率に置き換えるのではなく,成功した試行だけで実際にバフが重なる攻撃を数えます.

素のクリティカル率を p_{\rm crit}=0.05,クリティカルダメージ倍率を M=1 とし,クリティカル補正前の1ヒットのダメージを D_j とすると,クリティカル時のダメージは

\displaystyle D_j^{\rm crit}=D_j(1+M)

となります.したがって,通常時の期待ダメージは

\displaystyle \boxed{E[ D_j^{\rm normal} ] =D_j(1+p_{\rm crit}M)}

です.

11.1.攻撃時刻

ジャスト回避時確定クリティカルの効果時間は6秒(タイマーはローカル進行)ですが,回避時間(例えば0.5秒)の間は攻撃できないので,回避終了後の5.5秒間に対して,相対的に攻撃時刻を設定します.

回避移動開始時刻を t_{\rm move},回避継続時間を [tex=0.5,\mathrm s] とすると,回避終了時刻は

 \displaystyle t_{\rm end}=t_{\rm move}+T_d

です.

ここからの経過時間を \tau と定義すると,攻撃可能な時間帯は

 \displaystyle \boxed{0\le\tau<5.5}

となります.

攻撃間隔を0.75秒に固定し,回避終了から0.75秒後に最初の攻撃を行うと仮定します.このとき攻撃時刻は

 \displaystyle \boxed{\tau_j=0.75j\qquad(j=1,2,\ldots,7)}

であり,

 \displaystyle \tau_j=0.75,\ 1.50,\ 2.25,\ 3.00,\ 3.75,\ 4.50,\ 5.25\ \mathrm s

となります.

したがって,各攻撃の絶対時刻は

 \displaystyle \boxed{t_j^{\rm atk}=t_{\rm end}+\tau_j}

です.

11.2.追加ダメージ

確定クリティカル時のダメージは (1+M),通常時の期待ダメージは (1+p_{\rm crit}M) なので,1ヒット当たりの追加期待ダメージは

 \displaystyle \Delta D_j=D_jM(1-p_{\rm crit})

となります.

全攻撃機会当たりのPD発動率を p_{\rm PD} とすると,7回の攻撃に対する追加期待ダメージは

 \displaystyle \boxed{\mathbb E[D_{\rm extra}]=p_{\rm PD}\sum_{j=1}^{7}D_jM(1-p_{\rm crit})}

となります.

評価時間は,回避中の0.5秒と回避後の5.5秒を合わせた6秒間とします.したがって,期待DPSは

 \displaystyle \boxed{\mathbb E[\mathrm{DPS}]=\frac{\displaystyle\sum_{j=1}^{7}D_j(1+p_{\rm crit}M)+p_{\rm PD}\displaystyle\sum_{j=1}^{7}D_jM(1-p_{\rm crit})}{6.0}}

です.

例えば,すべての攻撃について D_j=100 とすれば,確定クリティカルバフがない場合の基礎期待DPSは

 \displaystyle \frac{7\times100(1+0.05\times1)}6=122.5

となります.

一方,PDが成功した場合のDPSは

 \displaystyle \frac{7\times100(1+1)}6\simeq233.33

です.

したがって,期待DPSはPD発動率だけを変数とする次の式に整理できます.

 \displaystyle \boxed{\mathbb E[\mathrm{DPS}]=122.5+\frac{665}{6}p_{\rm PD}}

つまり,

 \displaystyle \boxed{\mathbb E[\mathrm{DPS}]\simeq122.5+110.8333p_{\rm PD}}

です.

今回のモデルでは,回避後の攻撃列が一定の仮定のため(通常攻撃など),期待DPSの増加量はPD発動率に比例します.アドバンススキルやアルティメットなどのバーストダメージがある場合にはもっと増加します.

通常PDとSDの期待DPS差も,それぞれの発動率を p_{\rm PD,normal},p_{\rm PD,SD} とすれば,

 \displaystyle \boxed{\Delta\mathrm{DPS}=\frac{665}{6}(p_{\rm PD,SD}-p_{\rm PD,normal})}

と計算できます.

12.数値計算

以上の式を使い,衝撃波に対して数値計算しました.

項目 設定
クライアントFPS 60 FPS
サーバー条件 30,25,20,15,10 Hz,drop25Hz
初期距離・波の初期外半径 30 m,1 m
波の速度・厚み 30 m/s,1 m
プレイヤー判定半径 0.35 m
ダッシュ速度・回避速度 9 m/s,16 m/s
回避継続時間 0.5 s
PD・SD・ND判定時間 110 ms,187 ms,350ms
入力平均・標準偏差 −50 ms,50 ms
レイテンシー 上り5 ms,下り5 ms
クリ率・クリダメ 5%,100%

移動条件は静止1条件と0~180°まで10°刻みの19方向,合計20条件です.これにサーバー6条件を組み合わせて120条件を作り,各条件でSDの最適入力平均を探索します.適応率0,0.5,1を評価するため,SD結果は360条件です.

Tick落ちの比較条件 `drop25Hz`  は,30 Hzに対し,80%の間隔が1/30秒,20%が2/30秒となる設定です.平均更新頻度は25 Hzですが,等間隔25 Hzとは異なります.

12.1.PD発動率

下表は,サーバー30 Hz,クライアント60 FPSの計算例です.

移動条件 PD SD・0 SD・0.5 SD・1 SD最適入力平均
静止 69.54% 72.60% 75.05% 75.59% −79 ms
外向き0° 68.90% 69.65% 77.35% 80.16% −93 ms
接線90° 70.37% 72.76% 75.96% 76.80% −79 ms
中心向き180° 55.67% 61.63% 65.47% 66.30% −97 ms

例えば静止の通常PDは69.54%ですが,SDで入力を完全適応させると75.59%になります.一方,中心向き180°では効果が薄く,単に広いPD判定時間があればすべて解決するわけではありません.

12.2.Tickの影響

静止から回避し,SDに完全適応した場合の計算例は次のようになります.

サーバー条件 PD発動率
30 Hz 75.59%
25 Hz 62.86%
20 Hz 50.47%
15 Hz 37.76%
10 Hz 25.20%
drop25Hz 62.89%

サーバーTickが下がると,接触候補を取りこぼす機会が増えます.そのため「PDが起こらなかった」(そもそも被弾が発生しない)という試行が増え,全攻撃機会に対するPD発動率が下がります.

単純化した近似でもこの関係を確認できます.厚さ w の帯を,相対法線速度 v_{\rm rel} で一度だけ通過し,等間隔Tickの位相が一様なら,ヒット率は

\displaystyle \boxed{p_{\rm sampled}=\min\!\left(1,\frac{f_sw}{v_{\rm rel}}\right)}

です.すり抜け確率は p_{\rm skip}=1-p_{\rm sampled} です.静止プレイヤー, w=1\,\mathrm m, v_{\rm rel}=30\,\mathrm{m/s} なら,

Tick ヒット率
30 Hz 100%
20 Hz 66.67%
15 Hz 50%
10 Hz 33.33%

となります.

12.3.期待DPSの計算

移動条件 PD SD・0 SD・0.5 SD・1
静止 199.57 202.97 205.68 206.28
接線90° 200.49 203.14 206.69 207.62

PDなしの基礎期待DPSは122.5です.

例えば静止状態では,通常PD発動率69.54%に対し,適応率1のSDでは75.59%となります.

 \displaystyle \Delta\mathrm{DPS}=\frac{665}{6}(0.7559-0.6954)\simeq6.71

です.

(執筆途中)
数値計算例をもっと増やす予定です.入力誤差や攻撃列の変動に対してDPSがどのように影響を受けるかを研究予定.予告なく数理モデルや全体のノーテーションを調整するかもしれません.フレームレート理論についても解説予定で別記事にするかも.

【MHW:IB】イヴェルカーナが纏う氷の仕様

イヴェルカーナが纏う氷について自身が検証した内容について説明します.ココロさんに動画にしてほしいといわれましたが面倒なのでここに書き連ねます.
歴戦王カーナを前提として話を進めていきますが、通常カーナでも共通する仕様は多いです.

怯みとダウン

王カーナはリアクションを伴う頭怯み2回のあとに頭ダウンをします.リアクションを伴うというのは、ダウン中、クラッチクローで回しているとき、別部位での怯み中などのSA(スーパーアーマー)が付与されているモーション中に耐久値を超過させてもダウンまでの怯み回数にカウントされないということです.怯み値が非常に高く設定されている王カーナでSA中に超過させるのは討伐までにとれるダウン回数が減ってもったいないです.ちなみに、耐久値が1で止まるHA(ハイパーアーマー)は王カーナに付与されることはないという認識を自分はしていますが、王カーナについてまだまだ浅いので知らないことがあるかもしれません.
このあたりの基本的な仕様については参考文献[2]を参考にしてみてください.


耐久値

耐久値は参考文献[1]のデータから引用します.実際に確かめてみても怯みまでのダメージが一致しているので信頼できます.
まずここのサイトの見方を軽く解説しておきます.
クエスト参加人数を設定します.ここではソロだと仮定しておきます.歴戦王イヴェルカーナはM★6六花が静かに眠るならなので、体力が57600、部位破壊の壊しやすさ(耐久値倍率)が×16という情報を取得します.下の方にいくと、部位破壊の壊しやすさの項目で各部位の基礎耐久値が書かれています.頭でいえば、頭(本体)が200、頭(氷)が40です.実際の耐久値というのはこれに倍率をかけた頭(本体)3200と頭(氷)640です.


破壊王と怯み補正

本体にも氷に対しても破壊王と怯み補正の効果はかかります.ちなみに破壊王は破壊後からは効果がのらないので注意.


氷の扱い

氷のイメージはアーマーです.そして我々はそのアーマーを貫通できる貫通力を持ち合わせていません.例え貫通弾であっても貫通できません.
氷纏状態で部位に氷がついているときは、その部位の本体には氷の耐久を削りきるまでは怯みダメージを与えることができません(後述しますがぶっ飛ばしは例外).
氷を纏っている頭の耐久値は3200でも3840でもなく3200+640だということです.その640のアーマーは残り耐久が1さえ残っていればどんなに強力な一撃であっても怯みダメージは全吸収します.つまり、1回目の怯みを取るには少なくとも二撃以上は必要であるということです.

仮に耐久値フルの状態の頭に3000ダメージの真溜め3(強撃)を与えたとしても、まず640がそれを吸収してしまうので、残り3200の怯みダメージを与えないと怯まないということです.
最小の労力で1回目の頭怯みを取るには、破壊王Lv3をつけて溜めや強溜めなどで493ダメージ以上与えて真溜めが氷に吸収されることを防いでから1894ダメージ以上の真溜め3(強撃)を与えることで達成できます(後述しますがぶっ飛ばしを利用すればさらに労力は減らせます).

内部的な耐久値640だとわかりましたが、これはビジュアルに氷が剥がれる条件とは異なります.剥がれる条件は氷の耐久を削った状態で該当部位の本体の耐久値をはじめて超過させたときです.これは怯みのリアクションを伴う必要がないので、SA中に超過させた場合はSA中に氷が剥がれるということになります.


補足
・氷の耐久値を削った状態で氷纏い2へ移行したとしても耐久値の回復などはありません.
・マムタロトでは、前脚に黄金を纏っていたとしても本体(黒色)を狙うことで黄金を無視して本体にダメージを与えることができましたが、イヴェルカーナではそのようなことはできませんでした.例え頭の氷がついていなさそうなところ(顎)を局所的に狙って撃っても、貫通弾で内部にダメージを与えたとしても氷が先に吸収していきます.


ぶっ飛ばしと傷つけ

ぶっ飛ばしは全HPの2%を頭部へ与えます.王カーナソロでいえば57600×2%=1152です.部位破壊数に応じて+0.5%ずつぶっ飛ばしダメージは増えていきます.開幕の落石で翼破壊をすれば2.5%=1440になります.このぶっ飛ばしダメージは特殊で、氷を貫通して頭本体の耐久値を直接削ります.特に補正がかかることなく、1152が固定で削れるので、フルの状態からでは残り2048になるということです.傷をつけないままぶっ飛ばせば、氷の耐久値が削れることなく本体のみ削れることになりますが、頭に傷をつけてからぶっ飛ばすと、それで氷の耐久値も削ることができます.減衰したり、分割されてダメージが入るのではなく、怯みダメージがそのまま追加で入ります.1152>640なので確定で氷が削れます.
2ptの場合、92628×2%>40×30.02、3~4ptの場合、138240×2%>40×44.80なのでこの関係性は崩れません.
つまり、頭に傷つけてからぶっ飛ばすことで、ダウン時は2048+0以下にできるということなので、起き上がりに合わせて2048を削れるような起き攻めをすれば簡単に氷剥がしの1怯み目がきます(ダウン時に超過させてしまった場合は最初の怯みはそこから3200が再カウントです).


そして重要な事項として、頭以外へ傷つけても減衰することなく該当部位の氷と本体への追加怯みダメージが入ります(怯みダメージの拡散).例え尻尾であっても入ります.頭、翼、尻尾に傷をつけてからぶっ飛ばすことで確定で3か所の氷破壊と怯みを2%HP分進行させることができます.その3か所の少し削れた怯みを超過させれば氷が剥がれ、大ダウンがとれます.怯みダメージという観点でいえば、傷つけぶっ飛ばしだけで1152(頭本体)+640(頭氷)+1152(翼本体)+640(翼氷)+1152(尻尾本体)+640(尻尾氷)=5376ダメージを与えているということになります(※あくまで怯みダメージであって実際に体力が削れているわけではない).


ぶっ飛ばしは氷アーマーを唯一貫通できる貫通力があり、傷つけはアーマーにも本体にも怯みダメージを拡散させる力があるということです.


落石

落石はぶっ飛ばしとは異なり、貫通力はありません.しかしひとつにつき5%HP=2880なので氷は一撃で削れ、本体も翼なら一撃、頭ならたった残り320にすることができます.
開幕にけむり玉とスリンガー弾を利用して誘導して落石2つを当てるムーブが有名ですが、あれは氷を纏っていない状態であてているので氷剥がしには影響してきません(本体は削れる).
基本的に翼に当てると思いますが、氷纏なしの状態で頭にあてたとすると、残り320、傷をつけないでぶっ飛ばすと本体の怯みが超過して氷は一切削れず、ダウン時は本体の怯みが3200(2巡目)、氷640の状態で開始します.3200がフルで残っているので傷つけで350ほど削ったとしても氷は削りきれず、どんなに火力をつんでも真溜め一撃では起き上がりに怯ませることはできません.残り290の氷を抜刀斬りなどで削ったあとに、真溜め3(強撃)で一撃で怯ませるには2462ダメージ必要です.
落石を頭にあてず翼にあてて傷つけずにぶっとばしたとすると、翼が破壊できるのでぶっ飛ばしダメージは1440になり、ダウン時は本体1760、同じく傷つけで350くらいの怯みダメージを与えたとすると、同じく一撃では怯ませられませんが、本体の耐久値が減った状態で開始するので、抜刀斬りなどで氷耐久を削ったあとに真溜め2(強撃)でも1467ダメージだせれば怯みます.
初怯みにこれだけの差がでてきます.落石を頭にあてた場合は、傷つけの怯み値がある部分で非会心を引くなどして320未満に抑えることがもしできれば、ぎりぎりのところで怯み調整ができているわけですから、起き上がりまでは怯みダメージを一切与えなければ、そのままかなりの小ダメージで起き上がりに怯ませることができます.ぶっ飛ばしの前に傷をつけた場合はどうか?というのはここまでの説明を理解されていれば簡単に計算できると思います.


小ネタ?
開幕に誘導後、発覚されて氷を纏ってから翼に落石を2つ立て続けに当てることで氷を剥がすことができます.これができるのは落石ダメージが翼の耐久値より大きいソロのみで、2人以上では翼の耐久値のほうが大きいので、翼の氷耐久を削ることはできても翼本体の耐久は少し残ってしまいます.
youtu.be


参考文献

[1] イヴェルカーナ - MH:World - Kiranico - Monster Hunter World: Iceborne Database

[2] 怯み値を制する者は、モンハンを制す。|Kuaty(くあてぃ)


検証には主に通常弾を使用しました.TA動画も耐久値を見るのに便利でした、特にランス.

【SAOAL】リキャスト-80% 2覚醒瞑想闘気ループ

武器でリキャスト-10%、防具で-10%、アドオンで-20%、アクセで-20%、PSで-15%、BSで-5%によってリキャスト-80%ビルドが構築でき、これによって、瞑想闘気とスーパーアーツを1キャラで完結してループすることができます.その仕組みと装備構築について解説していきます.自分はsteam版なのでPS版、switch版では仕様が異なる可能性がある点にはご注意ください.

瞑想闘気

瞑想闘気は60秒の間必中になるバフですが、その代償としてアーツゲージ全損があります.しかし、実はこれはパートナー指示によるBS発動、パーティー指示モード(5%↑)中の指示によるBS発動あるいはアーツコードからのAI発動によってその代償を必要とせずに発動できてしまいます.それがソロでの瞑想闘気の主流な運用方法だと思いますが、それはややグリッチっぽく、デメリットを踏み倒しているのが個人的にはあまり好きではないので正攻法、つまりちゃんとアーツゲージを消費するやり方で運用するという前提で話を進めます.あとソロとマルチでいちいちビルドを変えたりBSを付け外しするのが面倒くさいというのもあります.まあマルチプレイできる人口はいないんですが....


リキャストスキル

精神の檻+


危険への備え+


剣技の果て+


安泰の呼吸+


鳳凰の聖痕


ループ構築

リキャスト-80%によって

瞑想闘気+ / 覚醒+:効果時間60秒、リキャスト180秒→36秒

覚醒:効果時間60秒、リキャスト210秒→42秒

安泰の呼吸+:効果時間90秒、リキャスト360秒→72秒


となります.リキャスト-75%ではダメかというと、ダメです.瞑想闘気とスーパーアーツが切れる時間が12秒ほどできてしまいます.
PSの澄まされた一閃は必須なのでこれも前提とします.

アタッカーだけにつけてもよいですが、バファーやデバファーにもつけておくと確実です.
澄まされた一閃(+25%)によってスーパーアーツの時間は30秒から40秒になります.なぜか38秒ではないです(フレームレートなどの影響もあるかも?).
アニマの慈愛のスーパーアーツ時間+5%の効果はバグっているのか、反映されないのでつける必要はありません.自己バフの効果時間は伸びます.


スーパーアーツ時間は40秒ですが、これを2セットで1ループとして考えていきます.つまり1ループが80秒+BS発動速度分なので、すべてのリキャストが80秒に収まっていればよいということになります.
もっとも長い安泰の呼吸+のリキャストが72秒なので1ループで1回使えて、効果時間も90秒なので十分です.あとは瞑想闘気と覚醒、覚醒+が2セット収まれば、つまり40秒に収まっていればよいということになります.瞑想闘気の効果時間は60秒なので20秒超過、リキャストも36秒なので十分です.覚醒+も36秒なので十分です.あとは覚醒ですが、リキャストが42秒なので2秒足りませんが、スキル速度がかなり早くない限り、スーパーアーツの切れ目でBSのかけなおしをしている総時間が2秒程できるのでぎりぎり間に合ってループできるということになります.このことを図示すると以下のようになります.



武器

武器でリキャスト-10%を組むには制限があり、できない武器種もあります.どうしても該当武器種で使いたくないキャラしかいない場合は...あきらめてもらうしかないです.
武器のPSに精神の檻+がつくものか、剣技の果て+、危険への備え+のついた片手直剣を二刀流(キリトかレイン)で2つもつ必要があります.

雷鳴弓

もっとも入手性がよいです.ヴァリンド台地群のスクロア村にいる鍛冶屋のズナーリから簡単にクラフトできます.弓なのでシノン、デュソルバート、ツェリスカから選ぶことになります.


光刻の短剣

釣りからの入手なので、竿の入手、熟練度上げ、PS厳選と大変なので弓キャラをどうしても使いたくない場合の選択肢になります.

釣り竿の入手方法と熟練度
サロール山地のチエリアの町にいる鉱夫のカラーマから「採石場の危機」を受注してクリアし、続いてパン屋のロミンナから「竹林の間引き」、釣り人のヌエンネから「最高の竹」を進めることで幻軌流の釣竿を入手することができます.

釣りの熟練度はただひたすらに釣るだけで上がります.最大の1000までには数百匹釣る必要があります.マップのリロードをすると魚はリポップします.
ロッキスの岩場の東側の釣り場から光刻の短剣をお宝として低確率で釣れます.さらにそこからPSの厳選が必要になるので、雷鳴弓より入手までの道のりは長いです.


【極】宝剣・煌星

東レイド覇のボス宝箱から低確率で入手でき、剣技の果て付きのものを2本集めれば二刀流でリキャスト-10%にできます.キリトに限っていえば【覇】勿忘草の剣に剣技の果てが付いているのでそれと合わせてもよいですが、火力は別キャラを採用する必要がでてきます.

そもそも瞑想闘気が必要になってくる攻略段階ではPS付き宝剣煌星はトップ火力を出せる武器で、サポートに回すということはあまりないはずなので、すでにマトリカリア極や覇を攻略済みで夜空・勿忘草のお下がりとしてサポートレインに持たせるという形が多いのかなと思います.


雷華の剣

古レイドの騎士Lv300~499からドロップします.ティーゼ専用武器です.達人の領域付きの【極】樫の軽靴を取りに行くはずなのでそこで一緒に取れます.ティーゼかわいい.



防具

【極】守護竜の鎧

任意の古レイドのLv500~600、マトリカリア極で入手可能です.BSのカスタム装備に使います.入手できるまでは剣技の果て付きの【極or覇】剛騎の鎧、【極】究明の服を使用しましょう.


【極】黒閃の衣

レイド覇の中ボス、ボス宝箱、マトリカリア極(雑魚敵)で入手可能です.雑魚敵は層の昇降でリポップします.表の装備に着ることで瞑想戦気+を使うことができます.【覇】黒閃の衣、茜空の外衣でも代用可能です.

鳳凰の聖痕

トレティスの峠のカラントから入手可能です.クールタイム減少だけでなく、このBSカスタムをしたBS発動直後にすぐに発動した次のBSに対して消費SP軽減の効果が乗ります.魂の抽出、Exスキルのエフェクター、ペルソナの求明者で-50%のSP消費軽減できるので合わせて-100%とSP消費無効化できるので、消費量の多い覚醒、覚醒+を続けて発動させることができます.ペルソナはリーダー気質にする必要はありません.





アクセサリ

旅人の外套

北セントリア市街の鍛冶屋のソデムから作成できます.PSが付くかどうかは運なので、素材消費を最小限に抑えて必要個数集めたい場合は、セーブデータのリセマラでできます.


【極】輝石の指輪

精神の檻はミオソティスのストーリー中のみで、それ以降は代わりに「朧の羽衣+」(回避率+10%)がついてしまいます.ミオソティスを開始してすぐにタンレニ峡谷に行くことになると思いますが、そこで遺跡に入ったら蜘蛛を狩って、一度遺跡を出て再入場ということを繰り返して必要個数揃えましょう.ここでしか入手できなく、代用品の廃忘の守護石は非常に面倒くさいので10個以上、推奨は20個、最大30個は精神の檻付きのものを確保しておきましょう.ミオソティスクリア済みの方は頑張って南レイドを周回して廃忘の守護石を集めるしかないです.


廃忘の守護石

南レイドのボスからドロップします.精神の檻は確定では付かないのでPSが付くかどうかの厳選は必要になります.ストーリークリア直後では南レイドのボスは必要命中的に厳しいと思うのでマトリカリアのストーリー、ミオソティスのストーリー、東レイドで装備を整えてから挑むといいと思います.南レイドはボスが特別に強いというわけではないですが、毎回面倒くさいギミックを発動させるために長距離のおさんぽをする必要があるので苦痛です.1個集めるだけならまだしもカスタム装備は共有できないので何十個も必要になるから大変なのです.火力に余裕があるのであれば移動速度バフを積んでもいいかもしれません....なので【極】輝石の指輪でそろえるのがいいんですね.


廃忘の指輪

同じく南レイドで、ボス宝箱から確率で入手できます.安泰の呼吸のためで、こちらは1個あれば十分です.


虹輝虫のお守り

北セントリア市街の鍛冶屋のラーデから作成できます.神獣素材を使うのでリセマラでないと限られた時間の中で必要個数揃えるのはかなり大変なのではないかと思います.表に装備することで覚醒+を使用できるようになります.後述の雑魚敵からのドロップアクセでも代用できるので数個作れたらとりあえず大丈夫だと思います.


豪胆の革靴

茜空の外衣と同じく、マトリカリア極の2層の雑魚敵から集めることができます.虹輝虫のお守りよりも入手時期は遅くなりますが入手性が良いです.


ペルソナとアニマ

ペルソナはSP不足でBSがうてないといった状況を減らし、かつ瞑想闘気の範囲を少しでも広げるために求明者(SP-15%、範囲+30%)にします.次点で探求心(SP-20%)です.
瞑想闘気、安泰の呼吸、覚醒+は元々範囲系バフ、しかも別パーティーにも効果があるものなのでリーダー気質は必要ありません.通常の覚醒は範囲系バフではないですが、リーダー気質はパーティー内のみでの範囲化なので別パーティーへの共有はできません(賢者の現身が必要).そしてアーツゲージはキャラを切り替えても共有されるので覚醒のためにリーダー気質は不要です.
リーダー気質がないことはAIが勝手に撃ってしまうバフによってバフ個数上限へ到達してしまうことを防ぎやすくなるのでメリットとも捉えられます.アーツコードになにかしらのバフを仕込んでいる場合はリーダー気質にしてみてもよいと思います.

アニマは慈愛くらいしか意味がほとんどないです.スーパーアーツ延長は機能してませんが、自己バフの効果時間が5%伸びるので、安泰の呼吸が94秒になります.


実践例

装備はこのようになります.リキャスト装備を1つでも妥協すると、スーパーアーツの間に空白の時間が生まれます.それがダウン時間と被るともったいないので-80%を目指しましょう.


youtu.be

【MHW:IB】ムフェト・ジーヴァの発覚バグ

ムフェトのオンラインマルチプレイには発覚を先取りしてしまうバグによって、2層および3層の移動吸収(HP+15%)が行われないことがsteam版、PS版ともにあります.

発覚バグ

youtu.be

3層移動時にテントで誰か1人が発覚され(その証拠に発覚された人はミニマップが赤色になり、テント内で威嚇咆哮が聞こえるなどする)、3層へ入ると本来行われているはずの移動吸収がされておらず、威嚇や吸収および上レーザーをしていることがあります.

2層移動時でもこのバグは発生しますが、3層のものと比べて実用的ではないです.
3層のものをメインに解説し、2層についてはそのアナロジーで補足しておきます.


3層発覚バグ

発生条件

オンラインマルチで、2層枯渇後の調査班リーダーのセリフ出現からちょうど8秒経ったタイミングでテントに入る入力または6秒経ったタイミングでテントを出る入力をすることで(テント暗転のタイミングが重要)、発覚バグを発生させられます.
ソロでは今のところバグ発生させることは不可能であると認識しています.


テント発覚のメカニズム

約1年間、このバグについて研究し続けて発生条件を特定し、どうしてこのようなバグが起きるのかの仮説を立ててみました.
あくまで仮説であり、これ以上検証・証明するには高度なリバースエンジニアリング技術が必要になると思います.


テント暗転時の瞬間に、プレイヤー座標のワープが行われていて、その一瞬かテント内にいる間では座標未定義あるいは3層に近い特定の座標に設定されているために、3層ムフェトから発覚可能な状態にあると考えられます.

ムフェトの2→3層移動時のデフォルトのルーチンが仮に、行動1(移動)→行動2(体勢変更)→行動3(移動吸収)になっているとします.
実際にはもっと複雑なルーチンである可能性はありますが、このバグを説明する上では3行動の単純なモデルで十分です.​

まず、各行動の性質として​

・行動1中は強制的に未発覚状態になる​(→移動開始と同時にミニマップが白色になる)

・行動2は通常の行動と殆ど同じ性質をもち、この行動の長さは極短い​(→バグ発生のための入力猶予の短さ)

・行動3は未発覚状態でしか行われないようになっている​(→移動吸収をしない)

​であることが推測されます.

単純には、発覚バグは行動2中にテント暗転(座標ワープ)させて発覚可能状態にすることで生じると考えるのが自然です.​

発覚中ゆえに行動3はキャンセルされ、反応(威嚇行動や通常地脈吸収)に置き換わります.
これを裏付ける根拠のひとつとして、発覚バグを起こしたあとに乙ったり、隠れ身で待機したりなどして、もう一度完全未発覚状態を達成すると、ムフェトは唐突に行動3を開始します.

しかし、この単純な考えではソロでこのバグが発生しないことの説明がつきません.


ver.13.01.00のバグ修正

www.monsterhunter.com

この頃、自分はモンハンをやっていなかったので実際にはわかりませんが、ver.13.01.00で次のバグ修正がされています.

ムフェト・ジーヴァが最下層にいる際にテント内でSEやエフェクトが表示されるなど、複数の不具合を修正します。

これは上記の単純な考えのバグメカニズムの修正だったと仮定します.
おそらくカプコンはオフライン(ソロ)環境で上記単純バグへの修正をしたものの、同期というステップを踏むオンラインマルチプレイのことを考えて修正しきれなかったのではないかと思います.
例えば、行動2の間は発覚可能状態にあるという入力を各クライアントで遮断するという修正をしていたとして話を進めます(実際のルーチンの修正はもっと違うと思います).


モンハンにおける同期

wikiwiki.jp

オンラインマルチプレイにおいては、行動と行動の間に同期(ホストからの取得)が行われています.
発覚可能状態にあるというのはある種、攻撃のようなもので、発覚がその反応で怯みに対応していると考えるといいと思います.


ゲスト発覚

あるゲストで行動1中、行動2の直前に発覚可能状態の入力があったとします.
ゲスト側ではこの入力がムフェトにされても行動1の性質として未発覚状態にあるのでこの時点では発覚にはなりません.
しかし、ホストにはこのゲストが発覚可能状態にあるという情報が行動1中なので遮断されることなく送られます.
ゲストの行動1入力開始時刻からゲストのアップロード速度とホストのダウンロード速度を合わせたときにホスト側で行動2中に収まった場合、遮断されない発覚可能状態の入力が行動2に対して行われるので次の行動は行動3ではなく反応になります.これによってマルチ(ゲスト)でのみ発生し、ソロでは発生しないことの説明がつきます.

これと似たようなものにクラッチ延長延長があります.ゲストの送信ラグとホストの受信ラグが大きいとします.
モンスターがクラッチ怯みになったときにラグのないホストあるいはラグの小さい別ゲストが延長をするのをラグいゲストが観測する前に、そのラグいゲストが延長します.
そうすると何が起こるかというと、まずホスト視点でラグなしで延長が行われますが、次いでラグゲストによる2回目のクラッチ延長が行われます.特にラグが大きいと次の行動(ダウンであっても)をキャンセルしてでもクラッチ延長が発生します.ラグいゲスト側で延長するというものが遮断されずにホストに送られるのでホスト側で2回目の延長が起きるというわけで、ゲスト発覚の仕組みと根本は同じです.


2層発覚バグ

3層と同様に2層でも移動吸収なしの発覚バグはあります.こちらはマルチプレイである必要はなく、ソロでも可能です.

タイムラグ

ツタ罠落石後の枯渇吸収の直前に徹甲榴弾、斬裂弾、起爆竜弾、回線のラグと自傷による乙、モドリ玉などを組み合わせて、キャンプで未発覚状態中に攻撃をしていることを成立させ、BGMが再びなり始めるという状況をうまいことつくりあげます.これが再現できるようになったら、BGMが再びなるまえに、隠れ身の装衣、テントを利用して潜伏します.発覚されてはだめです.これにより、おそらくキョロキョロかなにかの行動が追加され、ムフェトが2層に到着すると移動吸収をせずにエリア奥のほうへ向かって走っているという状態になります.

グリッチとしての応用

3層威嚇スタート

2層移動条件はHP70%未満で、ギリギリで移動すると3層開始HPは移動吸収をする場合には最悪85%程にもなりますが、移動吸収をさせずに威嚇させておくことで41%~69%開始にできます.
また臨界までの行動カウント開始が早まるので臨界速度も速くなりやすいです.

3層キャンプ吸収

2層移動時にHP40%未満にしておいてテント発覚すると、3層の吸収条件を満たしているのでテント~キャンプにいる間に通常のHP+35%の地脈吸収を行わせることができます.
これを上手いこと活用すれば3層での吸収回数を実質1回減らすことも可能になります(2回は1HP吸収2回と乗り龍封などが必要).
youtu.be


2層威嚇スタート

1層移動条件はHP90%未満かツタ罠後に落石ダウンをとることです.ツタ罠落石の後は100%移動もできるので威嚇スタートの恩恵はほぼないですが、90%未満移動などの場合は2層開始HPを100%ではなく90%未満にすることができます(この間の毒も有効).

2層即吸収

例えば1層の地脈エネルギーが枯渇した状態でスタートした場合、1層でHP50%未満にして移動させると2層で吸収条件を満たしているので発覚後すぐに地脈吸収開始、あるいは2層も枯渇している場合は即3層への移動が可能です.

【MHR:SB】伏魔奮闘変換(朱の書)と狂化奮闘修羅(蒼の書)の属性値比較

属性環境のサンブレイクにおいて装備を選択するときに、朱の書で戦う伏魔響命と龍気変換を軸にするか蒼の書で戦う奮闘と業鎧【修羅】を軸にするかで迷うと思います.
かといって装備をどちらも作ってから比較するというのも苦労するので、武器の属性値と武器特性を目安にして装備作成開始段階で適切な選択ができる計算方法を提供します.

第5弾アップデート時点(ver.15.0.0.0)のものです.スキル内容や武器の属性補正の修正、大きな影響を与える属性強化系スキルの追加がなければ、以降アップデートで変わる点としては武器の傀異強化による属性値の上昇によって具体例の計算部分の結論が変わりうるくらいです.

属性値・属性ダメージ計算

各スキル等には属性に影響を与えるものがありますが、属性値というパラメータそのものを上昇させる効果を持つものと、属性ダメージという最終的に与えるダメージを上昇させる効果を持つものに大別されます.
今回は属性値がどちらが高くなるかという計算をしたいので、どちらにしても同じだけの効果をもたらす属性ダメージ補正については考える必要がありません.

ざっくりと書くと

属性値=素の属性値×属性値乗算補正+属性値加算補正
属性ダメージ=属性値×属性ダメージ乗算補正

といった感じになっています.スキルによってどの部分の補正になってくるか変わってくるために単純なスキル効果の数値では比べられません.
※素の属性値は武器の傀異錬成による属性強化を含みます.

属性強化系スキル

属性値加算

  • 属性攻撃強化の加算部分
  • 連撃
  • 災禍転覆
  • 狂竜症【蝕】(感染中)
  • 伏魔響命
  • 龍気変換

属性値乗算

  • 属性攻撃強化の乗算部分
  • 恩恵
  • 奮闘
  • 業鎧【修羅】
  • 武器属性値補正(双剣の鬼人化と太刀の錬気ゲージ色)
  • 属性攻撃力UP旋律(ただし特殊で、加算補正にもかかるので今回は実質属性ダメージ乗算と同じ枠)

属性ダメージ乗算

  • 会心撃【属性】
  • チャージマスター
  • 弱点特効【属性】 (属性肉質20以上)
  • 属痛竜珠 (属性肉質25以上)
  • 冰気錬成
  • 切れ味補正、モーション(溜め段階)の属性補正、ビン補正、速射補正など

闇討ちや蓄積時攻撃強化、特攻竜珠等のダメージ乗算スキルは属性部分にのりません.

弓、双剣とボウガン

まず単純に属性値の比較をする前に、スタミナが大きくDPSに影響する弓は伏魔響命を使ってHP1で伏魔奮闘火事場で戦いつづける以外では、狂化を使って奮闘のスタミナ消費無効を利用するのが良いと思うので、ただでさえ変換倍率が低く設定されているガンナーの龍気変換を使おうとはあまりならないと思います.
双剣も同様に、弓ほどスタミナに依存するわけではないですが鬼人化維持や機動力の観点から殆どの場合狂化奮闘がいいでしょう.

またボウガンの場合は素の属性値が低いこともあって属性加算の伏魔響命が火力面では圧倒的優位なので迷う余地はあまりないです.もちろんワンパン対策として狂化を使うという場合はそれでいいです.

属性値比較計算

素の属性値をE_0とします.属性値乗算補正をK、属性値加算補正をAとします.
属性値Eは

E = K E_0 + A

ここから、伏魔響命(Dereliction)d、龍気変換(Dragon Conversion)c、奮闘(Strige)s、業鎧【修羅】(Mail of Hellfire)mとおき、これら以外の部分をそれぞれk、aとします.

K=k\times s \times m

A=a+d+c


奮闘第2段階の補正はs'とします.
今、比較したいのは伏魔奮闘変換と奮闘修羅の場合なので、蒼の書が上回る条件を立式します.朱の書の値をr下付き、蒼の書の値をb下付きとします.

k_r s E_0 + a_r + d +c < k_b s' m E_0 + a_b

\displaystyle E_0 > \frac{a_r - a_b + d + c}{k_b s'm - k_r s}

となります.ここで、属性乗算系スキルの差は2つの装備で殆どないと思いますので、k=k_r=k_bとします.
属性加算系スキルの差も各々で違いうると思いますが、今回は伏魔の場合は狂竜症【蝕】Lv1・災禍転覆Lv1で狂化の場合はなし鬼火纏Lv3・災禍転覆Lv1だとしましょう.
狂竜症【蝕】克服20秒の場合、平均属性上昇値は約1.6とみなせます.一方、鬼火の場合、怒り率70%の場合、約1.4とみなせます.

もっと厳密な話をすると、狂竜症【蝕】の会心上昇に頼っている場合、会心撃【属性】や物理会心ダメージの会心補正の低下分まで考慮しなければなりませんが必要なパラメータも増え、煩雑な計算となってしまって、今回のコンセプト(武器の属性値から推定)とは外れてしまうので無視します.


したがって、伏魔響命Lv3(キュリア3匹)・奮闘Lv3(1段階)・龍気変換Lv3(近接武器)・狂竜症【蝕】Lv1・災禍転覆Lv1の場合と奮闘Lv3(2段階)・業鎧【修羅】Lv3・鬼火纏Lv3・災禍転覆Lv1の場合、合計属性耐性値rとして

\displaystyle E_0 > \frac{1.6 - 1.4 + 20 + r/4}{k (1.2\times 1.2 -  1.15)} = \frac{0.863 (80.8+r)}{k}

となります.伏魔変換の加算値に対して|a_r-a_b|は十分小さいことが殆どなので装備ごとの微妙なスキルの違いによる誤差は殆どないでしょう.
あと必要なパラメータは属性乗算補正です.まず、双剣の場合は鬼人化によって属性値1.35倍の補正が、太刀の場合は錬気ゲージ色が白黄赤となるにつれ、属性値1.04、1.08、1.12倍の補正がかかります.

各属性攻撃強化はLv5いれるでしょうから1.2、恩恵も火水氷の場合はスキルの軽さからいれるとおもうので1.1としましょう.


耐性値250の場合

恩恵ありの火・水・氷属性

\displaystyle E_0 >  \frac{0.863 (80.8+250)}{1.2\times 1.1}=216.3

が閾値となります.

錬気ゲージ赤色(本当はモーションによって黄なども考慮する必要があり)の太刀の場合、

\displaystyle E_0 > \frac{0.863 (80.8+250)}{1.2\times 1.1\times 1.12}=193.1

双剣の場合は鬼人化補正があるので、

\displaystyle E_0 > \frac{0.863 (80.8+250)}{1.2\times 1.1\times 1.35}=160.2

となります.

狂化奮闘修羅型が伏魔奮闘変換型を属性値で上回るためにはこれらの閾値を、傀異強化後の武器の素の属性値が上回っている必要があるということになります.
素で216を超えるような属性武器はおそらくないですし、属性補正のある太刀や双剣ではその閾値が緩和されるとはいえ、その分他の武器種に比べて属性値が抑えめに設定されているので超えることはないでしょう.
自分が知る中でかなり高い属性値を誇る大剣である「瞬間レイトウ本マグロ」は第5弾アプデまでの強化で属性値203なのでかなり迫ってきてはいますね.

恩恵なしの雷・龍属性

\displaystyle E_0 >  \frac{0.863 (80.8+250)}{1.2}=237.9

太刀は、

\displaystyle E_0 > \frac{0.863 (80.8+250)}{1.2\times 1.12}=212.4

双剣は、

\displaystyle E_0 > \frac{0.863 (80.8+250)}{1.2\times 1.35}=176.2

となります.

第5弾アプデ時点で他スキルと両立しつつ風雷合一を積む手段がないので、雷・龍属性はその分、伏魔奮闘変換型を超えるハードルが高くなっています.

耐性値200の場合

以降、上から順に太刀双剣以外の武器種、太刀、双剣の順で閾値を羅列していきます.

恩恵ありの火・水・氷属性

183.6
163.9
136.0

恩恵なしの雷・龍属性

201.9
180.3
149.6

このあたりから大剣が伏魔奮闘変換型に並んできます.それ以外の武器種はいまだ並ぶことはできません.


耐性値150の場合

恩恵ありの火・水・氷属性

150.9
134.7
111.8

恩恵なしの雷・龍属性

166.0
148.2
123.0

ここからハンマー、太刀、双剣でも高い属性値をもつ優秀な武器であれば伏魔奮闘変換型に並んできます.


耐性値100の場合

恩恵ありの火・水・氷属性

118.2
105.5
87.6

恩恵なしの雷・龍属性

130.0
116.1
96.3


適切な属性武器を選択している場合、殆どの武器種で狂化奮闘修羅型が優勢になってきます.
高い物理性能をもつ武器を選択し、おまけとして属性スキルをつけるというのであればやはり伏魔奮闘変換型になります.

任意耐性値(グラフ)

合計耐性値と閾値の対応グラフです.

激昂や龍気変換耐性値上昇、属性耐性飯、属性耐性旋律などをすべて反映させた状態で、装備で盛れた正の属性耐性(各上限50)の合計値を横軸にとって、そこから恩恵の有無や武器種で縦軸の値を読み取ります.その値が狂化奮闘修羅型が属性火力で勝るための武器に要求される素の属性値になります.

各スキルレベルなどのもっと細かいニーズに対応した計算ツールはしばらくお待ちください.グラフにするととんでもないことになってしまうので...

ガンナーの場合

貫通属性弾の場合、素の属性値は22で、ボウガンは特殊な仕様で傀異強化でこの属性値が変動するということがないので、計算するまでもなく伏魔型のほうが圧倒的に火力面で優位です.
一方、貫通しない属性弾(特にライトボウガンの速射で使うことが多い)の場合、属性値は40と貫通属性弾に比べて2倍近くあります.
この場合でも伏魔型のほうがいいのかという計算をしていきます.ガンナーの場合は龍気変換率が剣士の25%に比べて8%とかなり抑えられていて事情が違いますので、少し前の計算式まで戻ります.
またガンナーの場合、取り回し系のスキルなど外すに外せないスキルも多いので耐性値合計は激昂含めて盛れて200とします.なので龍気変換によって上昇する属性値は16です.

\displaystyle E_0 > \frac{1.6 - 1.4 + 20 + 16}{k (1.2\times 1.2 -  1.15)} = \frac{124.8}{k}

属性強化Lv5の1.2と仮に火水氷だとして1.1、これ以上の属性乗算系スキルは見込めないので

\displaystyle E_0 >  \frac{124.8}{1.2\times 1.1} = 94.6

と、貫通属性弾の属性値22はもちろんのこと、非貫通属性弾の属性値40とも大きくかけ離れています.ボウガンはやはり火力面では伏魔変換型がいいでしょう.
そもそも龍気変換による属性値上昇もスキルの重さ、要求される耐性値に対して見合ってはないので無理に積むほどでもないでしょう.

弓であれば前提として猫火事場を使ってスタミナ無限で立ち回りたいので、奮闘2段階目で計算をします.

\displaystyle E_0 > \frac{1.6 - 1.4 + 20 + 16}{1.2\times 1.1 (1.2\times 1.2 -  1.2)} = 114.3

乱吹の瑞華晶弓やD=ティカトルでも90に届いていないので、猫火事場ゆえに物理火力はもちろん、一応属性火力も伏魔奮闘変換型の方が勝るということになります.
弓の属性値が低く設定されているがために、龍気変換倍率が低くても実は伏魔響命や龍気変換と比較して、蒼の書の業鎧【修羅】は弓と相性がいいとはいえないということになります.
とはいえ猫火事場の分を除けばわずかな差なので運用のしやすさから考えてやはり狂化奮闘修羅型に軍配があがります.


伏魔変換型のメリット・デメリット

朱の書で戦う伏魔変換型のメリットは、近接の場合龍気変換倍率が高く、どんな武器でも大きな属性値を得られやすく属性火力で優秀な点と狂化型ほどスリップダメージ対策が必要ない点です.
またスキルLv1によって攻撃力・属性値・会心率・回避性能・体術・災禍転覆トリガー・赤ゲージ回復が可能なコスパの良すぎる狂竜症【蝕】との相性が抜群な点も狂化型では入れにくい点から大きなメリットの一つになります.

一方、デメリットもあり、回復を怠ったり、狂竜症【蝕】の克服が遅れたりすると実HPが低い状態となってしまってワンパンされやすくなってしまいます.
これをカバーするにはおだんご防”護”術がオススメです.かなりワンパンされる回数が減ります.
伏魔響命のスリップダメージ緩和にはおだんご超回復、こんがり魚、ヒーラー猫が使え、これらには体力回復量UPの効果はのり、狂竜症【蝕】感染中でも回復効果はうけます.
鋼殻の恩恵Lv3(+活力剤)は発動しないので注意してください.
また、耐性値が要求されるためにスキル特化で傀異錬成をしにくいうえ、伏魔響命、龍気変換、激昂という積みにくいスキルが必要な点もデメリットのひとつになります.

狂化奮闘修羅型のメリット・デメリット

ワンパンはされず、多段ヒットでも直接乙ることはないというのが最大のメリットでしょう.狂化Lv2と十分な自動回復手段を用意しておけば被弾しても疾替えのみで回復薬を飲む必要さえもなくなります.ごり押しによる手数の上昇は特に属性を扱ううえで実質火力スキルになります.
また容易に奮闘第二段階の効果を受けることができ、スタミナ消費無効とより高い属性・会心率上昇効果を受けられます.
スタミナ消費無効の効果を受けられるということは渾身が実質見切りとして扱えるのもメリットです.ネフィリム/ケイオスの防具が優秀なことから見切りも積みやすいですし、見切り7奮闘Lv3渾身Lv3でほぼ無条件で会心率+90%が狙えます.
さらに耐性値や防御の減少はどうでもよくなるのでスキル特化で躊躇なく錬成できるのもメリットでしょう.

デメリットは、毒や火やられ、気絶、麻痺、拘束などに弱いことや狂竜症【蝕】を採用しづらい点です.
狂化スリップダメージ対策には、まず狂化をLv2にすることと、おだんご超回復、こんがり魚、ヒーラー猫、鋼殻の恩恵Lv3(+活力剤)を使います.これらすべてに体力回復量UP、おだんご医療術の効果がのります.
こんがり魚は効果時間の短さから使えないにしても鋼殻の恩恵Lv3とその効果を増やす活力剤は必須として超回復、医療術、治癒Lv3、血気Lv1などの補助スキルも積めるのであれば欲しいです.
これらの補助スキルが必要になってしまうという点がまずデメリットです.
また属性値加算が小さいので武器に合わせて計算をしないと伏魔変換型に比べて大きく属性火力が落ちてしまいます(それを防ごうというのがこの記事の目的).

以上は普段使いの装備に関する計算でした.一方、火事場を使うようなTAでは少し話が変わってきます.この点について少し触れます.とはいえTA装備は各モンスター、クエスト、プレイヤーごとに大きく変わってくるので計算するということはしません.

計算ツール(メンテナンス明け待ち)

keisan.casio.jp
にて実装しようかと思いましたが、長期メンテナンス中だったのでメンテナンス明け次第実装します.


以下keisanの仮コード(動くかはわからない)

weapon;/*
0 以下以外
1 太刀
2 双剣
3 ガンナー
双剣は鬼人化、太刀は錬気ゲージ赤で内部計算、ガンナー→龍気変換倍率に補正*/

elemental_attack;/*属性攻撃強化Lv*/

dereliction;/*伏魔響命Lv*/
qurio;/*キュリア匹数*/

dragon_conversion;/*龍気変換Lv*/
resistance;/*合計耐性値*/

strige;/*奮闘Lv*/

mail_of_hellfire;/*業鎧【修羅】Lv*/

blessing;/*恩恵Lv*/


a;/*属性加算値の差 ※狂竜症【蝕】Lv1・災禍転覆Lv1と鬼火纏Lv3・災禍転覆Lv1の場合期待値約0.2/*/




/*属性攻撃強化乗算倍率*/
ea = 1.00;
if(elemental_attack =< 2){
ea = 1.00;
}elseif(elemental_attack == 3){
ea = 1.05;
}elseif(elemental_attack == 4){
ea = 1.1;
}elseif(elemental_attack == 5){
ea = 1.2;
}


/*伏魔響命加算値*/
d=0.00;
numeric d_array ={{5,8,12},{7,12,15},{10,15,20}};
if(dereliction = 0 or qurio == 0){
d=0;
}else{
d=d_array [dereliction - 1][qurio - 1];
}


/*龍気変換加算値*/
c=0.00;
if(dragon_conversion =0 or resistance =< 0){
c = 0;
}elseif(dragon_conversion =< 2 and weapon =< 2){
c = resistance*0.15;
}elseif(dragon_conversion == 3 and weapon =< 2){
c = resistance*0.25;
}elseif(dragon_conversion =< 2 and weapon == 3){
c = resistance*0.04;
}elseif(dragon_conversion == 3 and weapon == 3){
c = resistance*0.08;
}


/*奮闘乗算倍率*/
sr=1.00;
sb=1.00;
if(strige == 0){
sr=1.00;
sb=1.00;
}elseif(strige == 1){
sr=1.05;
sb=1.1;
}elseif(strige == 2){
sr=1.1;
sb=1.15;
}elseif(strige == 3){
sr=1.15;
sb=1.2;
}


/*業鎧【修羅】乗算倍率*/
m=1.00;
if(mail_of_hellfire == 0){
m= 1.00;
}elseif(mail_of_hellfire == 1){
m=1.05;
}elseif(mail_of_hellfire == 2){
m=1.1;
}elseif(mail_of_hellfire == 3){
m=1.2;
}


/*恩恵乗算倍率*/
b=1.00;
if(blessing == 0){
b=1.00;
}elseif(blessing == 1){
b=1.05;
}elseif(blessing == 2){
b=1.1;
}elseif(blessing == 3){
b=1.15;
}


/*総乗属性値乗算倍率*/
k = 1.00;
if(weapon == 3 )
k =1.35 * ea * b; /*双剣鬼人化*/
}elseif(weapon == 1)
k = 1.12 * ea * b ; /*太刀錬気ゲージ赤色*/
}else{
k = 1.00 * ea * b;
}

/*属性閾値 これより傀異強化含めた武器の素の属性値が高い場合、狂化型がいい*/
E = (a + d + c)/(k * (sb * m - sr));
print(round(E,1));