luxのメダロットブログ

ダメージ計算検証ほか

攻撃スキルLvのダメージ寄与#1

この記事の概要

攻撃スキルLv(以降、攻Lv)のダメージ寄与について、9/25現在の解析結果を掲載します。 こちらは攻Lvのダメージ寄与が線形(一次関数形)と言い切れなそうであるため、かなり解明に時間がかかっていて、本日に至るまで確立した何かを言うことはできていません。 一方で、攻Lvが51以上で一次関数形であるとの過程を置いた場合についての攻撃スキルLvのダメージ寄与についてはわかったことがあるため説明しています。

※本記事がメダロットS関連であることがわかるよう、アイキャッチ画像はゲーム画像になるよう心がけています

f:id:medarotter_lux:20210925184635p:plain

MFバフを利用しない構成ではCアブソーバを利用しています

f:id:medarotter_lux:20210925092057p:plain

検証用の記録動画が1TBほどになりました

 

試行内容と仮説

こちらのアプローチの詳しい説明は威力成功#3の試行内容と仮説に譲りますが、攻Lvのダメージ寄与が和・積・どちらでもないのいずれなのかを解き明かします。威力成功#3で威力と成功は和の関係であることが分かっているので下記のようになります。(積)の例においては攻Lvの威力への寄与と成功への寄与が別になっているのがポイントです。

  - D = A0 * { fn_攻Lv + ( fn_威力 + fn_成功 ) } + B0 - (和)
  - D = A0 * ( fn_攻Lv威力 * fn_威力 + fn_攻Lv成功 * fn_成功 ) + B0 - (積)
  - D = A0 * fn_攻Lv威力成功 + B0 - (どちらでもない)

今回は非常にたくさんのデータを計測しました。

<攻Lvのダメージ寄与特徴解析>
  - ハーモニー攻Lv = (99, 90, 80, 75, 70, 60, 51, 40, 35, 30, 20, 15, 10, 0)
  - シュートバレル攻Lv = (99, 90, 80, 75, 70, 60, 51, 40, 30, 20, 10, 0)

<攻Lvのダメージ寄与導出>
  - ハーモニー+オプチカル攻Lv = (99, 75, 51)
  - ハーモニー+オプチカル+アズマ攻Lv = (99, 75, 51)
  - ハーモニー+グラビティ攻Lv = (99, 75, 51)
  - ハーモニー+グラビティ+チトセ攻Lv = (99, 75, 51)

 

解明にあたり試行したこと

今回はなぜこのようなデータ計測をしたかにも触れようと思います。はじめはよく使われるであろう攻Lv = (99, 75, 51, 0)の傾向だけを見ようと思っていました。99は攻撃特化機、75は格闘射撃両立機、51は支援メインだが攻撃もさせたい場合、0は支援特化機の4種です。結果はこのようになり、攻Lv = [51, 99] の傾向とそれ以下で傾向が異なるようでした。4色打点は推定したダメージ中央値で、99%信頼区間はエラーバーで表現されています。

f:id:medarotter_lux:20210925095026p:plain

ハーモニー攻Lv = (99, 75, 51, 0)

一方で同時に、ダメージの最低保証のようなものがあるのではと思いつきました。 つまり攻Lv0では最低保証にあたり傾向が変わっているのではという説です。この図のように外挿線を書いてみると、かすり(青)や防御(赤)は攻Lv10前後でマイナスダメージになってしまいます。それはいけないので最低保証ダメージに置き換えているのでは、という考えです。この結果、攻Lv = [0, 51]の深追いが始まりました。

f:id:medarotter_lux:20210925095812p:plain

外挿線を追加。かすりと防御はマイナスダメージに

深追いした結果、いわゆる最低保証はなく、なだらかにダメージが増えていく傾向だとわかりました。またこうなってくると、一見一直線に見える攻Lv = [51, 99]の区間も実はなだらかな増加傾向になっているのではと気になりました。

以降は次章で説明します。

f:id:medarotter_lux:20210925100715p:plain

攻Lv = [0, 51] の深追い

 

攻撃スキルLvのダメージ寄与特徴解析#1

結果はこちらのとおりです。同一の傾向と認められる区間は実直線または破線直線でグルーピングされています。たとえば「ヒット」の例では、攻Lv = [80, 99]区間、[35, 80]区間、[30, 35]区間、[0, 30]区間と4傾向あることが分かります。

このグルーピングは99%信頼区間を通すことのできる直線が見つかる最長区間で区別したもので、「ヒット」の例では[80, 99]の区間までは一直線を通せるが、攻Lv = [75, 99]とした場合には一直線を通すことができなかったことを意味します。

一方で、この傾向に一貫性はまだ見いだせていません。

f:id:medarotter_lux:20210925101648p:plain

攻Lv = [51, 99] の深追い

こちらはパーツをシュートバレルに変えた場合です。信頼区間の広さにもよるのですが、傾向が変わる場所はさほど多くなく、およそ攻Lv40以降では単一の傾向となっているように見えます。ハーモニーの事例よりダメージそのものが高いことも影響しているかもしれません。

f:id:medarotter_lux:20210925103450p:plain

シュートバレルの例

こちらの調査は今後も継続します。 目下気になっているのは、格闘スキルLvが射撃攻撃のダメージに寄与ていないか(いくつかのデータで格闘スキルLvが入っているものがある)であり、それがこの一貫性のなさを生んでいる可能性を感じます。またこのブログで一貫して採用しているダメージ中央値導出についても気にしています。 たとえば乱数ダメージが正負同値でなく、攻Lvに応じてどちらかが多い少ないなどなっている場合にはこのアプローチは不適当です。また別の観点として、たとえばダメージ500またぎ、1000またぎで傾向が変わるようにあとから計算が入るのかなども気にしています。 あとは、計測過程で別攻Lvのものが混じってしまっている可能性や、集計ミスもあるかもしれません。

次章では攻Lvがダメージに与える影響を説明します。 その中では攻Lvがダメージに与える影響は一次関数であるとしています。 それは本解析で比較的安定して統一した傾向を持つ攻Lv = [51, 99]に対し、最小二乗近似で求めた一次関数です。

 

攻撃スキルLvのダメージ寄与#1

結論としては、攻Lvのダメージ寄与は積と結論付けられそうです。 (積)の式を、攻Lv、威力、成功ともに一次関数であるとして展開すると

  - D = A0 * ( fn_攻Lv威力 * fn_威力 + fn_攻Lv成功 * fn_成功 ) + B0 - (積)
         = A0 * { ( a_攻Lv威力 * 攻Lv + b_攻Lv威力 ) * (a_威力 * 威力 + b_威力) + ( a_攻Lv成功 * 攻Lv + b_攻Lv成功 ) * (a_成功 * 成功 + b_成功) } + B0
         = A1 * 攻Lv * 威力 + A2 * 攻Lv * 成功 + A3 * 攻Lv + A4 * 威力 + A5 * 成功 + B1
ここで成功を固定した場合について、

  - D(成功固定) = A1 * 攻Lv * 威力 + A6 * 攻Lv + A4 * 威力 + B2
  - dD(成功固定)/d攻Lv = A1 * 威力 + A6
  - dD(成功固定)/d威力 = A1 * 攻Lv + A4

同様に、威力を固定した場合について、

  - D(威力固定) = A2 * 攻Lv * 威力 + A7 * 攻Lv + A5 * 成功 + B3
  - dD(威力固定)/d攻Lv = A2 * 成功 + A7
  - dD(威力固定)/d成功 = A2 * 攻Lv + A5

つまり、成功固定でのダメージの勾配が威力や攻Lvの一次関数形と言えれば(積)といえます(威力固定とした場合も同様)。

また(和)の場合はこの通りです。
  - D = A0 * { fn_攻Lv + ( fn_威力 + fn_成功 ) } + B0 - (和)
        = A8 * 攻Lv + A9 * 威力 + A10 * 成功 + B4

成功を固定した場合は、
  - D(成功固定) = A8 * 攻Lv + A9 * 威力 + B5
  - dD(成功固定)/d攻Lv = A8 = const.
  - dD(成功固定)/d威力v = A9 = const.

威力を固定した場合は、
  - D(威力固定) = A8 * 攻Lv + A10 * 成功 + B5
  - dD(威力固定)/d攻Lv = A8 = const.
  - dD(威力固定)/d成功v = A10 = const.

つまりダメージの勾配が定数であれば(和)といえます。

結果はこちらのとおりで、ダメージの勾配は威力や成功、攻Lvの一次関数形でした。また式のとおり、どちらも比例係数(A1,A2)は同じでした(小数点以下第10位くらいまでのレベルで同じであり、にわかには信じられないところもありますが)。

  - dD(成功固定)/d攻Lv = 0.010 * 威力 + 6.450
  - dD(成功固定)/d威力 = 0.010 * 攻Lv + 0.512
  - dD(威力固定)/d攻Lv = 0.005 * 成功 + 6.255
  - dD(威力固定)/d成功 = 0.005 * 攻Lv + 0.262

そして、傾きへの威力の寄与度と成功への寄与度の比は2:1ほどのようです。これは威力、成功のダメージ寄与#3でも見られた傾向です。(そちらの記事では触れていませんでしたが、威力のダメージ寄与(式中a_威力)は1.534、成功のダメージ寄与(式中a_成功)は0.762とおよそ2:1の関係でした。)

f:id:medarotter_lux:20210925170437p:plain
f:id:medarotter_lux:20210925170443p:plain
成功固定でのダメージ傾き。一次関数形の傾向あり
f:id:medarotter_lux:20210925170441p:plain
f:id:medarotter_lux:20210925170439p:plain
威力固定でのダメージ傾き。一次関数形の傾向あり

 

今後の進め方

本エントリーはここまでにしようと思います。 本当は、今回得たパラメータがどの程度実際に合致するのかや、そもそももっと丁寧な解説もやりたいのですが、それは次回以降に譲ることにします。ある程度式などが明確になってからのほうが話しやすい事情もありますし。

また、このしばらくの間に耐性と回避のダメージ寄与も求めていました。 こちらもまとまったらご紹介します。