対人戦ダメージ計算式(その2)

「1度の戦闘は、実は内部では複数回戦っているのではないか?」

つまり、1戦目の戦闘で生き残った兵士が2戦目以降も戦闘を継続している、という考え方です。

例えば、攻撃バフを上げた場合、計算式通りなら1戦目で相手の損失数は増加しますが、自分の損失数は変わらないはずです。2戦目開始時点で相手の兵士はバフ0の時より減っており、そのせいで2戦目では自分の損失数が減少する、と考えると計算式自体は間違っていないのかもしれません。防御バフを上げた場合や兵数を増やした場合も同様に、2戦目以降に生き残った兵士の影響を受けるため、

  • 攻撃バフ、兵数が防御面(自分の損失数)にも影響する
  • 防御バフ、体力バフが攻撃面(相手の損失数)にも影響する

ように見えるのではないでしょうか?

この仮説を検証するには、どうすれば良いでしょうか。2戦目以降の生き残り兵士が問題なのだとすると、2戦目が発生しなければ、計算式通りの結果が得られるかもしれません。そこで、圧倒的な兵力差で戦闘し、片側が1戦目で全滅すれば2戦目は行われないのではと考えました。

A側:T1騎兵100人(バフ0)、B側:T1騎兵5000人(バフ0)で戦闘した結果、(損失数A:100、損失数B:25)となりました。

ここで、B側の体力を+100%(2倍)にすると、損失数Bは12となりました。また、A側の兵数を400とすると、損失数Bは50となりました。B側の兵数を10000に増やした場合も損失数Bは25で変化しません。

この結果から、想定しているダメージ計算式の通り、損失数Bは体力Bに反比例し、兵数Aの平方根に比例していることが確認できます。また、兵数Bには影響されません。


さて、このような結果が得られましたが、そもそもの「1度の戦闘で複数回戦闘が継続している」という仮定は、果たして本当でしょうか。

T1騎兵100人同士の戦闘では、戦闘結果は双方(損失:97)でした。ここで、内部的に複数回の戦闘が起きているとすると、先ほどの検証結果からT1騎兵(バフ0)vsT1騎兵(バフ0)の場合、兵数100人が1戦目(以後、ラウンドと表記します)で倒せる相手は25人です。これは相手の兵数に影響されません。つまり、1ラウンド目では双方25人づつ損失し、2ラウンド目開始時点では75人対75人となっているはずです。

では次に、A側:T1騎兵75人(バフ0)、B側:T1騎兵5000人(バフ0)で戦闘させると結果は、(損失数A:75、損失数B:21)となりました。つまり、兵士75人が1ラウンドで倒せる相手は21人です。よって、2ラウンド目は21人ずつ損失していると予想されます。

同様にして、生き残った兵士が1ラウンドで倒せる数を調べていくと、3ラウンド目は、54人同士で戦い18人損失していると予想します。4ラウンド目は36人同士で15人を倒し、5ラウンド目で21人となり損失数11人、6ラウンド目は10対10で双方7人倒します。ここまでで損失97となり、3人生き残りました。

1度の戦闘内で6ラウンドの戦闘が継続して発生していると考えると辻褄は合いそうです。この結果の一致は、偶然でしょうか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です