- ジャンル:
- Sid Meier's Game
- シリーズ:
- Civilization IV/Civ4情報, Civ4戦略情報
- 種類:
- データ/資料
- 最終更新:
- 2005年11月26日 19時23分
- シリアル:
- 2005-11-23-05
- ブックマーク:
| << Civ4: ユニットの維持費分析 | もくじへ戻る | 戦闘の計算式:勝率の飛躍点・ボーナスの特殊性・先制攻撃 >> |
| この章のはじめへ戻る |
前に戻る
CivFanaticsのCiv4戦略記事フォーラムから、Arathorn氏による戦闘の計算式の分析記事を要訳してみます。
基礎
戦闘の基礎を知るには、軍事ユニットがアクティブなときに[ALT]を押しながら敵ユニットにマウスを乗せるか、敵ユニットにマウスを乗せたままマウスの右ボタンをホールドすればよい。オッズが画面左下に表示される。まずは、これらの数字がどのように計算されるかを説明しよう。
攻撃側の修正威力
これが最初に計算され、防御側とは独立に攻撃側に加算されるすべてのボーナスが適用される。(通常のゲームでは、この条件に当てはまるのは戦闘術の昇進のみ) この値に ユニットの耐久力 / 100 を乗算したものが、攻撃側の修正威力 (modified strength) になる。
例:戦闘術 I, 都市襲撃 Iの昇進を持ち、耐久力73の剣士が都市に攻撃をかけたとする。このユニットの修正威力は:
6 * 1.1 * 73 / 100 = 4.82
となる。(正確には 4.818 だが、小数点二位以下が使用されているかどうかは不明)
防御側の修正威力
この部分はもっと混み入っている。まず、地形による防御ボーナス、一般的な威力ボーナス、攻撃ユニットに対するボーナスや駐留ボーナスのような要素をすべて加算する。
次に、この数字から攻撃側が防御側に対して持つボーナスが引かれる。これには、攻撃側の防御側に対するユニット種ボーナス、攻撃側の都市攻撃に対するボーナス、攻撃側の地形に対するボーナス(?)がある。
結果として出てきた値が正であれば、このパーセンテージを防御側に加えて修正威力とする。値が負の場合は、元の威力を (1 - 全体の値) で割った値が使用される。(注:全体の値は負なので、(1 + 全体の値の絶対値) で除算するのに等しい)
ここまで計算が進んだら、防御側の耐久力が問題となり、こちらでも ユニットの耐久力 / 100 が乗算される。
例1: 都市襲撃 Iと戦闘術 Iを持つ弓兵(威力3)が、草原にいる戦士(威力2)を攻撃したとする。ユニットはどちらも無傷とすると、攻撃側の修正威力は:
3 + 3 * 0.1 = 3.3
となる。防御側は威力ボーナスを持たず、草原は防御ボーナスを持たないので、防御側の威力は 2 のままである。
例2: 戦闘術 Iと掩護(+25% 対弓兵)を持つ騎士(威力10)が、森林にいる長弓兵(威力6)を攻撃したとする。ユニットはどちらも無傷とすると、攻撃側の修正威力は:
10 + 10 * 0.1 = 11
で簡単に定まる。いっぽう、防御側は森林の +50% 防御ボーナスを持つが、騎士には掩護のボーナスがあるので、この数字から 25% が引かれる。結果として、長弓兵のボーナスは +25% となり、防御側の修正威力は:
6 + 6 * 0.25 = 7.5
のように定まる。
例3: 戦闘術 I, 戦闘術 II, 都市襲撃 Iを持ち、耐久力73の騎士(威力10)が、文化による 3% の防御ボーナスを持つ都市内の斧兵(威力5)に攻撃をかけたとする。攻撃側の修正威力は、ふたつの戦闘術の昇進と耐久力の損害から:
(10 + 10 * 0.2) * 76/100 = 8.76
となる。防御側はまず 3% の防御ボーナスを受け取るが、ここから攻撃側のボーナス 20% が減算されて最終的なボーナスは -17% となり、防御側の修正威力は:
5 / (1 + 0.17) = 4.27
のように定まる。
戦闘
このようにして計算された攻撃側と防御側の修正威力を、ここでは A と D と呼ぶ。
ラウンドごとのオッズ
戦闘の1ラウンドにおける攻撃側の勝利確率は:
A / (A + D)
であらわされる。つまり、防御側の勝利確率は:
D / (A + D)
である。
ここで、攻撃側と防御側の修正威力の比率をあらわすあたらしい値 R を導入する。R は、
R = A / D
のように導かれる。Rの値は戦闘全体を統制する。Rの値が高ければ高いほど、攻撃側が戦闘に勝利する確立が高い。ラウンドごとの勝利確率をRをつかって表現すると:
攻撃側: R / (1 + R) 防御側: 1 / (R + 1)
のようになる。
1ヒットごとのダメージ
戦闘では、実際のユニットの損害状況に関わらず(*1)、攻撃側と防御側の両方がつねに耐久力 100 を持った状態で開始される。攻撃側が防御側にあたえるダメージ量は:
訳注 *1: 耐久力は修正威力ですでに考慮されている
floor(20 * (3 * A + D) / (3 * D + A))
であらわされる。floorは、括弧内を計算した後に端数を切り捨てることを意味する。防御側が攻撃側にあたえるダメージ量をあらわす式は:
floor(20 * (3 * D + A) / (3 * A + D))
である。Rを使うと、攻撃側と防御側のダメージ量は、
攻撃側: floor(20 * (3 * R + 1) / (3 + R)) 防御側: floor(20 * (3 + R) / (3 * R + 1))
のようにあらわされる。
1ヒットごとのダメージ量の最大値は 60, 最小値は 6 である。ユニットの相対的な威力にかかわらず、ダメージ量がこの範囲を越えることはない。
一方の側の耐久力が0になると、そのユニットは破壊される(もしくは撤退する)。勝者の残存耐久力は:
初期耐久力 * 戦闘終了時の耐久力 / 100
のように定まる。勝利した側も耐久力を消耗するので、さらに攻撃を受ければ破れてしまうかもしれない。http://c4combat.narod.ru/c4c_v0_13.htmに、Javascriptを利用したCiv4の戦闘計算機がある。
先制攻撃
先制攻撃 (First strike) ラウンドは特殊に解決される。攻撃側と防御側が持つ先制攻撃の回数が比較され、数の大きなほうが差の回数分の先制攻撃を得る。(たとえば、先制攻撃2回と先制攻撃4回のユニットが対戦したら、先制攻撃4回を持つユニットが、 4 - 2 = 2 で2回の先制攻撃を得る)
x - y 回の先制攻撃が可能、という形式の可能性先制攻撃の場合はどのような数式が使用されるのかはいまのところ不明。
先制攻撃ラウンドの計算式自体は通常の戦闘と変わりないが、相手に損害をあたえられるのは攻撃側だけである。たとえば、攻撃側が先制攻撃2回、防御側が0回を持っていたとすると、攻撃側が勝利して防御側にダメージをあたえるか、防御側が勝利して誰も傷付かないまま通常の戦闘に進むかの二通りのパターンが考えられる。先制攻撃ラウンドで使用されるオッズは通常の戦闘と同じ。
撤退
撤退 (Retreat) ロールは、攻撃側が死亡したラウンドの終了時におこなわれる。攻撃側の撤退確率に対する特殊なロールがおこなわれ、もし成功すれば、攻撃側は最終ラウンド前の耐久力を持った状態で戦闘から撤退できるというものだ。撤退確率は攻撃側の勝利確率を減少させない。攻撃側が死亡した場合にのみ考慮される。
撤退にはいくつか注意点がある。
- X%の撤退確率を持つユニットの生存確率はつねにX%以上である。戦闘に勝利するか(0%以上)、撤退するか(X * 死亡確率)、死亡するかだからだ。
- 撤退できるのは攻撃側だけで、防御側は撤退できない。
- 撤退は、攻撃側が防御側よりも弱い場合にいちばん効果がある──たとえば、カタパルトが都市を攻撃する場合など。
例:カタパルト(威力5)が都市に駐留する弓兵(威力3)を攻撃したとする。弓兵は50%の都市防御ボーナスと25%の駐留ボーナスを持ち、カタパルトは20%の撤退確率を持つ。攻撃側の修正威力は5, 防御側の修正威力は5.25である。カタパルトの勝率は34.7%なので、撤退がなければ65.3%の確率で死亡することになる。撤退がある場合、勝率は34.7%のままだが、65.3%のうち20%は撤退できることになるので、勝率は34.7%, 撤退は13.1%, 死亡確率は52.2%ということになる。
二次ダメージ
スタックの攻撃時に、攻城兵器は攻撃した以外のユニットにもダメージをあたえる能力を持つ。これは二次ダメージ (Collateral Damage) と呼ばれる。
二次ダメージをあたえられるのは攻撃側のみ。基本的には、攻撃を受けたスクエアに位置する、直接の防御を担当するユニット以外のすべてのユニットが二次ダメージの対象となり得る。直接防御を担当するユニットは、攻撃側と直接戦闘をおこなう。
最大ダメージ量
各攻城兵器には、それぞれ可能な二次ダメージ量の最大値がXMLファイル内で決め打ちされている。
| ユニット | 最大ダメージ量 |
|---|---|
| カタパルト (Catapult) | 50 |
| カノン砲 (Cannon) | 60 |
| 野戦砲 (Artillery) | 70 |
| 戦車・パンツァー(Tank/Panzer) | 60 |
| 現代戦車 (Modern Armor) | 60 |
| 連弩兵 (Cho-Ko-Nu) | 60 |
| 爆撃機 (Bomber) | 50 |
| ステルス爆撃機 (Stealth Bomber) | 50 |
つまり、カタパルトは耐久力が50以下のユニットに二次ダメージをあたえられない。同様に、野戦砲も耐久力が30以下のユニットに二次ダメージをあたえることができない。
標的の数
二次ダメージの標的の数は、攻撃側ユニットと潜在的な標的の数によって定まる。潜在的な標的とは、攻撃を受けたタイルに位置しており、直接防御を担当せず、耐久力が最大ダメージ量以上のユニットを指す。
例:カタパルトが、耐久力100のマスケット兵・耐久力95のマスケット兵・耐久力42の騎士・耐久力73の斧兵からなるスタックを攻撃したとする。このとき、潜在的な標的数は2体、耐久力95のマスケット兵と73の斧兵である。耐久力100のマスケット兵は直接防御を担当するので二次ダメージの対象にならない。耐久力42の騎士は耐久力が最大ダメージ量以下なので、二次ダメージの対象から除外される。
二次ダメージをあたえられるユニットの最大数は、攻撃ユニットの種類によって決まっている。
| ユニット | 最大標的数 |
|---|---|
| カタパルト (Catapult) | 5 |
| カノン砲 (Cannon) | 6 |
| 野戦砲 (Artillery) | 7 |
| 戦車・パンツァー(Tank/Panzer) | 5 |
| 現代戦車 (Modern Armor) | 6 |
| 連弩兵 (Cho-Ko-Nu) | 5 |
| 爆撃機 (Bomber) | 5 |
| ステルス爆撃機 (Stealth Bomber) | 6 |
つまり、スタックが12体から構成されている場合でも、カノン砲は最大で7体までしかダメージをあたえられない(直接攻撃1体 + 二次ダメージ6体)。
標的数はスタックの潜在標的数か、攻撃ユニットの最大標的数から数が少ないほうが選ばれる。
標的の選択
二次ダメージのラウンドごとの標的は、上で定義された潜在的な標的のリストからランダムに選択される。リストはラウンドごとに更新されない(つまり、すでに最大ダメージ量の損害を受けたユニットがふたたび標的にされる可能性がある)ように思えるが、確かではない。
訳注:二次ダメージの「ラウンド数」は、すぐ上の「標的数」と同じ意味。直接戦闘の1ラウンドごとに二次ダメージがあたえられるわけではない。「標的の再選択」の例を見ればわかるように、二次ダメージは直接戦闘の前に解決されている。
ダメージ量
二次ダメージのダメージ量計算は、通常の戦闘のダメージ計算に近い。ただし、各ユニットの威力による修正は異なるやりかたで適用される。
攻撃側に対する正のボーナスは、弾幕砲火 (Barrage) だけである。弾幕砲火 Iで +20%, 弾幕砲火 IIでさらに +30%, 弾幕砲火 IIIでさらに +50%が追加される。防御側は一切の威力ボーナスを受けない。また、耐久力も考慮されない。
正規の大砲ユニット(カタパルト・カノン砲・野戦砲・爆撃機・ステルス爆撃機)は、耐久力の損害を考慮しない素の威力の値を二次ダメージの計算に使用する。戦車系(戦車・パンツァー・現代戦車)は 0% から、連弩兵は 50%から計算を開始する。
例1:連弩兵(威力6)は、二次ダメージの計算の際はつねに補正威力 3 (6 * 0.5) を使用する。
例2:弾幕砲火 Iを持つ戦車は、二次ダメージの生産の際はつねに補正威力 5.6 (28 * 0.2) を使用する。弾幕砲火 IIを入手すれば、この値は 14 (28 * 0.5) になる。
二次ダメージのダメージ量は、直接戦闘に使用されるダメージの半分の値が使用される。つまり、二次ダメージのダメージ量は:
floor(10 * (3 * A + D) / (3 * D + A)
の式であらわされる。ダメージが上で述べた最大ダメージ量を越えた場合、ダメージ量は減算される。
例:弾幕砲火 IとIIを持つカタパルトが、丘陵に設置された都市に位置する耐久力71の長弓兵に二次ダメージをあたえたとする。このとき、カタパルトの補正威力は 7.5 (5 * 1.5), 長弓兵の補正威力は 6 である(丘陵の防御ボーナス、都市の防御ボーナス、耐久力は考慮されない)。カタパルトは長弓兵に11のダメージをあたえる。
標的の再選択
標的の選択とダメージの決定は、標的の数と同じ回数だけ繰り返される。潜在的な標的すべてが損害をこうむるわけではなく、一部は2回以上攻撃を受ける場合もある。
例:弾幕砲火 I を持つカタパルトが2体の無傷のマスケット兵、戦闘術 Iを持つ耐久力54の騎士、耐久力38の剣士、耐久力83を持つ戦闘象からなるスタックを攻撃したとする。この場合の標的数は3回。初回の標的として戦闘象が選ばれた。補正威力は6と8であり、戦闘象に8のダメージがあたえられる。ラウンド2は騎士が選ばれ、補正威力が6と10であることから7ダメージがあたえられたが、最大ダメージ量の制限によりダメージ量は4まで削減された。ラウンド3は戦闘象がふたたび選択され、ふたたび8ダメージを受けた。
カタパルトと無傷のマスケット兵との戦闘が始まる前に、スタックの状態は2体の無傷のマスケット兵、耐久力50の騎士、耐久力38の剣士、耐久力67の戦闘象に変化した。この後、カタパルトとマスケット兵の通常戦闘がおこなわれる。
経験値
戦闘の勝者は経験値を得る。ほかの戦闘の大部分と同様に、経験値は威力の比率から導かれる。計算式は:
floor(iXPValue * 相手の威力 / 勝者の威力)
であらわされる。iXPValueはXMLファイルで定義された値で、すべての標準ユニットで勝者が攻撃側の場合 4, 勝者が防御側の場合 2 である。戦闘に勝利した場合、最低でも 1 ポイントの経験値が入手できる。上記の式で使用されるのは、ボーナスや耐久力によって修正された修正威力である。
例外:攻撃をかけて撤退したユニットは例外なく 1 経験ポイントを入手する。この場合、防御側は経験値を受け取らない。
例1:剣士(威力6)が平地にいる槍兵(威力4)を攻撃した。剣士が勝利した場合、剣士は floor(4 * 4 / 6) = 2 xp を入手する。槍兵が勝利した場合、槍兵は floor(2 * 6 / 4) = 3 xp を入手する。
例2:現代戦車(威力40)が槍兵(威力4)を攻撃した。現代戦車が勝利した場合(勝率:99.999999+%)、現代戦車は 1 xp を入手する。槍兵が勝利した場合(勝率:6e^-13)、槍兵は floor(2 * 40 / 4) = 20 xp を入手する。
Arathorn氏の投稿は、このあと勝率の「飛躍点」や先制攻撃の効力を考察するさらに詳細な分析へと続くのですが、まずはここまで。
次へ進む
| << Civ4: ユニットの維持費分析 | もくじへ戻る | 戦闘の計算式:勝率の飛躍点・ボーナスの特殊性・先制攻撃 >> |
| この章のはじめへ戻る |