見出し画像

【Dota Underlords】mischaの研究レポート #1 「防御力」

mischaの研究レポートと題しまして、独自に検証を行った結果などについて書いていこうと思います。
記念すべき第1回のテーマは「防御力に関する検証と結果から予想されたダメージ計算式について」です。
途中から逆三角関数とか多元方程式とか出てきますので、数学アレルギーの方はご注意ください。

また、本記事では混同を避けるため、「(ヒーローのステータスとしての)ダメージ」のことを「攻撃力」と呼称します。
正式な名称ではありませんが、ご了承ください。

あるときプレイしていてダメージ計算式が気になったのでちょっと前(ビルドバージョン361)に検証を行いました。
きっかけは戦士とか無情って弱くね?ってなったからです。
ちなみに無情についてはエンノ追加後に考えを大幅に改めたんですけど、戦士はいまだに全然使いこなせないですね。

で、防御力と受けるダメージの関係を調べるために、トレーニングモードにドローレンジャーを置いて、いろんな防御力の的を殴らせるという実験を行いました。
また、攻撃力との相関を調べるため、ドローレンジャーのランクを変更したときのデータも取ってあります。
10発殴らせて平均を取ったので、だいたいの目安になる程度の精度はあるはずです。

実験の結果をグラフにしたものが以下になります。

画像1

防御力= 0 の付近が一番傾きが大きく、離れるほど傾きが小さくなっていることが見て取れます。
つまりダメージの軽減量でいうなら、防御力を上げるアイテムはより防御力が小さく、ヘルスの多いヒーローに装備させた方が効果が大きいと言えそうです。

また、戦士についても同様のことが言えます。
元々防御力の高いヒーローの防御力がさらに高くなっても効果が薄いことがはっきりしましたので、戦士のアライアンスボーナスは見た目の数値上昇量に比べて効果的でない、ということがわかってしまいました。
戦士を運用する場合は「とりあえずより上位のアライアンスボーナス発動させておけば強いでしょ」という考えは通用しなさそうです。より個々のヒーローの性能に注目して、相性のいいヒーローと組み合わせた運用を行うことが必要になると言えるでしょう。
一言で言うと、戦士6は弱い(断言)


ここから先は、実際ゲーム内のダメージ計算式がどうなっているのかについて予想を書いていきます。

先に結果をのせるとこんな感じ。

画像2

ちなみに変数 d が攻撃力(damage)で、変数 a が防御力(armor)を表しています。
α, β は係数です。

以下考え方。
まず、上記のグラフで着目すべきこととして、ドローレンジャーのランクが上がりダメージ(ステータスの方。以後攻撃力と呼称)が2倍になると、与えるダメージも2倍になっていることがわかります。
このことから、攻撃力とダメージが比例の関係にあるのは間違いないと思います。

次に、グラフの形が逆三角関数y=atan(x)のグラフに酷似しています。
似た形状を他の関数の組み合わせで作ることも可能ですが、近似値をとるには十分でしょう。
仮採用です。

そうすると、計算式の形は以下のように書けます。

f2(a) = α * atan(β * a) + γ

最後に、防御力0のときの攻撃力とダメージの数値がほぼイコールになっているので、f2(0) = 1 と考えていいでしょう。
atan(0) = 0 ですので、γ = 1とわかります。

f2(a) = α * atan(β * a) + 1

とまあ、こんな感じの計算式になってるんじゃないでしょうか。多分。
係数のαとβについては、データを集めて最小二乗法などを用いればかなり正確な値が出る気がします。

が、私はそこには大して興味が湧かないので、やりたい方にお任せします。
もし本当に検証した方がいた場合には、私にも教えてくださると嬉しいです。

それでは今回はこの辺で。
noteも不定期に投稿していくつもりですので、よろしければゆるーくご期待ください。
次回のテーマは多分「アイオーの好み」「エンノと相性のいいヒーロー」「好戦的ビルドの派生」のどれかだと思います。
もし、次回以降のテーマに希望などありましたらコメントにお願いします。
実際対応できるかはわかりませんが、そちらもゆるーくご期待くださいということで。

皆様が良きUnderlord'sライフをお過ごしになられることを。