2012年4月10日火曜日

「敵を知り己を知れば」について:その1

 古人は偉かったシリーズその2です。はじまりはじまり

今日は技術的なお話ですが
敵を知り己を知れば」で始まるのは御存知孫子の有名な一節ですね。

さてこの言葉はixaにも勿論妥当します。
ixaの戦闘ではデジタルに弾き出された攻撃力と防御力で
無慈悲に(一義的に)結果が出ますので
狙った結果を導く為には相手がどの程度の攻撃/防御力で
自分はどの程度の攻撃/防御力なのかを予測し理解していなければなりません。

前回取り上げた目的論との関係でいえば,特に上記のことは
ソロ・少数での戦功稼ぎ(拠点陥落狙い)のときに決定的に重要になります。

このゲームは,局地的には防御側が多くのコストを利用できるという意味で
圧倒的に防御優位にできている為,攻める前から諦めるべき場所というのがあるわけですね。


以下では,こういう彼我の能力差,能力比についての考え方につき
他の人が発見したもの(ソース省略)と自身が調べたものの双方から
よく使っているものを記します。


***

まずは「敵を知り」のパートです。

上述のような理由から,相手が一体なんぼのもんか,ということを調べる技術は
ixaの草創期から開発されてきました。
以下では大きく分けて2つの有用な方法・式を紹介します。

**

第1に,既に2011年の1月までには発見された法則でありながら
おそらくixa史上最も画期的な発見の1つといえるものとして

・キャップ理論(敵の1/4の力で攻撃した場合,相手の被害兵数はこちらの兵数を上限とする)
・被害は小数点以下切り捨て
の2つの法則がありますが,

これを利用したノックによる敵武将数推定の方法があります。

つまり,10ノックなら10兵,100ノックなら100兵という形で相手に被害が生じるなら,
小数点以下の数値が生じないような奇跡の割合で相手の防御部隊が構成されていない限り,
小数点以下切り捨ての法則を利用して,相手の武将数が分かるわけです。

具体例でいえば,4人で守っているところに10兵で攻撃をした場合,
A:2.1,B:2.9,C:3.5,D:1.5 なんていう形で被害が割り振られても,
実際に出てくる被害兵数は,A:2,B:2,C:3,D:1 =計8 となるんですね。

要約すれば
相手の武将数=(こちらの兵数-相手の被害兵数)×2 
ってことです。誤差は±1というところ。

しかし,これは相手の被害が必ず自部隊と同じだという仮定に基く場合の話で
実際はそう簡単ではないわけでして,

勝利側の被害兵数=敗軍/勝軍×0.4×勝軍総兵数

ということを覚えておかなければいけません。
つまり,(本来であれば)こちらの兵数以上に敵に損害が出る
という状況を作らなければならないのであり

総攻の2%の兵数でノックする場合
敵の総防を敵兵数で割った時に20まで でなければ計測出来ず

総攻の1%の兵数でノックする場合
敵の総防を敵兵数で割った時に40まで でなければ計測出来ません。

そしてこのあたりの敵防御力は,スキルや天守・出城の強化で結構出てしまうことがあるため,
同数被害は出ず,ノックが機能しなかったりします。

この点で,経験則的には,将攻の0.5%~1%でノックをすると精度が高いです。
つまり,将攻2000の武将で10ノックをしたり,
さらに詳しく知りたい場合は将攻15000の剣豪で100ノックをしたりしてます。

100ノックを用いれば,相手盟主を攻める際に精確に何人加勢が入っているかを
事前に知ることが出来ますし,実際に合流で飛ばした人数がぴたりと一致したこともあります。
個人的には盟主以外は10ノックで十分だと思います。


**

さて第2に,ソロではなく合流で盟主攻めをする場合などに用いる方法です。
つまり,ある程度こちらが負けるのは前提として,
最終的に勝てそうかどうかを計るという方法ですね。

これについてもixa初期から色々と検討がされてきているところでありまして
ずばり有用性が高いものとしてよく用いられるのは
敗れたこちら側の武将のHPへのダメージ(又は残りHP)から相手の防御力を推定する
という方法です。
(HPダメージも少数点以下切捨と考えられる為,目安が分かるに留まります)

この点で,他所で普及している式が
敗北側がHP100で攻撃した場合の残りHPを導く式
であることから,残りHPを使う方法が一般に用いられているようですが

個人的には「100で攻めた場合限定の残りHP」というのがなんだかしっくりこないので
直接にHPダメージを導く式に基いて計算することにしています。
(これは他所での検証を経た計算式ではなく自分の調査によるものなので修正可能性あり)

即ち,
敗戦側のHPダメージ=63+42(1-敗軍/勝軍) 
であることから,
敗戦時の敵軍(勝利側)=自軍/(1-(HPダメージ-63)/42)
であることが求められます。

なお,このとき「自軍」に精確な攻撃力を入れる必要はないわけで
(現状では攻撃してる側もそれは分からないですから)
「1」で計算すれば,防御側の敵軍が自軍の何倍の防御力なのかを求めることが出来ます。


なんだか小難しい計算式ばかりで分からんという人もいるかもしれませんが
Excelなどで一度式を作ってしまえば,あとは実際の数値を入れるだけで
あっさり答えが出ますので簡単です。

自分が使ってるもの→



*

また,相手の武将のHPを0にして飛ばすことを狙う場合には
「今の攻撃で相手にどの程度のHPダメージを与えたか知りたい」
ということもあると思いますが,これは

勝利側のHPダメージ=56/(勝軍/敗軍)
であることから
敵(勝利側)のHPダメージ=4/3(105-自HPダメージ)

ということが導かれます。
(これも他所での検証を経ていないので修正可能性ありですが概ね合っている筈です)


**

以上,「敵を知り」のパートでした。

少し長くなりましたので「己を知れば」については分割して次回お送りします。

2 件のコメント:

  1. 1+2鯖民です2012/04/10 20:49:00

    初心者ですので、とても参考になりました。

    次合戦は東西戦です。

    特攻する方がいいのかなと思ったりもしますが。

    返信削除
  2. 1+2で活躍されている方がこんな辺境までようこそお越し下さいました。
    東西戦では是非細かいことは後にして(落ちそうなところを皆で)総力傾けて攻撃下さいませ。

    返信削除