ダメージ計算式の導出にあたっては、次のようなデータ収集を元にしました。
記録したデータを解釈する上で大前提となるのが、「パラメータが同じならばダメージ分布も同じになるはず」という仮定です。例えば、トルネコのレベル・剣の強さ・ちからが同じなら、あるモンスターに対してはいつも決まった範囲のダメージを与えるだろう、と想定して以下の考察を行います。ダメージ計算式が存在すると考える以上当然の仮定ではありますが、厄介なのは「ダメージが同じ」ではなく「ダメージ分布が同じ」という事です。パラメータとダメージは一対一に対応しているわけではなく、そこに乱数が加わった数字が実際の観測値となります。つまり、観測値から法則を導くためには、乱数によってダメージがどのように分布するかをまず知らなければなりません。
このゲームにおけるダメージ分布の特徴は、与えられた条件下でのダメージの最大値と最小値が決まっているという点にあります。自然現象を観測する時などに見られる一般的な確率過程では、二項分布もしくはその極限であるガウス分布やポアソン分布など、あるピーク値を持ちそこから離れるにつれ出現確率か減少しながらどこまでも続く分布をとるのが普通なのですが、そういったプログラムにはなっていないようです。
図1-1: シルバーデビルに与えたダメージの分布にガウス関数を重ねたもの。うまく合わない。(試行回数は1000回)
図1-1は、トルネコの攻撃力を最大にした時にシルバーデビルに与えるダメージの発生率分布を記録したものです。ガウス関数を重ねてみたのですが、分布の形が異なるのがわかるでしょうか。ガウス分布では裾の部分が少しずつ減っていきどこでゼロになるというはっきりした境界を持たないのに対し、このゲームのダメージ分布はある値でスパッと切れているのが特徴です。いちいち示しませんが、他のモンスターへの攻撃やトルネコが受ける攻撃のダメージ分布も、ガウス分布とは異なりエッジがしっかり立った形の分布を示します。
これは逆に言うと、ある条件下におけるダメージの最大値と最小値を、その条件でのダメージ分布を特徴付ける量として使うことができるということでもあります。サンプルデータを採集するにあたって、ダメージをすべて記録するのは非常に手間がかかるので、最大値と最小値以外を無視できるとなると作業は劇的に楽になります。以下、様々な状況でトルネコやモンスターが受けたダメージデータからダメージ計算式を考察していきますが、その大部分は最大値と最小値のみの記録から導かれたものであることをここで断っておきます。
では次に、ダメージがどのくらいの幅をもって分布するのか、言い換えればダメージの最大値は最小値の何倍ぐらいなのか、を見てみましょう。
図1-2: 攻撃力最大時のトルネコが各モンスターに与えるダメージ分布の範囲を示した図。横軸はダメージの中心値、縦軸は最大値と最小値の比。
図1-2は、攻撃力最大時のトルネコがそれぞれのモンスターに与えるダメージについて最大値と最小値を記録し、その中心値を横軸に、比率を縦軸にしてプロットしたものです(はぐれメタルは除く)。先のシルバーデビルの例なら、44〜56の分布なので中心値は50、比は1.273です。これを見ると、最大値と最小値の比はおよそ1.28あたりに集中していることがわかります。ひとつ離れて1.22ぐらいに位置する点(スライムとドラキーへの攻撃に相当)がありますが、この場合最大値である255ダメージだけが他の値(209〜254)に比べ異常に高い出現率を示しており、おそらく255以上のダメージがすべて255に修正されるため最小値との比が小さくなったものと考えられます。とりあえずは、これは例外的なデータとして他の値とは別に扱うべきでしょう。また、ダメージが小さくなるほど1.28からのばらつきが大きくなりますが、これは端数処理による丸め誤差の影響だと思われます。
図1-3: 盾なしのトルネコが各モンスターに受けるダメージ分布の範囲を示した図。横軸がダメージの中心値、縦軸が最大値/最小値。
図1-3は、逆にトルネコがモンスターの攻撃を受けた時のダメージについて図1-2と同様にプロットしたものです。すべて盾を装備しない状態で攻撃を受けデータを収集しました。図1-2よりもダメージの絶対値(横軸)が小さめなので一見ばらつきが大きく見えるかもしれませんが、実際は図1-2とほぼ同じ傾向を持っており、右に行くほど1.27〜1.28あたりに収束していきます。トルネコもモンスターも、ダメージ分布に関しては同じ結果を示すわけです。 また、図1-2は攻撃力は同じでダメージを受ける側の防御力が異なる例なのに対し、図1-3は防御力は同じで攻撃する側の攻撃力が異なる例です。この両者が同じ傾向を示すことから、ダメージの分布範囲は攻撃力にも防御力にも無関係で、ダメージの大きさのみで決まることもわかります。
最大値と最小値の比が1.28というのは、中心値に対して±12.3%の範囲に分布する場合に相当します。この段階ではまだあまり精確な考察はできないので、ひとまずキリのいいところで±1/8(12.5%)という数字を使って以下の議論を進めることにしましょう。より精密なダメージ分布の解析については次節の後半で触れることにします。
トップ > ゲームの話 > トルネコの大冒険 > 補足その2:ダメージ計算式の導出 > 1.ダメージ分布・その1