総力と実際の強さ

戦闘モデルダメージ計算バフ部隊総力

はじめに

部隊総力が大きければ必ず勝つわけではありません。この記事では、バフの取り扱い方と総力の計算方法を整理し、なぜ総力が実際の強さを過大に見積もることがあるのかを説明します。

バフの取り扱い

簡単のため、まず与ダメージ側を説明します。

A=a0×(1+Batta)×(1+Bleth)×1+Patta1+Matta×1+Pleth1+MlethA = a_0 \times (1 + B_\text{atta} ) \times ( 1 + B_\text{leth} ) \times \frac{1 + P_\text{atta} } {1 + M_\text{atta} } \times \frac{ 1 + P_\text{leth} } { 1 + M_\text{leth} }

a0a_0 はダメージの基礎値とその計算の記事を参照ください。

この PP は英雄スキルなどでレポートに直接表示されないバフであり、MM は同様のデバフです。atta, leth は攻撃と殺傷を表します。

ここで、BattaB_\text{atta} と BlethB_\text{leth} が2つあることの意味を説明します。例えば、BattaB_\text{atta} が100%で BlethB_\text{leth} が0%の場合、

(1+Batta)×(1+Bleth)=2×1=2(1 + B_\text{atta} ) \times ( 1 + B_\text{leth} ) = 2 \times 1 = 2

と2倍です。一方、BattaB_\text{atta} が50%で BlethB_\text{leth} が50%の場合、

(1+Batta)×(1+Bleth)=1.5×1.5=2.25(1 + B_\text{atta} ) \times ( 1 + B_\text{leth} ) = 1.5 \times 1.5 = 2.25

と2.25倍なのです。端的に言えば、同じカテゴリーのバフは等しい方が効果的です。

さらに、10% のバフ増加があるとき、その効果は基本の (1+B+0.1)(1 + B + 0.1) 倍になることを意味しますが、これは現在の (1+B+0.1)/(1+B)(1 + B + 0.1)/(1+B) の効果しかありません。つまり、追加バフ ΔB\Delta B は ΔB/(1+B)\Delta B/(1+ B) の効果しかないのです。

このようなバフを世間では「加算バフ」と呼んでおり、PattaP_\text{atta} のように別に掛け算するものを「乗算バフ」と呼んでいます。通常、乗算バフがあったとしてもレポートにはその結果が示されます。例えば、通常バフが BB で乗算バフが PP の場合、レポートには (1+B)(1+P)−1(1+B)(1+P)-1 を100倍したパーセント表示がされます。

同様に防御側も:

D=d0×(1+Bdefe)×(1+Bheal)×1+Pdef1+Mdef×1+Pheal1+MhealD = d_0 \times (1 + B_\text{defe} ) \times ( 1 + B_\text{heal} ) \times \frac{1 + P_\text{def} } {1 + M_\text{def} } \times \frac{ 1 + P_\text{heal} } { 1 + M_\text{heal} }

defe, heal は防御とHPを表します。ここで、BdefeB_\text{defe} と BhealB_\text{heal} が同じぐらいの方が効率的です。

多くの場合、BattaB_\text{atta} と BdefeB_\text{defe} が近く、BlethB_\text{leth} と BhealB_\text{heal} が近い値になるような仕組みになっています。これが運営の罠ですかね♩

部隊総力の計算方法

さて、ここからが面白いところです! 総力は次の式で表されます。kk を兵種として、部隊総力 QQ は:

Q=Z∑kpkYk(1+(Batta)k+(Bleth)k+(Bdefe)k+(Bheal)k)Q = Z \sum_{k} p_k Y_k ( 1+ (B_\text{atta})_k + (B_\text{leth})_k + (B_\text{defe})_k + (B_\text{heal})_k )

pkp_k は各兵の総力です。ZZ は兵士数で、YkY_k は ∑kYk=1\sum_k Y_k = 1 の兵種比率です。つまり ZYkZ Y_k がその兵種の人数です。

そして面白いのが、バフ値(100で割って割合にしたもの)を全部足したものを総力に反映しているということです。

つまり、本来掛け合わせるものを足すことで総力を出しています。これも運営の罠だと思います♩ 総力はバフをどこに足そうと同じだけ上がります。しかし、実際にはバランスを崩すとダメージはそれほど上がらないわけです。

この部隊総力ですが、部隊総力が小さいのに実際には強い方が有利になる場面が多いです。これは総力を使ってマッチングするという理由もありますし、自分の方が強いと思って挑んできた時に実は勝てるということがあるからです。

ざっくり言えば、本来の強さは ADZnA D Z^n(0.5≤n≤1.50.5 \leq n \leq 1.5)のようなものです。この nn は兵の使われ方や戦いの状況によって変化するのですが、AA や DD は大きさも大事ですが、AA と DD のバランスが戦略に影響します。実際の強さは様々な要素があるので理論だけで示すことは難しそうです。これはシミュレータの出番です!

実測でも、シミュレータ上でこの nn がほぼ 1.51.5(S=ADZ32S = A D Z^{\frac{3}{2}})に合うことを確認しました。兵種スキルを入れても傾向は変わらず、戦闘の残存率は強さの比で決まる?での理論導出とも一致します。ただしこの実測は英雄スキルを入れない条件で、偏ったバフをかけた場合の確認はまだです。

一方で、AA や DD が大きい方が良いわけですので、そのためにどうしたら良いかということは理論的に明らかです。

バフ損

以上を踏まえると、同じバフ増加に対する AA や DD への貢献が低いということは、見た目の部隊総力を高くするが実際には強くないということを意味します。この損失を「バフ損 EE」と呼んでいます。

バフ損を計算することで、見た目よりも実際は (1+E)(1+E) 大きく見えているという捉え方ができます。バフ損は、同じカテゴリーの2つのバフ b1b_1, b2b_2 の偏りによって生じます。最適な bob_o バフに対して、

(1+bo)2=(1+b1)(1+b2)(1+b_o)^2 = (1+b_1)(1 + b_2)

という関係があり、

bo=(1+b1)(1+b2)−1b_o = \sqrt{(1+b_1)(1+b_2)}-1

です。そして、バフ損 EE は

E=b1+b2−2(1+b1)(1+b2)+2E = b_1 + b_2 - 2\sqrt{(1+b_1)(1+b_2)} + 2

と表されます。なお、これは攻撃と殺傷の2つで起きており、その2つを足した分が総力に反映されていると考えて良いです。

例えば、

攻撃防御殺傷HP
800%300%125%96%

だとしたら、攻撃側のバフ損は:

E=8+1.25−29×2.25+2=2.25E = 8 + 1.25 - 2\sqrt{9\times2.25} + 2 = 2.25

なので、225%のバフを損しています。さらに防御側のバフ損は:

E=3+0.96−24×1.96+2=0.36E = 3 + 0.96 - 2\sqrt{4\times1.96} + 2 = 0.36

なので、36%のバフを損しています。よって、総力は 3.613.61 倍も高く出てしまうのです。

巨獣や地下は平均的なので、バフ損はしていません。一方、適切な兵種比率ではないということ自体が総力に対して弱く出るため、格上に勝れるということは、バフ損を上回る強さを兵種比率の適正さやスキル攻撃で上回っていると言えます。

バフ損計算ツール