はんまーに乾杯

メダロットSプレイ記

【メダロットS】攻撃結果の比率計算 #2

f:id:hakamaya:20220228183832p:plain

攻撃結果比率計算モデルと式

 メダロットSのロボトルでは、攻撃に際して回避、かすり、防御、ヒット、クリティカルの5種類の攻撃結果のうちから1つが選ばれる。回避比率を p_1 、かすり比率を p_2 、防御比率を p_3 、ヒット比率を p_4 、クリティカル比率を p_5 と置く( 0\leq p_x\leq1 )。これらの比率は一部の状況*1を除き、成功 a 、攻撃スキルレベル s_1 、耐性 c 、回避 d 、補助スキルレベル s_2 から特定の式に基づいて計算される。

 ここで、5種類の攻撃結果が次の最大4回の判定を順に経て与えられるモデルを導入する。このモデルを、4段判定モデルと呼ぶことにする。

  1. 回避成功判定。回避成功なら判定終了、失敗ならかすり成功判定に続く。
  2. かすり成功判定。かすり成功なら判定終了、失敗なら防御成功判定に続く。
  3. 防御成功判定。防御成功なら判定終了、失敗ならヒット成功判定に続く。
  4. ヒット成功判定。判定終了。ヒット失敗なら結果はクリティカルになる。

 さらに、式(1)から式(3)に従い、各ステータス a,s_1,c,d,s_2 について防御時のダメージ計算式と同じくスキルレベルをまとめた補正ステータス a',c',d' を導入する。

 a'=a'\left(a,s_1\right)=a\dfrac{s_1+50}{100} \tag{1}

 c'=c'\left(c,s_2\right)=c\dfrac{s_2+50}{100} \tag{2}

 d'=d'\left(d,s_2\right)=d\dfrac{s_2+50}{100} \tag{3}

 各判定における補正ステータス x' についての成功比率を、2つのフィッティングパラメータ \mathrm{C_1}\mathrm{C_2} を用いた \dfrac{\mathrm{C_1}\mathrm{C_2}x'}{a'+\mathrm{C_2}x'} で測定データ全112点にフィッティングし、式(4)から式(8)が得られた。

p_1=\dfrac{0.273\cdot 0.193d'}{a'+0.193d'} \tag{4}

p_2=\left(1-p_1\right)\dfrac{0.193d'}{a'+0.193d'} \tag{5}

p_3=\left(1-p_1-p_2\right)\dfrac{20.9c'}{a'+20.9c'} \tag{6}

p_4=\left(1-p_1-p_2-p_3\right)\dfrac{0.972\left(c'+d'\right)}{a'+0.972\left(c'+d'\right)} \tag{7}

p_5=1-p_1-p_2-p_3-p_4 \tag{8}

 式(5)以下の \left(1-p_1-\cdots\right)入れ子構造は、より上位の判定で失敗した結果のうちから比率が与えられていることを意味する。また、 \dfrac{\mathrm{C_2}x'}{a'+\mathrm{C_2}x'} は、 a' が無限大あるいは x' がゼロで最小値ゼロ、 a' がゼロあるいは x' が無限大で最大値1を取る。 x' には回避、かすり判定で補正回避 d' 、防御判定で補正耐性 c' 、ヒット判定で補正耐性と補正回避の和 c'+d' が相当する。被攻撃機x' が大きいほど各判定における回避や防御の成功比率が増加し、被攻撃機に有利な攻撃結果になりやすくなる。ここで、 \mathrm{C_2} は最大値への収束の速さを意味し、たとえば \mathrm{C_2}=20.9 と大きい防御判定では、他の判定より比較的耐性が成功に対して小さくても防御に成功しやすいという性質を反映している。

 一方で、 \mathrm{C_1} は成功がゼロあるいは耐性ないし回避が無限大で収束する比率を意味する。すなわち、 \mathrm{C_1}=0.273 である回避比率 p_1 は、いかに低成功かつ高回避の条件を与えても、27%程度しか回避しないことを示唆している。対して回避判定以外の \mathrm{C_1} は1で、(上位判定結果を除く)各成功比率は、最大で100%を取るといえる。また、 \mathrm{C_1} の値に関係なく、各比率は最小でゼロを取る関数になっている。

 式(4)から式(8)を用いて、任意の条件での攻撃結果比率を予測できる。応用の章に詳しい。ただし、モデルはまだ仮説の段階で、改良の余地がある。フィッティング結果は測定データ全112点を標本誤差込みで説明できるが、一部条件での測定の不足、および大きな各標本誤差の排除が課題である。どの条件範囲でどの程度良い近似を与えるのかも、詰め切れていない。

 このたびモデル式を公開したことで、モデルを否定もしくはその正当性を補強するようなデータがプレイヤー諸氏から寄せられることを期待する。

手法

セッティング

 比率計算 #1ダメージ計算の測定データに新たに数点追加した、全112通りの条件の測定データ*2を解析に使用した。ここではそれら一つひとつについてセッティングを書かない(大変なので)。計測はすべてストーリー、超襲来、激闘、進撃のいずれかのステージで行っており、パーツさえあれば期間限定のものを除き再現実験が可能である。付録の章にて、測定条件となるステータスを比率と一緒に表にしているので、セッティングに疑問のあるものについては対応するデータ番号を個別に問い合わせてほしい。

攻撃結果比率の推定

 測定データの攻撃結果比率の最尤値には標本比率を用いた。また、その信頼区間はClopper-Pearsonの95%信頼区間を使用した(比率計算 #1の手法_統計的扱いその2を参照)。なお、4段判定モデルにおけるかすり、防御、ヒット成功比率については、それぞれより上位の判定結果の生起数を試行回数から除いたものを新たに試行回数として再定義して信頼区間を計算した。

フィッティング

 各判定における補正ステータス x' についての成功比率を、2つのフィッティングパラメータ \mathrm{C_1}\mathrm{C_2} を用いた \dfrac{\mathrm{C_1}\mathrm{C_2}x'}{a'+\mathrm{C_2}x'} で測定データにフィッティングをした。

 ただし、かすり、防御、ヒット成功比率については \mathrm{C_1}=1 で固定し、 \mathrm{C_2} のみを動かして重み付き最小二乗近似を行った。したがって、ここでは3種の成功比率が1に収束することを仮定している。

 他方で回避成功比率については、かすりと性質が近いとしてかすり成功比率で得られた \mathrm{C_2} の値を流用してこれを固定し、 \mathrm{C_1} のみを動かして重み付き最小二乗近似を行った。したがってここでは回避無限大で比率がいくらになるかをフィッティングで求めていることになる。4種の成功比率のフィッティングでパラメータが実質1つずつとした理由は、 \mathrm{C_1}\mathrm{C_2} を同時に動かしてもフィッティングに大差がない、敏感な測定データでないことに他ならない。

 フィッティングの重みは、各標本の分散の逆数で与えられる。本測定では真の分散は未知であるので、二項分布とした標本分散を近似的に用いたい。しかし実際には、しばしば生起数がゼロを取り、分散が発散および重みがゼロを取ってしまうため、すべての点で簡易的に試行回数の二乗の逆数を重みとして用いた。

結果

 各4回の判定における成功比率について、式(4)から式(7)から求めた予測に対し、実測の成功比率を図1から図4にそれぞれプロットした。

f:id:hakamaya:20220312160556p:plain

図1 回避成功比率のフィッティング評価

f:id:hakamaya:20220312154830p:plain

図2 かすり成功比率のフィッティング評価

f:id:hakamaya:20220312161418p:plain

図3 防御成功比率のフィッティング評価

f:id:hakamaya:20220312161957p:plain

図4 ヒット成功比率のフィッティング評価

 凡例の数字は補助スキルレベルの範囲で、異なるレベル間で同一の傾向を示すことがすなわち式(1)から式(3)による補正ステータスの有効性を示す。各回帰直線は重みを考慮しない最小二乗法で求められたものであることに注意。特にヒット成功比率では、サイズの小さい点に引っ張られて y=x の関係から大きくずれている。

 図では y=x にプロットが並ぶほど真の値に近い良い測定かつそれを反映する良い近似であるといえる。標本誤差で説明できないフィッティングとの残差を持つ標本は、回避で112点中4点(3.6%)、かすりで112点中4点(3.6%)、防御で112点中4点(3.6%)、ヒットで102点中5点(4.9%)であった。ヒット成功比率において標本数が少ないのは、ヒットとクリティカルの生起数すなわち試行回数がともにゼロであったデータが10個あったためである。もとより標本誤差の信頼率が95%であることを踏まえれば、この結果は、4段判定モデルおよびパラメータの値を含めた比率計算式の妥当性を示唆している。

 しかしながら、本質的に他のモデルを否定するものではないことに注意する必要がある。本来は、使用した関数とパラメータでしか測定を説明できないという議論をしなければならず、次回の課題である。ここで簡単に述べておくとすれば、関数は連続であること、比率がゼロまたは1となるような閾値はステータスがゼロまたは無限大を除く領域で存在しないことの2点が挙げられる。前者は図1から図4を見れば明白で、後者は成功、耐性、回避いずれかのステータスが200程度かつ該当スキルレベルがゼロと極端に低いかつそれと対立するステータスが極端に高い場合においても、比率がゼロまたは1でなかった数個の測定が根拠となる。

 くわえて、フィッティング関数は複雑なようでいて、動かしたパラメータは各攻撃結果について1個ずつのみである。攻撃結果間で同じ関数を適用する必要性も皆無であるが、結果的に同じものでもよく合ったわけである。こうした単純さは、フィッティングの妥当性を信じるうえでうれしい。

 ただ、測定データの質には疑問が残っている。回避とかすりについては、媒介変数になる \dfrac{0.193d'}{a'+0.193d'} が0.4以下の測定が実に112個、それ以上は0.90のわずか1個であり、定義域のゼロから1まで幅広く多点で網羅できているとはいえない。たとえば \dfrac{0.193d'}{a'+0.193d'}=0.5 となるのは \dfrac{d'}{a'}=5.2 となり、回避が成功の5倍以上であるような測定を増やしたいところである。

 反対に防御については、 \mathrm{C_2} の大きさゆえに、媒介変数になる \dfrac{20.9c'}{a'+20.9c'} が小さく防御比率が低く出る測定に不足が見える。たとえば \dfrac{20.9c'}{a'+20.9c'}=0.4 となるのは \dfrac{c'}{a'}=0.032 となり、実に成功が耐性の30倍を超えるような極端な測定が要求される。

 また、ヒットについては、基本的に攻撃結果の多数を占める回避、かすり、防御を定義上試行回数に含めないため、サイズを増やすのが容易ではない。そもそもヒットないしクリティカルの比率が小さい高耐性高回避での十分な測定は諦めるにしても、全体的にサイズを増やし、パラメータの精度の向上以前に式の確度を高めたい。

応用

 式は入れ子構造を取っており、任意の条件での各攻撃結果を個別にではなく同時に計算するのが手っ取り早く、理解しやすいだろう。

 例として、S地形下の浮遊脚部フィランソロピー(アルテミス、射耐1604.4、回避1674)補助51振り相手に、射撃99振りの任意の成功で射撃攻撃したときの各比率を計算した結果が図5である。

f:id:hakamaya:20220313112615p:plain

図5 フィランソロピー(防御のみ右軸)

 図5は防御比率のみ右軸を使用していることに注意されたい。また、横軸は補正成功 a' ではなく単なる成功 a としている。比率が線型でないことと、入れ子構造を持つことが災いして、このグラフを式だけから直感的に描くことは困難だろう。

 攻撃結果別に特徴を探っていくと、まず回避とかすりは単調減少している。これはそれらの判定がモデルにおいて先に行われ、式が比較的単純であることに起因する。下に凸に曲がっているのが式の特徴で、一般に低成功高回避側で急速に比率が変化することになる。反対に、成功を高めて右向きにグラフを進めても、ある程度すると回避、かすり比率の減少は緩やかになり、極めて高い成功をもってしてもかすりがなくならないという悲しい経験則が式にも表れている。回避がかすりと比較して曲がりが小さく比率も小さいのは、式を定数倍し、左側収束の値となる \mathrm{C_1} が小さいことによる。

 防御比率は回避およびかすり判定を終えた後に計算されるため、回避、かすり比率の高い低成功側では割を食うように全体に占める比率が下がっている。これは、 \mathrm{C_2} が非常に大きく、 a'\gg c' 以外では防御成功比率が \frac{c'}{a'} に概ね比例することも一因である。回避、かすり比率の減少が落ち着いた成功2500付近で極大値の81%を取り、以降緩やかに比率が落ちていく。

 残るヒットとクリティカルは、成功の増加に伴って回避や防御が成功しにくくなる分だけ比率も増加する。それらの比は式(8)の入れ子を除いた部分の \frac{c'+d'}{a'} が律しているため、全体での比率の大きさは成功2200付近で逆転してクリティカル優位になっている。戦略面からみると、クリティカルをたくさん出したいがために成功を懸命に上げても、空しい結果が待っているだろう。成功600で0.4%、1000で1%、2000でなお3.4%、あの手この手で4000まで上げたとしても精々9.1%である。フィランソロピーが特別堅いせいでもあるが、工夫し甲斐の無い仕様だというのが率直な感想である。

 別の例として、計算自体はやはり5種まとめて行うことを勧めるが、比較は特定の攻撃結果ごとに実施するのも有力だろう。たとえば症状や防御無視といった効果付きの攻撃は、当たるか当たらないかで展開が大きく異なる。そこで、別条件での各攻撃結果について比率を算出したのち、回避比率とかすり比率の和を比べてみることにする。図6は、射撃攻撃スキル50で成功を動かしたときの、対S地形フィランソロピー(射耐1604.4、回避1674)について、補助50、100、150での回避比率とかすり比率の和を列挙している。

f:id:hakamaya:20220313083706p:plain

図6 補助スキルレベルと命中

 かすりの煩わしさや補助機体のうざったさは、自身も一プレーヤーとして日々感じているところである。そこには一体どういった条件でどのくらい避けるかわからないという、手の打ちようのなさや不信感も少なからず働いているように思う。このたびこうして計算手段が生まれたことで、対策や戦略を練った上で想定状況の下振れ5%を引いたのなら仕方ないであるとか、失敗40%のリスクは許容できないので組み立てを変えようとかいった、能動的なリスクコントロールが可能となるだろう。

 図5と図6の作成は図7のようなエクセルシートで行った。

f:id:hakamaya:20220313091620p:plain

図7 エクセルを用いた比率予測およびグラフ作成

 A列にパラメータの数値を直打ちしておく。次に、H2からR2まで下記の数式を入力し、それらについて下向きにオートフィルを行う。あとはC列からG列に隙にステータスを入力すれば、N列からR列に各攻撃結果の比率のパーセント表記が自動で計算される。

 入力するステータスというのはあらかじめ式(9)の実行ステータスの計算式に従って算出したものを用いる(威力検証)。

実行ステータス=((パーツ+チップ+メダロッター)*(1+乗算効果a+乗算効果b+...)+性格ボーナス+ランク効果+脚部特性)*地形相性 (9)

H2
=C2*(D2+50)/100

I2
=E2*(G2+50)/100

J2
=F2*(G2+50)/100

K2
=$A$2*I2/(H2+$A$2*I2)

L2
=$A$3*J2/(H2+$A$3*J2)

M2
=$A$4*(I2+J2)/(H2+$A$4*(I2+J2))

N2
=$A$1*L2*100

O2
=(100-$N2)*L2

P2
=(100-$N2-$O2)*K2

Q2
=(100-$N2-$O2-$P2)*M2

R2
=(100-$N2-$O2-$P2-$Q2)

付録

 図8から図10に測定およびフィッティングに使用した全データ112点を載せた。別ページにて画像ではなく表を載せているので、コピー等する場合はそちらを使用してもらえればよい。xが生起数、pが標本比率および比率の最尤値、plが下側95%信頼区間、puが上側95%信頼区間。

f:id:hakamaya:20220313101215p:plain

図8 No.1-40

f:id:hakamaya:20220313101345p:plain

図9 No.41-80

f:id:hakamaya:20220313101440p:plain

図10 No.81-112

*1:攻撃MF、プラス症状エクスプロシブ状態での射撃攻撃、アサッシン、ランク5火薬属性、ランク5ガトリング、ガード体勢、マイナス症状ホビリティ、防御不能、回避不能、防御回避不能。コンシール等、ステータスに作用するものは含みません。抜けがあれば教えてください。

*2:*1に該当するものは含まれない。また、安易な仮定を避けるため、攻撃機、被攻撃機とも脚部は未破壊かつリミットオーバーなしかつメダルの脚部相性がグッドのものに限る。