【メダロットS】ダメージ計算の試み #2
こんにちは。今回の内容は、以前このブログに上げたダメージ計算記事の追加検証になります。検証作業に関する一般的なことはそちらの第一稿に書いているので、適宜合わせて読んでください。
はじめに
まず、前回までの進捗を簡単にまとめておきます。わかったこと、確認できたこととして、
- ダメージは4つの攻撃結果(かすり、防御、ヒット(防御無視)、クリティカル)ごと計算式が異なる。
- 平均ダメージは4つの攻撃結果それぞれについて、攻撃機の成功a、威力b、該当スキルレベルc、被攻撃機の該当耐性d、回避e、補助スキルレベルの合計fの6つの変数によって決まる。
- 平均ダメージは4つの攻撃結果それぞれについて、上記の変数についての線型結合によってある程度近似ができるが、求めた近似式が予測式としてあらゆる状況に適用できるかはわからない。
さらに、近似式が予測式として用いるのに十分と断言できない理由として、近似のために集めた実際のゲームにおけるダメージのデータに不備があることを指摘しました。具体的には以下になります。
- 攻撃スキルレベルが99以外のデータがわずかで、変数として加えることができていない。威力以外のその他のパラメータも標本間での差が小さく、変数として見なすのに十分とはいえない。
- 標本間で1種類のみパラメータの値に大きな差があるというものが少なく、各パラメータの違いがダメージに影響し合い、どのパラメータの違いによってダメージがどの程度異なるかの傾向をつかみにくい。
- 特定のパーツが標本の多数を占めることで、得られた近似式が実際の計算式と仮に大きく異なっていても、その限られた状況にさえ合っていれば問題ないように見えてしまう。
- 記録したデータのダメージが、システムの乱数によって同状況の平均ダメージからかけ離れている可能性を排除できない。
こうしたデータの不備の埋め合わせを追加で行っていく必要があります。手始めにこのたびは成功と威力の再評価および乱数による平均からのずれの排除を目的としました。
手法
セッティング
超襲来のvsユートピアン2にて、相手3機に検証対象の攻撃を繰り返し行いました。各攻撃行動の詳細は以下の通りです(表1、成功と威力に影響を与えないセッティングについては割愛しています)。すべてメダルレベル150、射撃スキルレベル99のメダル、地形相性はSです。
(A) カイチュウフロー星3Lv60、パワー、サラミLv6
(B) ヘビーウェイターLv90、CG0~29、スナイパー、カスミLv20
(C) ステップガンLv83、CG100、成功Iチップ1枚、キクヒメLv20
(D) ヘビーウェイターLv90、CG30~99、スナイパー、カスミLv20
(E) ヘビーウェイターLv90、CG100、スナイパー、カスミLv20
(F) ミュートハントLv85、成功Iチップ1枚、アラセLv20
(G) センチネルダイLv90、成功Iチップ2枚、スナイパー、キクヒメLv20、モンキーキャッチ(ウェポンマスター)
(H) ライジュウコウLv90、CG100、スナイパー、アリカLv20
(I) アールサイズLv90
表1 9種の攻撃行動
成功 | 威力 | |
---|---|---|
(A) | 664.8 | 916.8 |
(B) | 2026.8 | 916.8 |
(C) | 3009.6 | 916.8 |
(D) | 4053.6 | 916.8 |
(E) | 6080.4 | 916.8 |
(F) | 1598.4 | 588 |
(G) | 1599.6 | 2807.376 |
(H) | 1604.4 | 4262.4 |
(I) | 1599.6 | 6871.2 |
ご覧のように(A)から(E)は同威力で異なる成功を持ち、(F)から(I)はほぼ同成功で異なる威力を持ちます。これらの攻撃を特定の射耐と回避を持つ決まった相手に繰り出し比較することで、ダメージに対する成功だけないし威力だけの効果を測ることが可能となります。パーツの選定理由としては、威力ないし成功が所持パーツ中でほぼ同値にそろえられる3種以上を含む組み合わせがあること、かつ一方をそろえたラインナップ中でもう一方の値になるべく大きな変化が生じること、以上の2点が必須となります。
超襲来vsユートピアン2の相手の編成は図1から図3のようになっています。
2番機の脚部特性エルーシブが発動した場合は、与えたダメージを0.7で割ることで通常時のダメージに換算しています。また、相手装甲3倍のルールにより、非貫通技のプレスでも一度のロボトルで多くのデータを取ることができます。現在Hv積載量1以上の女型の飛行脚部(砂漠S)は存在しませんが、対地制御によってアールサイズのリミットオーバーを防止しました。デザートタイプ持ち脚部やMFインベーションを使っても良いでしょう。
攻撃相手としてこの場所を選んだ理由としては、第一にスキルレベルの振り分けが3機とも格闘99/助ける51であることが挙げられます。被ダメージに影響を及ぼすスキルレベルの標本における固定は不可欠です。検証初期の現段階では、メダロットSにおいて最も基本的な振り方である攻撃99/補助51を被攻撃機としたい旨があります。実はこの絞り込みだけでも、満足するステージは非常に限られます。それらのうち、個人的に1回のロボトル当たりの収集数が多く、なおかつ周回しやすいと感じたこちらに決定しました。
収集データの扱い
相手の脚部は三者三様です。成功と威力の評価を厳密に行うためには、異なる射耐と回避を持つ3機への攻撃を分離して扱う必要があります。しかし、今回それらの値が比較的近く、耐性の違いによりダメージが変化するデメリットよりも標本数を増やせるメリットの方が大きいと判断し、3機への攻撃データをすべて合算して評価をしました。すなわち耐性は全データで固定されていると見なすということです。
集めたデータは各攻撃行動(すなわち特定の攻撃ステータスを持つもの)について攻撃結果ごとに与ダメージの平均を求め、それをそのパラメータにおける固有のダメージとしました。このそれぞれの標本数が増えれば増えるほど、システムの乱数の影響が排除され、実際のゲーム内の計算式から算出されるダメージに近づくことになります(もちろん乱数が正負に対称である前提でですが)。換言すると、同一設定の標本数を増やすことにより、乱数による予想平均ダメージからのずれを取り除きます。
また、かすり時の評価は今回行っていません。というのも、高成功の攻撃ではまれにしかかすりが発生せず、加えて威力の調査についてもかすりの発生しないミサイルとアンチエア(回避不可でない相手に200回以上攻撃し、かすり・回避0回)を使用し、結果データ数が不十分だと判断したためです。
周回の実際
余談になりますが、周回は図4から図6で示すようなパーティーで行っていました。相手の助ける技による脚部性能の変化を防ぐためのディスターバンス、症状予防のための妨害クリアを備えています。特別ルールで守る技が使えない代わりに、ファーストエイドとフィールドリペア、MFハイパーリペアで自陣が崩壊しないよう努めます。
1回のロボトルにつきデータを取る攻撃行動は基本的に1種類だけで、ローテーションを該当パーツに指定しておくことで、フルチャージ等の準備後はオートで進めることができます。相手の脚部を壊してしまうと与ダメが増えるため、制約の許す限り腕狙いのメダルにすることで試行回数を稼ぐことができます。
2番機は初手ディスターバンス以降は妨害クリア連打、3番機は初手妨害クリア、2手目ファーストエイドまでを手動で行い、以後フィールドリペアを連打させます。ファーストエイドが切れるたびにオートを止めて再展開をし、回数が切れたらそのロボトルでの集計はほぼ終了となります。たまにMFハイパーリペアを入れたり、わたしが持っている脚部より速いものを使ったりすれば、安定して時間切れまで粘ることも可能でしょう。とはいえ弱い攻撃パーツでなければ時間切れよりまず先に相手3機の脚部を壊しきることになります。クリアによるコインが欲しいというわけでなければその時点でサレンダーしてしまって良いでしょう。
結果
成功の評価
同威力で成功の異なる(A)から(E)の攻撃行動の結果について、かすりを除く攻撃結果別に表2から表4にまとめました。表中の平均ダメージ欄の括弧内の数字は標準偏差です。最大値と最小値欄の括弧は平均ダメージとの比較です。本検証に限ってダメージ近似には使用しませんが、参考までに各耐性値を標本数で重み付けした平均として記載しています。
表2 成功の評価(防御時)
成功 | 威力 | 耐性 | 標本数 | 平均ダメージ | 最大値 | 最小値 | |
---|---|---|---|---|---|---|---|
(A) | 664.8 | 916.8 | 1022 | 53 | 802 (48) | 899 (+12.0%) | 730 (-9.0%) |
(B) | 2026.8 | 916.8 | 1046 | 8 | 1188 (68) | 1336 (+12.4%) | 1106 (-6.9%) |
(C) | 3009.6 | 916.8 | 1022 | 95 | 1607 (99) | 1806 (+12.4%) | 1428 (-11.1%) |
(D) | 4053.6 | 916.8 | 1092 | 10 | 1894 (98) | 2010 (+6.1%) | 1757 (-7.2%) |
(E) | 6080.4 | 916.8 | 982 | 77 | 2831 (174) | 3131 (+10.7%) | 2456 (-13.3%) |
表3 成功の評価(ヒット時)
成功 | 威力 | 耐性 | 標本数 | 平均ダメージ | 最大値 | 最小値 | |
---|---|---|---|---|---|---|---|
(A) | 664.8 | 916.8 | 1072 | 45 | 1408 (61) | 1501 (+6.6%) | 1299 (-7.8%) |
(B) | 2026.8 | 916.8 | 1046 | 7 | 2076 (89) | 2161 (+4.1%) | 1947 (-6.2%) |
(C) | 3009.6 | 916.8 | 1018 | 56 | 2825 (127) | 3038 (+7.6%) | 2562 (-9.3%) |
(D) | 4053.6 | 916.8 | 1097 | 6 | 3296 (72) | 3411 (+3.5%) | 3230 (-2.0%) |
(E) | 6080.4 | 916.8 | 991 | 19 | 4912 (252) | 5266 (+7.2%) | 4577 (-6.8%) |
表4 成功の評価(クリティカル時)
成功 | 威力 | 耐性 | 標本数 | 平均ダメージ | 最大値 | 最小値 | |
---|---|---|---|---|---|---|---|
(A) | 664.8 | 916.8 | 1057 | 14 | 1954 (84) | 2104 (+7.7%) | 1831 (-6.3%) |
(B) | 2026.8 | 916.8 | 996 | 3 | 2740 (200) | 2947 (+7.5%) | 2547 (-7.1%) |
(C) | 3009.6 | 916.8 | 1003 | 63 | 3928 (214) | 4430 (+12.8%) | 3476 (-11.5%) |
(D) | 4053.6 | 916.8 | 1084 | 2 | 4537 (196) | 4675 (+3.1%) | 4398 (-3.1%) |
(E) | 6080.4 | 916.8 | 992 | 61 | 6785 (349) | 7454 (+9.9%) | 5955 (-12.2%) |
さらに、これらについて成功対ダメージでプロットしたものが図7から図9になります。
縦軸方向の正負のエラーは標準偏差で付けています。いずれの攻撃結果についても高い直線性が現れ、全領域で傾きが一意に決まりました。
威力の評価
成功の評価と同様に、威力についても同成功異威力の(F)から(I)の攻撃行動の結果について、かすりを除く攻撃結果別に表5から表7にまとめました。表中の平均ダメージ欄の括弧は標準偏差、最大値と最小値欄の括弧は平均ダメージとの比較になります。各耐性値は標本数で重み付けした平均です。
表5 威力の評価(防御時)
成功 | 威力 | 耐性 | 標本数 | 平均ダメージ | 最大値 | 最小値 | |
---|---|---|---|---|---|---|---|
(F) | 1598.4 | 588 | 1072 | 15 | 543 (33) | 599 (+10.3%) | 499 (-8.1%) |
(G) | 1599.6 | 2807.4 | 992 | 107 | 3704 (176) | 4109 (+10.9%) | 3704 (-8.5%) |
(H) | 1604.4 | 4262.4 | 1016 | 86 | 5738 (261) | 6260 (+9.1%) | 5232 (-8.8%) |
(I) | 1599.6 | 6871.2 | 1054 | 61 | 9852 (447) | 10633 (+7.9%) | 9011 (-8.5%) |
表6 威力の評価(ヒット時)
成功 | 威力 | 耐性 | 標本数 | 平均ダメージ | 最大値 | 最小値 | |
---|---|---|---|---|---|---|---|
(F) | 1598.4 | 588 | 959 | 20 | 1264 (64) | 1358 (+7.4%) | 1149 (-9.1%) |
(G) | 1599.6 | 2807.4 | 998 | 96 | 4620 (218) | 5011 (+8.5%) | 4248 (-8.1%) |
(H) | 1604.4 | 4262.4 | 1002 | 29 | 6634 (282) | 7094 (+6.9%) | 6170 (-7.0%) |
(I) | 1599.6 | 6871.2 | 989 | 81 | 10853 (459) | 11647 (+7.3%) | 9983 (-8.2%) |
表7 威力の評価(クリティカル時)
成功 | 威力 | 耐性 | 標本数 | 平均ダメージ | 最大値 | 最小値 | |
---|---|---|---|---|---|---|---|
(F) | 1598.4 | 588 | 971 | 6 | 1725 (155) | 1907 (+10.6%) | 1507 (-12.6%) |
(G) | 1599.6 | 2807.4 | 1026 | 62 | 6422 (321) | 7148 (+11.3%) | 5640 (-12.2%) |
(H) | 1604.4 | 4262.4 | 989 | 25 | 9256 (536) | 10189 (+10.1%) | 8353 (-9.8%) |
(I) | 1599.6 | 6871.2 | 984 | 53 | 15012 (840) | 16524 (+10.1%) | 13439 (-10.5%) |
続いて、図10から図12はこれらについての威力対ダメージのグラフです。
ダメージの正負のエラーは標準偏差です。対成功と同様にいずれの攻撃結果についても高い直線性が現れ、全領域で傾きが一意に決まりました。
成功と威力の同時評価
(A)から(I)までの試行では、成功と威力以外のパラメータが固定されています(実際には耐性は幅を持っていますが)。したがって、(A)から(I)までダメージは成功と威力の2変数関数で表すことができます。そこで、(A)から(I)についてかすりを除く攻撃結果別に線型近似を行いました。それにより式(1)から式(3)を得ました(:ダメージ、:成功、:威力)。また、各標本について近似式から予想されるダメージに対して実測したダメージを図13から図15にプロットしました。
防御時
(1)
ヒット時
(2)
クリティカル時
(3)
フィッティングした各式の係数はいずれも、成功のみあるいは威力のみを動かして得た一次関数の係数と3%以内の差に止まっています。加えて予想ダメージと実測ダメージの差は最大で300に止まっており、これは耐性の幅と一部のデータ点での標本数不足から十分説明できるものです。こうした事実から、防御、ヒット、クリティカル時における平均ダメージは、少なくとも成功項と威力項に限ってはその線形結合で与えられることが決定的となりました。
考察
第一稿との比較
第一稿ではより多くのパラメータを変化させた近似となっており、仮定していた多変数線型近似を通じて一緒に議論することができます。これは具体的には同一の攻撃結果における係数をそのまま比べればよいということです。すると今回得た各係数は、それぞれ成功、威力の順で防御時は0.50倍、1.09倍、ヒット時は0.93倍、1.09倍、クリティカル時で0.90倍、1.09倍となります。
パラメータの振り幅を大きくかつノイズを小さくしていることから、計算式としての正しさは改善されているという立場を取ります。すると防御時の成功項の係数の差が顕著であるのは、旧防御式の計算式(≠近似式)としての誤りを指摘することになります。一番わかりやすい話だと思い強調して書いた成功の重要性は梯子を外されることとなり、少し残念です。
その誤謬の原因としては前回の考察の節で取り上げた、1.近似の関数が悪い、2.関数がパラメータの全領域で一つに決まらない、3.標本が悪いの3つのいずれか、あるいは複数と言えるでしょう。ただし少なくともこのたびの調査によって、成功項と威力項に関しては1.2.は否定されたことになります。防御時の成功を除いて似たような変化になったことも、何か原因を探るヒントとなるかもしれません。
適当な標本数
手法の節で述べたように、標本数を増やすほど乱数による誤差を排除できます。一方で当然ながらそれはある一点を打つためだけの作業量が増えるということです。攻撃側のスキルレベルといった、依然ダメージへの具体的な影響が未知数であるパラメータに今後調査範囲を拡張するにあたって、これは無視できない問題です。また、単に手間がかかるというだけならまだしも、今回取り上げられなかった高成功攻撃でのかすり時といった、システム的に頻発させられないケースも存在します。
そこで、収集作業に優先度を設け、重点的にデータを増やす部分とそうでない部分を考えていく必要があります。本検証でいえば、高いダメージが予想される試行については、標本数が少なくならないように心掛けました。というのも、乱数によるダメージ幅は基本的に平均ダメージの割合で決まり、ダメージが大きいほど差分としては大きくなるためです。近似はフィットする式からの差分を小さくするように計算するため、誤差要因は割合ではなく差分で効いてきます。
luxさん(lux (@medarotter_lux) | Twitter)の調査によると、乱数幅として平均ダメージの±7%、もしくは±10%が確認されたとのことです。本検証はそちらの報告と調和的で、耐性が同一のデータ間のみで比較すると、最大値から最小値まで幅はすべてのケースで10%以内に収まっています。
また、近似式を予測式として実用する際にも、たとえばダメージ1000で200(20%)ずれることよりも、ダメージ10000で1000(10%)ずれることの方が問題視されるでしょう。
今後の展望
かすり時を除くと、寄与が不明な残りのパラメータは耐性、攻撃スキルレベル、補助スキルレベルの3つです。これらについても今回と同様の手順で、あるパラメータだけ動かし、他は固定という試行を繰り返すことで、乱数による誤差を排除しつつ特定のパラメータのみの寄与を明らかにしていくつもりです。このうち耐性についてはすでに値を振って少しだけデータを取ってみましたが、第一稿の仮定と異なりどうも寄与が一次ではないように見えています。
メダロット辞典によると、これまで触れませんでしたがメダルレベルは充填・冷却に寄与するとだけあり、技の成功、威力ならびに耐性や回避についての影響は明記されていません。書いていないというのが影響がないという意味であれば、リーグ以外の場を利用した調査が大変楽になる可能性があります。スキルレベルの寄与と合わせてそちらから着手するのも良いかもしれません。
まとめ
今回、成功と威力のダメージへの影響について追加調査を行いました。具体的には影響を知りたいパラメータのみを変化させ、かつ理論的な平均ダメージと見なせるまで各試行を繰り返すことで、よりノイズを排除したデータの抽出に成功しました。そのデータはダメージが成功と威力の線型結合で与えられると断言することを満足しました。この結果は第一稿の主張の一部を補強する一方で、包括的なダメージ計算には未だ多くの課題が残されていることも突き付けました。今後も同様の手法を用いて、パラメータの影響を一つずつ明らかにしていく必要があります。
おわりに
今回はここまで。理由はどうあれ最近メダロットSの検証が賑わっているような気がしてうれしいです。メダSパスのEX缶の使い道が無いと嘆いているそこのあなたも、検証をやりましょう!同じ攻撃の記録を延々と取り続けるこのたびのやり方はなかなか刺激に乏しく、わたし一人ではとても選べなかったと思います。今は解釈しやすい結果が見事に現れてくれて一安心といったところ。
前回同様非常に読みにくい仕上がりになっていると思いますが、不明点でも疑問点でも何でもお問い合わせください。それでは。