はんまーに乾杯

メダロットSプレイ記

【メダロットS】ダメージ計算の試み メモ

 こんにちは。防御時のダメージ計算式はもうちょっとで完成というところまで来ました。ただし、そのもうちょっとというのが最難関で、いつ解けるかわかりません。ちょうどluxさん(Twitter)に紹介していただいた折、現状の理解を簡単にメモしておきます。

medarotter-lux.hatenablog.com

防御時のダメージ計算式

成功1次項

 防御時のダメージ D は、攻撃側の成功 a 、威力 b 、攻撃スキルレベル  s_1 、防御側の耐性  c 、回避  d 、補助スキルレベル  s_2 によって与えられます。

 D=D\left(a,b,c,d,s_1,s_2\right) (1)

  D は二つの項 D_1D_2 にわけると見通しが良くなります。

 D=D_1\left(a,b,c,d,s_1,s_2\right)+D_2\left(b,c,s_1,s_2\right) (2)

 式(2)のように、 D_1 は成功と回避を変数に含み、 D_2 は含みません。 D_1 はさらにある成功 a_0 を境に次のように書けます。

D_1=0 \left(a\lt a_0\right) (3)

D_1=\displaystyle \alpha\left(a-a_0\right)\dfrac{50+s_1}{50+99} \left(a\gt a_0\right) (4)

 ここで、 \alpha は成功の1次関数パラメータと見なすことができます。ただし、 \alpha は定数ではなく、次のような威力、耐性、攻撃スキルレベル、補助スキルレベルの関数として表せます。

\alpha=\alpha\left(b,c,s_1,s_2\right)

 =\displaystyle 0.763\cdot\left(1-\dfrac{1}{\dfrac{b\left(50+s_1\right)}{c\left(50+s_2\right)}+1}\right) (5)

 式(5)からわかるように、 \alpha はスキルレベルを含めて威力が高いほど大きく、また耐性が高いほど小さくなります。

 式(3)と式(4)をスイッチするある成功 a_0 もまた定数ではなく、次の式(6)のように耐性、回避、補助スキルレベルの3つのステータスによって決まります。

a_0=a_0\left(c,d,s_2\right)

  =0.0034\cdot\left(c+d\right)\left(50+s_2\right)-7.52 (6)

 成功のダメージ寄与の度合いを決めるものだと見なせた  \alpha に対し、 a_0 は成功のダメージ寄与の始点を決めるものといえ、この値以下の成功値ではダメージが増えません。また、 \alpha と違い威力にはよらず、唯一回避ステータスが影響するパラメータでもあります。

 ここまで、式(3)から式(6)まで、成功の1次項 D_1 はパラメータの値まで含めて詳細にわかっています。測定データが膨大なこともあり、解析手順の説明は日と記事を改めて行う予定です。

f:id:hakamaya:20220223000705p:plain

図1  \alpha と測定データ

f:id:hakamaya:20220223001004p:plain

図2  a_0 と測定データ
成功を含まない項

 さて、解決していないのが成功を含まない D_2 の方です。式(2)より D_2 は式(7)ように表せます。

D_2=D-D_1 (7)

 すなわち、測定した D から式(3)から式(6)により計算した D_1 を引くことで、 D_2 を求めることができます。これは大変強力な式で、 D から D_2 への変換を行うことで、あらゆる条件のダメージから成功と回避の寄与を除外し、(各スキルレベルを加味した)威力と耐性のみからなる関数として解析することができます。

 #3で測定した成功と威力が一定のデータについて、式(7)から D_2 を求めました(図3)。

f:id:hakamaya:20220223002953p:plain

図3  D_2 と耐性の関係

 図3のように、横軸を補助スキルレベルを加味した耐性 c\left(50+s_2\right) で取ると D_2 は単調減少します。このことから D_2 は回避によらず、耐性によってのみ軽減されることがわかります。#3にて \left(c+0.2d+300\right)\left(70+s_2\right) を横軸に取るとダメージが単調減少するように見えると報告しましたが、それは D_1a_0 に含まれる回避の影響を分離できなかったことによる性質の良くない近似だったと判明しました。

 今度は攻撃スキルレベルを加味した威力 b\left(50+s_1\right) を横軸に取り、#4の対ビーストマスターの威力評価で計測したもの、luxさんによる対ヒメダッカーの計測データを含む、ある耐性相手に威力を変化させて取ったダメージから変換した D_2 を図4にプロットしました。

f:id:hakamaya:20220223004642p:plain

図4  D_2 と威力の関係

 概観として、耐性の高いものから低いものまで威力がゼロに近づくと D_2 もゼロに近づきます(最低ダメージおよび D_2 がゼロであることも確認)。しかし、威力ゼロ近傍での傾きは耐性によって大きく異なります。耐性が低いものほど低威力でも傾きが大きく、威力の増加に伴ってわずかに傾きを増加させて1.53程度( D ではなく D_2 の傾きであることに注意、 D_1 が威力の増加関数であるため、 D の傾きより小さくなる)に落ち着きますが、これが収束なのかはわかっていません。対して高耐性ほど低威力側での傾きが寝ており、大きく曲がりながら D_2 が増加します。

 現在、この原点での収束と曲がり具合をヒントに、関数の決定およびそのパラメータに耐性を落とし込む作業を進行しています。成功の1次式 D_1 の決定にあたっては諸々の思い込みが足を引っ張っていましたが、 D_2 は独立変数まではっきりわかっているのによほど難しいです。一にも二にも曲がっていることが悪さをしています。

おわりに

 防御時のダメージについては成功と回避の寄与の分離に成功し、残すところは耐性と威力のカーブフィッティングのみ、しかしこれが一番厄介という状況です。ひらめき次第で明日にも解けるかもしれないし、1ヶ月経っても結論が出ないかもしれません。当面はこの解析を第一に続けていくつもりですが、計測データの共有や解析の質問等あれば喜んで応じます。いつでもお気づきの点を教えてもらえると幸いです。