続いて、トルネコが装備する盾の強さとダメージの関係について考えていきます。 基礎データとして、様々な強さの盾を装備してドラゴンの直接攻撃を受け、そのダメージを記録しました。ドラゴンを選んだのは、通常出現するモンスターの中では攻撃力が最も強くトルネコの受けるダメージの値が大きいため、盾の強さの変化に対して最も敏感にダメージが変化すると思われたためです。盾の強さの範囲は0から81までの間の58種について調査しました。盾の強さが低い部分では変化がダイレクトに見えるので、25以下については特にすべての数値についてサンプルを取るよう留意しました。 ざっと見たところ指数関数的に減少している感じなので、x軸に防御力、y軸にダメージをとってプロットし、y=P1*P2xという関数でχ2-fittingを行ってみます。P1がドラゴンの攻撃力、P2が盾によるダメージ減少効果に対応する数字ということになります。
さて、ここで問題となるのが測定誤差の問題です。 サンプル数は有限なので、盾の強さそれぞれに対して測定精度に由来する重み付けをする必要があります。どういう値を誤差にとればいいのでしょうか? ここでは、前節で求めた「同一パラメータでのダメージには最大値と最小値が存在し、 最小値=基本値×7/8の端数を切り捨てた数字、最大値=基本値×143/128を切り捨てた数字になる」という法則を利用することにします。 サンプルデータは有限回数しか採取していないので、記録されたデータの中での最大値、いわば「仮の最大値」は真の最大値よりも小さい可能性があります。同様に、「仮の最小値」は真の最小値よりも大きい可能性があります。つまり
仮の最大値≦真の最大値=真の中心値×143/128
仮の最小値≧真の最小値=真の中心値×7/8
なので、真の中心値の推定領域として
仮の最大値×128/143≦真の中心値≦仮の最小値×8/7
が得られます。よって、この領域のちょうど真ん中の値である
((仮の最小値+1)×8/7+仮の最大値×128/143)/2
を推定ダメージとしてプロットし(+1は端数切り捨ての効果)、そこから領域の境界値までの値である
((仮の最小値+1)×8/7-仮の最大値×128/143)/2
を誤差としてfittingしました(図3-1)。
図3-1:横軸が盾の強さ、縦軸がダメージ
結果として、P1=67.83±0.32、P2=0.9380±0.0004が得られました。盾の強さが1上がるたびに、ダメージは0.9380倍になるというわけです。と、これで終わりにしてもいいのですが、この0.9380±0.0004という数字、実際はもう少し簡単に表せる数字なのではないかという疑念が残ります。ゲームのプログラムを組むのが人間である以上、何か数字を決める時にはキリのいい値を選ぶのが普通だからです。
色々とキリのいい数字を試して上述の値に近いものを探した結果、最終的に15/16=0.9375が真の値であろうと推測しました。fittingの結果と比べても1σぐらいのところに収まっています。16という数字はコンピュータプログラミングでは良く出てくる値であり、×15/16という計算はアセンブラレベルの操作でごく簡単にできるものなので、非常にもっともらしい値だと言えるでしょう。
次に、モンスターの防御力について考えてみましょう。 前々節で調べた攻撃力最大時のトルネコがモンスターを攻撃した場合のダメージの最小値と最大値のデータを使って考察します。 スライムとドラキー、ゴーストとももんじゃなど、いくつかのモンスターのダメージの範囲が共通していることから、モンスターの防御力は離散的な数値=整数値で表されているということが示唆されます。即ち、トルネコと同じ計算式でダメージを表現できそうだということです。
トルネコの防御力カーブを参考に各モンスターに対して適当と思われる整数値を選び、前述の場合と同様にしてfittingしたのが図3-2です。ただし、スライムとドラキーに関しては除いてあります。最大値が255という「いかにもオーバーフロー」な数字になっていること、最小値に比べて255という最大値が小さすぎること、255が出る確率が他の数字に比べ数倍高いことから、他のモンスターの数値と同列に扱えないと判断したからです。おそらく、真の最大値が255を超えるため、255以上のダメージが一律255に切り下げられているのでしょう。
図3-2:横軸が(推測される)モンスターの防御力、縦軸がダメージ
結果として、各点が非常に綺麗に線上にのる事が確認できました。パラメータは、P1=254.99±0.49、P2=0.9376±0.0002と、トルネコの防御力と同じく15/16=0.9375に近いP2の値になっています。トルネコのカーブを参考にしてモンスターの防御力を決めたのである程度当然の結果ではありますが、離散的な整数値でモンスター防御力が表現でき、その間隔がトルネコと同じになるという事はこのfittingによって初めて得られる情報です。以上より、モンスターの防御力によるダメージ減少もトルネコと同じ式が用いられていると結論できると思います。ちなみに、fitting対象から除いたスライムとドラキーに関しては、攻撃力=255、防御力=1、最小値=中心値の7/8とするモデルで、サンプルデータ最小値である209がうまく説明できました。
トップ > ゲームの話 > トルネコの大冒険 > 補足その2:ダメージ計算式の導出 > 3.防御力によるダメージ減少効果