戦闘の残存率は強さの比で決まる?
公開: / 更新:
戦闘モデル与ダメージ1兵種部隊の強さ
はじめに
戦闘の結果は「総力」だけで決まるのかな? 私はこの戦闘の仕組みに興味を持ちました。
この記事では非常にシンプルな1対1戦闘を題材に、総力ではない強さの指標を定義し、その比λで、勝者の残りの兵士数を推定します!
モデルの定義
まず、何を仮定するかをはっきりさせます。
2つの陣営(1と2)がいて、各パラメータは:
- Ai: 陣営 i の攻撃力(与ダメージの基準)
- Di: 陣営 i の防御力(被ダメージを軽減する力)
- Yi: 戦闘中の残り兵士数(初期値は Zi)
戦闘中の変化を次のようにモデル化します:
陣営2の攻撃で陣営1の兵士数が減少する速さは、D1A2Y2 に比例する
攻撃力・防御力という用語は、いろいろな使われ方があるのでどちらかというと数式の定義の方を見た方が良い
数式で書くと:
ΔY1=−D1A2Y2
同様に陣営2も:
ΔY2=−D2A1Y1
Y を使っているのは、「兵士数が多いほどダメージも増えるが、1人あたりの効率は落ちる」という状況を表していてこのシステムに興味を持った最初のポイントでした。
不変量を見つける
ここから少し数学が難しいですが、コツは「両辺を上手く掛けて整理する」だけです!
ΔY1 と ΔY2 の定義式の両辺にそれぞれ A1D1Y1 と A2D2Y2 を掛けてみます。
A1D1Y1⋅ΔY1=−A1D1Y1⋅D1A2Y2=−A1A2Y1Y2
A2D2Y2⋅ΔY2=−A2D2Y2⋅D2A1Y1=−A1A2Y1Y2
右辺が完全に一致しました。だから:
A1D1Y1⋅ΔY1=A2D2Y2⋅ΔY2
これは戦闘中ずっと成り立つ等式です。
ΔY を微分に近似して不定積分すると:
A1D1Y123=A2D2Y223+C
(∫YdY=32Y23 を使って、32 は両辺で打ち消しました)
初期条件 Y1=Z1, Y2=Z2 で定数 C を決めて:
A1D1Y123−A2D2Y223=A1D1Z123−A2D2Z223
この左辺は戦闘中ずっと一定です。
強さの比 λ
ここで Si=AiDiZi23 と定義すると、戦闘の結果を左右するのはこの S の比だけになります。
この S=ADZ23 という形は、シミュレータでの実測でもほぼ合うことを確認しています。ただし確認は英雄スキルを入れない条件下で、偏ったバフをかけた場合は未確認です。実測面からの整理は総力と実際の強さにあります。
λ=S1S2=A1D1Z123A2D2Z223
λ>1 なら陣営2が強く、陣営1が負けます。λ<1 なら陣営1が勝ちます。
残存率の公式
陣営1が全滅(Y1=0)したとき、不変量から:
−A2D2Y223=A1D1Z123−A2D2Z223=S1−S2
A2D2Y223=S2−S1
両辺を S2=A2D2Z223 で割ると:
(Z2Y2)23=S2S2−S1=1−S2S1=1−λ−1
23 乗を外すために 32 乗をすると:
Z2Y2=(1−λ−1)32
綺麗な形になりましたね。これで強さの比λが分かれば、残る兵士数の割合が全部計算できます。
具体例
λ の値ごとの残存率を計算しました:
| λ(強さの比) | 1.1 | 1.5 | 2.0 | 3.0 | 5.0 |
|---|
| Y2/Z2(残存率) | 20.22% | 48.07% | 63.00% | 76.31% | 86.18% |
例えば
λ=1.1(1.1倍強いだけ)は残存率は約20%と思ったより小さいと思います。
λ=1.55で半分ぐらいの残りです。
ほとんど削れない!というのはλ=5.0と非常に大きな差があることを意味しています。
要確認: これは攻撃力を持つ兵が減っていくときの現象なので、盾をタンクとする兵種混在の場合とは異なります
まとめ
- 戦闘中の兵士数の変化は「与ダメージは攻撃側の Y に比例し、防御側のDに反比例」するが
- A1D1Y123−A2D2Y223 は戦闘中ずっと一定(不変量)なので
- 戦闘結果を左右する強さのパラメータを S=ADZ23ととらえ、その比 λで様子がわかる
- 勝者の残存率は (1−λ−1)2/3 で表される
要確認: この記事は1兵種のモデルです。実際の戦闘(兵種の相性)にはそのまま適用できません。