はんまーに乾杯

メダロットSプレイ記

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

 こんにちは。今回は回避や防御の確率調査の第1弾です。

概要

 メダロットSのロボトルでは、攻撃に際して回避、かすり、防御、ヒット、クリティカルの5種類の攻撃結果のうちから1つが選ばれます。この比率は、一部の技や状況を除き、攻撃側の成功や被攻撃機の耐性等に応じて変化することが経験的に知られています。一方で、その具体的な値についてはゲーム内でも説明がなく、プレイヤーの間でも情報が不足していました。

 今回は実際のロボトルで攻撃機の成功、被攻撃機の耐性、回避、補助スキルレベルの4つのステータスを変化させながら攻撃を繰り返して得た統計データを元に、母比率の推定およびゲーム内での攻撃結果の決定手順の推測を行いました。

 その結果、次のような傾向が現れました。

  • 成功の増加に応じて回避比率、かすり比率と防御比率が減少し、クリティカル比率が増加した。
  • 回避ステと補助スキルレベルの増加に応じて回避比率、かすり比率が増加した。
  • 耐性と補助スキルレベルの増加に応じて防御比率が増加した。
  • 成功に対し回避と耐性がともに高い場合、防御より回避・かすりが優先して発生した。
  • 回避とかすり成否の判定の後、防御成否の判定、いずれも失敗した場合にヒットまたはクリティカルになるとすることで計測を説明できた。

 今回の計測データは、最終的な目的であるステータスから比率を返す計算式を定式化するには不十分で、今後条件やサイズを増やしていくことが望まれます。

手法

成功評価のセッティング

 以下に並べた、ダメージ計算 #4にて成功評価のために計測したデータの一部を用いました(表1)。

(A) ハイパーレーザー星1Lv1レーザー
(B) プレシス星2Lv1ライフル
(C) バイカラー星3Lv60ビーム
(D) エレクトミサイル星3Lv60アンチエア
(E) サイレントハント星5Lv90アンチシー
(F) ハーモニー星5Lv90アンチエア、パシーラLv20
(G) ポピュラー星5Lv90デストロイ、カスミLv20
(H) ポピュラー星5Lv90デストロイ、カスミLv20、グラビティ

表1

  成功
(A) 345.6
(B) 585.6
(C) 835.2
(D) 1089.6
(E) 1306.8
(F) 1718.4
(G) 2344.8
(H) 4209.6

 すべて射撃スキルレベル99で、成功の計算には次式を使用しました(威力検証)。

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

 場所は2021年12月29日から翌年の1月6日までの期間限定で開催されていた進撃!ロボトル「年末年始のロボロボ大進撃!」のステージ10-8で、相手はビーストマスター*3機です(図1)。

f:id:hakamaya:20220109205348p:plain

図1 限定進撃ステージ10-8

 元々攻撃結果確率の検証に用いるために取ったデータではないため、(おそらく)不必要な威力の統一がされていたり、防御比率が高く出るであろう極端に高耐性・低回避な被攻撃機であったりしますが、プロトモデルとしての調査に利用するには十分でしょう。

耐性、回避、補助スキルレベル評価のセッティング

 こちらも耐性、回避、補助スキルレベルを変化させた過去のダメージ計算 #3で取得したデータの一部、以下の(I)から(O)を見返して本評価に流用しました(表2)。

(I) ゲソカケシタLv90
(J) ジェットスラップLv90、格耐I*2、ヒコオLv3
(K) ダイコクチョーLv90
(L) ダッシュアタック(ホプライト+75%)Lv90
(M) オスワリLv90、サケカースLv20
(N) ブラックスタッグ(メダチェンジ)Lv90、サケカースLv20、スピード
(O) ダッシュアタック(ホプライト+75%)Lv90、サケカースLv20

表2

  耐性 回避
(I) 236.8 1677.6
(J) 548.4 2262
(K) 920 567.2
(L) 2171 865
(M) 2208 0
(N) 2210.4 2674.8
(O) 2807 865

 補助スキルレベルは(N)を除き0、51、150の3通りで、(N)のみ性格スピードの回避ボーナス量を合わせるために1、51、150で取りました。以下では補助スキルレベルnの被攻撃機(X)の標本を(X_n)と略記することにします。

 計測場所は常設超襲来のvsテオドラベリル2、攻撃パーツは敵3番機の右腕スカソルLv90です(図2)。なお、こちらも元々攻撃結果確率の検証に用いるために取ったデータではなく、エナジーが不自由なく消費できるならデータを追加したいところです。

f:id:hakamaya:20210906043452p:plain

図2 超襲来、vsテオドラベリル2
統計的扱いその1

 先に並べたような特定の条件でそれぞれ(被)攻撃を繰り返し、発生した攻撃結果を記録していくわけですが、それらの比率は必ずしも設定された確率通りにはなりません。無限回の試行をしない限り、ガチャと同じように上振れや下振れがあるわけです。無限回試行することはできないので、統計的な解析により設定確率を推定する必要があります。

 統計学一般についてはネット上にも多くの情報がありますし、ここでは網羅的な話はできませんが、本検証での具体的な手順を追いながら技術的な話を手短に書いておきます。初めは意味はよくわからずとも、計算機さえあればひとまず実践できることを目的として書いています。

 ある条件で n 回試行し、そのうちある攻撃結果が x 回起こったとします。このとき標本比率

p=\dfrac{x}{n} (1)

が得られます。

 ただし、知りたいのはゲーム内で設定された真の確率、母比率 \pi です。標本比率 p はそのまま最尤値として母比率 \pi の点推定に用いることができます。しかし、有限回の試行では必ずしも p\pi に一致しません。そこで、正規近似に基づく式(2)を使った区間推定を行います。

p - 1.96 \sqrt{ \dfrac{ p \left( 1 - p \right) }{ n } } \leq \pi \leq p +  1.96 \sqrt{ \dfrac{ p \left( 1 - p \right) }{ n } }  (2)

 このとき、不確実性を表す指標として p に加えられているものが95%信頼区間です。同じ推定を100回行えば、そのうち95回は真の値が区間内に入ります。母比率がぴったり何%だと決めるのは難しいので、推定に数理的に導かれる幅を持たせてやるわけです。分母が \sqrt{n} であることからもわかるように、信頼区間は試行回数を増やすほど狭くなり、すなわち誤差を小さくすることができます。推定した母比率の上下限が0から1の範囲を超える場合は、超過分をそのまま誤差範囲から差し引けばよいです。

 式(2)ではなく、t値と標準誤差から愚直に求めても構いません。ただ、いずれにしても正規近似を用いているのは同じで、試行回数が50もあれば式(2)との差は後述する式(3)、(4)と比較すれば小さいです。

統計的扱いその2

 手始めに確率の区間推定をしたいという場合は、とりあえず式(2)を使っておけば良いでしょう。計算も簡便ですし、なにより数理が明快です。

 ただ、本検証ではもう少し踏み込んだ解析を行いました。というのも、式(2)は確率分布が正規近似できることに依拠しているのですが、この近似がうまくいかない場合があるためです。そこで、代わりにClopper-Pearsonの信頼区間を用いました。

 そもそも本調査対象である一定確率で回避するかあるいはしないかといった二択の確率事象は一般にベルヌーイ試行と呼ばれ、確率分布は二項分布を取ります。 n が十分大きいとき、二項分布はより解析的に扱いやすい正規分布に漸近します。この性質を利用したのが式(2)だったわけです。

 しかし、この近似は n が小さく、また p が0または1に近い場合にはうまくいきません。良い近似を与える目安として、たとえば np \gt 5 かつ 1 - np \gt 5 といったものが使われるようです。今回の計測でも、少なからずこの目安を満たさないものがありました。

 正規近似が悪いなら、二項分布のまま検定をして信頼区間を算出しようというのがClopper-Pearsonの信頼区間です。下限値 p_ \mathrm{ lower } と上限値 p_ \mathrm{ upper } はそれぞれ次のように与えられます。

 p_ \mathrm{ lower } = B _ { \alpha / 2 } \left( x ,  n - x + 1 \right)  (3)

 p_ \mathrm{ upper } = B _ { 1- \alpha / 2 } \left( x + 1 ,  n - x \right)  (4)

 ここで、  B _ { q } \left( \alpha ,  \beta \right) は正のパラメータ \left( \alpha ,  \beta \right) を持つベータ分布の上側確率  100 \left( 1 - q \right) \% のパーセント点です。

 見た目と意味こそいかついですが、だれもがパソコンを持っている現代なら一瞬で計算できます。本検証ではExcelのBETA.INV関数で95%信頼区間を求めました。こうして得た区間推定を、最尤値である標本比率と合わせて解析に用いました。

 ちなみに、ウェブ上で検索するとベータ分布の代わりにF分布を利用した信頼区間が多く見つかります。2つの分布が変数変換で行き来できることを踏まえれば、これらは本質的に同じものです。計算が面倒なF分布に基づく信頼区間の方が普及しているのは不思議ですが、分布表などで数値解を出していた時代の名残なのかと想像しています。

結果

成功の評価

 ビーストマスター(射耐2508、回避613.2、補助スキルレベル0)相手に成功を変化させて攻撃を繰り返して計測した、各攻撃結果の発生回数xおよびその比率pの点推定と区間推定を表3に示します。

表3

  成功 n x_回避 x_かすり x_防御 x_ヒット x_クリ p_回避 p_かすり p_防御 p_ヒット p_クリ 区間p_回避 区間p_かすり 区間p_防御 区間p_ヒット 区間p_クリ
(A) 345.6 176 5 22 147 2 0 0.028 0.125 0.835 0.011 0 0.009, 0.065 0.08, 0.183 0.772, 0.887 0.001, 0.04 0, 0.021
(B) 585.6 179 2 8 167 2 0 0.011 0.045 0.933 0.011 0 0.001, 0.04 0.019, 0.086 0.886, 0.965 0.001, 0.04 0, 0.02
(C) 835.2 165 1 8 152 3 1 0.006 0.048 0.921 0.018 0.006 0, 0.033 0.021, 0.093 0.869, 0.957 0.004, 0.052 0, 0.033
(D) 1089.6 215 2 7 194 5 7 0.009 0.033 0.902 0.023 0.033 0.001, 0.033 0.013, 0.066 0.855, 0.939 0.008, 0.053 0.013, 0.066
(E) 1306.8 127 1 2 112 5 7 0.008 0.016 0.882 0.039 0.055 0, 0.043 0.002, 0.056 0.813, 0.932 0.013, 0.089 0.022, 0.11
(F) 1718.4 189 0 3 166 9 11 0 0.016 0.878 0.048 0.058 0, 0.019 0.003, 0.046 0.823, 0.921 0.022, 0.088 0.029, 0.102
(G) 2344.8 151 0 2 129 4 16 0 0.013 0.854 0.026 0.106 0, 0.024 0.002, 0.047 0.788, 0.906 0.007, 0.066 0.062, 0.166
(H) 4209.6 140 2 1 105 2 30 0.014 0.007 0.75 0.014 0.214 0.002, 0.051 0, 0.039 0.67, 0.819 0.002, 0.051 0.149, 0.292

 成功に対して、回避とかすり(図3)、防御(図4)、ヒットとクリティカル(図5)の比率をそれぞれプロットしました。

f:id:hakamaya:20220126164100p:plain

図3 成功の評価(回避、かすり)

f:id:hakamaya:20220126164128p:plain

図4 成功の評価(防御)

f:id:hakamaya:20220126164147p:plain

図5 成功の評価(ヒット、クリティカル)

 概観としては、かすりと防御は単調減少、クリティカルは単調増加しているように見えます。これはプレイの実感に合うものです。他方で回避とヒットは低い比率で横ばいに見えます。回避率については、被攻撃機がスキルレベルも含めて極めて低い回避ステであることを考慮すれば不思議ではありません。ヒットについてはクリに比べると成功上昇に伴う伸びがほとんどありません。ただし、この段階では成功がヒット率にほぼ効かないと結論付けるのは早計で、被攻撃機の耐性と回避のアンバランスさなど、データを追加して幅広く因果関係を探っていく必要があります。

 他に気になるのは、最も成功の低い(A)です。この点だけ回避とかすりの比率が増え、割を食うように防御率が下がりました。ここには比率算出における根本的な問題が潜んでいると考えられます。

 回避ステに対して成功を下げると回避とかすり率が上がり、また耐性に対して成功を下げると防御率が上がるとしましょう。すると今回のように耐性と回避が一定のまま成功を下げ続ける、すなわち耐性と回避に対して同時に成功を下げ続けると、ヒットとクリがゼロになった後は回避、かすり、防御で飽和してしまいます。しかし、実際に飽和した(B)から(A)では、防御率を落としてでも、かすりと回避が続伸する、回避・かすりの優先が存在します。

 この矛盾は、ゲーム内の計算において、回避・かすりの判定が先に行われ、そこで回避またはかすりが選ばれなかった場合に限り、続けて防御するか否かの判定が行われていると考えると解消できます。

 この仮定を元に、回避とかすりをそれぞれ除いた試行のみから、防御の比率を算出したものが図6です。

f:id:hakamaya:20220126200029p:plain

図6 回避、かすりを除いた成功の評価(防御)

 このように取ると、防御比率はあくまでヒット・クリティカルに対しては(B)から(A)で減っていなかったことがわかりました。これは、耐性に対して成功を下げると防御率が1になるまで上がるという関係から外れていません。図中の回帰直線のように比例関係にあるかはまだ何とも言えませんが、図4の極大を持つグラフより解釈が容易になりました。

耐性、回避補助スキルレベルの評価

 スカソルのソード(成功2079.6、格闘スキルレベル99)を、耐性、回避、補助スキルレベルの異なる(I)から(O)の機体で受けたときの、各攻撃結果の発生回数xおよびその比率pの点推定と区間推定を表4に示します。

表4

  耐性 回避 補助スキル n x_回避 x_かすり x_防御 x_ヒット x_クリ p_回避 p_かすり p_防御 p_ヒット p_クリ 区間p_回避 区間p_かすり 区間p_防御 区間p_ヒット 区間p_クリ
(I_0) 236.8 1677.6 0 163 1 3 81 19 59 0.006 0.018 0.497 0.117 0.362 0, 0.034 0.004, 0.053 0.418, 0.576 0.072, 0.176 0.288, 0.441
(I_51) 236.8 1677.6 51 214 8 20 117 22 47 0.037 0.093 0.547 0.103 0.22 0.016, 0.072 0.058, 0.141 0.477, 0.615 0.066, 0.152 0.166, 0.281
(I_150) 236.8 1677.6 150 116 6 19 66 15 10 0.052 0.164 0.569 0.129 0.086 0.019, 0.109 0.102, 0.244 0.474, 0.661 0.074, 0.204 0.042, 0.153
(J_1) 548.4 2262 0 157 3 13 91 16 34 0.019 0.083 0.58 0.102 0.217 0.004, 0.055 0.045, 0.137 0.498, 0.658 0.059, 0.16 0.155, 0.289
(J_51) 548.4 2262 51 118 5 18 77 10 8 0.042 0.153 0.653 0.085 0.068 0.014, 0.096 0.093, 0.23 0.559, 0.738 0.041, 0.15 0.03, 0.129
(J_150) 548.4 2262 150 152 8 35 96 9 4 0.053 0.23 0.632 0.059 0.026 0.023, 0.101 0.166, 0.305 0.55, 0.708 0.027, 0.109 0.007, 0.066
(K_0) 920 567.2 0 114 0 1 89 3 21 0 0.009 0.781 0.026 0.184 0, 0.032 0, 0.048 0.694, 0.853 0.005, 0.075 0.118, 0.268
(K_51) 920 567.2 51 98 1 3 79 9 6 0.01 0.031 0.806 0.092 0.061 0, 0.056 0.006, 0.087 0.714, 0.879 0.043, 0.167 0.023, 0.129
(K_150) 920 567.2 150 92 4 5 76 1 6 0.043 0.054 0.826 0.011 0.065 0.012, 0.108 0.018, 0.122 0.733, 0.897 0, 0.059 0.024, 0.137
(L_0) 2171 865 0 104 2 7 77 6 12 0.019 0.067 0.74 0.058 0.115 0.002, 0.068 0.027, 0.134 0.645, 0.821 0.021, 0.121 0.061, 0.193
(L_51) 2171 865 51 77 0 3 69 0 5 0 0.039 0.896 0 0.065 0, 0.047 0.008, 0.11 0.806, 0.954 0, 0.047 0.021, 0.145
(L_150) 2171 865 150 86 2 6 77 1 0 0.023 0.07 0.895 0.012 0 0.003, 0.081 0.026, 0.146 0.811, 0.951 0, 0.063 0, 0.042
(M_0) 2208 0 0 58 0 0 51 0 7 0 0 0.879 0 0.121 0, 0.062 0, 0.062 0.767, 0.95 0, 0.062 0.05, 0.233
(M_51) 2208 0 51 61 0 0 54 3 4 0 0 0.885 0.049 0.066 0, 0.059 0, 0.059 0.778, 0.953 0.01, 0.137 0.018, 0.159
(M_150) 2208 0 150 87 0 0 80 6 1 0 0 0.92 0.069 0.011 0, 0.042 0, 0.042 0.841, 0.967 0.026, 0.144 0, 0.062
(N_1) 2210.4 2674.8 1 109 5 10 83 5 6 0.046 0.092 0.761 0.046 0.055 0.015, 0.104 0.045, 0.162 0.67, 0.838 0.015, 0.104 0.02, 0.116
(N_51) 2210.4 2674.8 51 86 5 15 63 1 2 0.058 0.174 0.733 0.012 0.023 0.019, 0.13 0.101, 0.271 0.626, 0.822 0, 0.063 0.003, 0.081
(N_150) 2210.4 2674.8 150 71 12 10 48 1 0 0.169 0.141 0.676 0.014 0 0.09, 0.277 0.07, 0.244 0.555, 0.782 0, 0.076 0, 0.051
(O_0) 2807 865 0 98 2 0 83 5 8 0.02 0 0.847 0.051 0.082 0.002, 0.072 0, 0.037 0.76, 0.912 0.017, 0.115 0.036, 0.155
(O_51) 2807 865 51 94 1 2 86 3 2 0.011 0.021 0.915 0.032 0.021 0, 0.058 0.003, 0.075 0.839, 0.963 0.007, 0.09 0.003, 0.075
(O_150) 2807 865 150 92 5 11 73 2 1 0.054 0.12 0.793 0.022 0.011 0.018, 0.122 0.061, 0.204 0.696, 0.871 0.003, 0.076 0, 0.059

 まず、回避比率について見ていくのですが、回避ステと補助スキルレベルの両方が異なるデータ間でも比較を行いたいです。そのために、防御時のダメージが耐性・回避ステと補助スキルレベルを乗算する形で参照していたことから、攻撃結果決定の計算についても乗算で変数になっていると類推します。ダメージ参照時と同様に、回避* (補助レベル+70) として横軸を取ったグラフが図7、補正定数を最小の正の整数の1すなわち回避* (補助レベル+1) として横軸を取ったグラフが図8です。

f:id:hakamaya:20220128150743p:plain

図7 回避ステと回避率

f:id:hakamaya:20220128150829p:plain

図8 不適切な補助スキルレベル補正の例

 図7と図8の差は一目瞭然で、補助レベルに70を足した方がはっきりと同一の増加傾向に従います。この補正定数は、スキルレベルの差を緩和するものと解釈すればよいです。たとえば仮に定数が1だとすると、補助スキルレベル0と51では回避の実行値が52倍になるのに対し、仮に定数が70なら1.7倍にまで差が縮まります。現在の計測データからはこれ以上正確な値を探っても意味がないため、ひとまずこのまま補正定数を70とします。また、図中には回帰直線を併記していますが、実際に回避と回避率が比例関係にあるかは何とも言えません。ただし、単調増加であるとは見なせました。また、かすりについても回避* (補助レベル+70) に対して比率が誤差範囲内で単調増加しました。

 最後に、防御比率について述べます。これも成功の評価のときと同様に、成功に対して耐性と回避がともに高い場合(たとえば(O_150))には、回避・かすり率が高まり続ける一方で、見かけの防御比率が下がりました。これもやはり回避・かすりの判定が先に行われ、そこで回避またはかすりが選ばれなかった場合に限り、続けて防御するか否かの判定が行われていると考えるとうまくいきました。耐性と補助スキルレベルの関係を回避と同様に耐性* (補助レベル+70) として、回避とかすりを除いた試行のみから防御の比率を算出したものが図9です。

f:id:hakamaya:20220128160011p:plain

図9 耐性と防御率

 高耐性では比率が1に収束する、すなわちほとんどヒットやクリティカルが出なくなりました。他方、耐性を下げていくと防御率は1次以上に大きく落ち込んでいき、最も耐性の低い(I_0)では防御とヒット+クリティカルの回数が1:1ほどになりました。

考察

段階的な攻撃結果判定の存在

 成功に対して回避と耐性がともに高くヒットとクリティカルがほとんど発生しない場合、防御より回避またはかすりを優先することはわかりました。さらにこれは回避またはかすりになるか否かの計算の後、否だった場合に限り防御の判定計算が行われるとすると辻褄が合いました。こうした段階的な攻撃結果判定が存在すると現在は考えています。

 一方で、回避とかすりもまた判定の段階が分かれているのか、ヒットやクリティカルは回避またはかすり、防御と判定されなかった残りとしてよいのかといったところは、解析はいくらかしたものの結論が出ていません。はっきりしない原因の多くは計測の条件とサイズの不足にあり、今は解析よりそちらの充実が先です。比率の定式化をするにしても、証拠をもう少し固めてからになるでしょう。

段階的判定に伴う誤差

 今回標本誤差には、二項分布である前提でClopper-Pearsonの信頼区間を用いました。しかし、先に議論した段階的判定を認めると、その確率は二項分布に従いません。先に行われる判定の影響を受ける、条件付き確率となるためです。

 ただし、これは深刻な問題とならないと考えています。第一に、試行回数nで算出した誤差が、条件付きの厳密な誤差を上回るとは直感的には考えにくいためです。第二に、回避とかすりを除いて防御比率を出したように、ある判定後の判定についても正しい条件さえ与えてやればまた紛れもなくベルヌーイ試行になるためです。もっとも、条件が正しいかは結果がそれらしいかから事後的に判断することになりますが。

 むしろ段階的判定による誤差の大きさそのものが問題です。仮に5種の攻撃結果のうち最大の4回判定があり、1種ずつそうであるか否かが決まる仕様だとするなら、最後の判定では残りの2種のみの発生回数の和が試行回数になります。そのため、ここの相対誤差を小さくするには、単に試行回数というより残りの2種の発生回数が多くならないといけません。たとえばヒットとクリティカルがこれに該当するとなると、条件によってはそれらは精々全体の2%であったりしますから、これを50回集めるだけでも全体で2500の試行回数が要求されることになります。

まとめ

 攻撃結果の比率は、これまで具体的な値が明らかになっていませんでした。そこで、今回は攻撃機の成功、被攻撃機の耐性、回避、補助スキルレベルの4つのステータスについて、実際の計測データから比率への影響を調査しました。

 その結果、成功に対して回避が高いほど回避比率、かすり比率が増加し、耐性が高いほど防御比率が増加、反対にそれらが低いとヒットとクリティカル比率が増加するという経験的事実がはっきりと表れました。また、それらの判定は同時より段階にわかれていると見なす方が自然であることもわかりました。

 一方で、比率計算の定式化には至らず、今後も計測を増やしていく必要があります。