スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ixa戦闘アルゴリズム 詳細

兵被害の計算方法の詳細です。

(1)攻撃力と防御力の計算
 まず、攻撃側の攻撃力を計算し、その兵科別戦闘力の比で相性補正した防御側の防御力します。Ixaの画面では、少数点以下切捨ての値が表示されますが、計算においては少数点以下も有効で、丸め処理は行いません。

(2)勝敗の判定と戦闘力比に基づく兵被害理論数の計算
 攻撃力>防御力で攻撃側勝利、それ以外(等しい場合を含む)で防御側勝利です。等しい場合ですが、少数点以下も有効なので、攻撃側100.3、防御側100の時は、攻撃側勝利となります。
 そして、戦闘力比=敗者側戦闘力/防御側戦闘力を計算します。
この値が1/4より大きい場合
  敗者側被害理論数=敗者側兵数×(1-0.6×戦闘力比)
  勝者側被害理論数=勝者側兵数×0.4×戦闘力比
この値が1/4以下の場合、 
  敗者側被害理論数=敗者側兵数
  勝者側被害理論数=勝者側兵数×0.4×戦闘力比 と 敗者側兵数 のうち小さい方

被害理論数は丸め処理を行いません。

(3)戦闘力の逆数比で被害の小隊配分
 勝者側、敗者側で、各小隊の1/戦闘力を計算し、その合計を取ります。
 理論被害数×1/戦闘力/(1/戦闘力)の合計 で小隊毎の被害数を計算します。

(4)丸め処理
 丸め処理を行った数が、各小隊の被害となります。その処方は勝敗で異なります。
 勝者側は、その被害数の小数点以下を切り捨て
 敗者側は、その被害数を四捨五入し1を加算

 被害が小隊の兵数以下であれば被害が確定します。もし、被害が兵数より大きければ次の処理を行います。

(5)未処理被害の再配分
 未消化の被害を合計し、兵が残っている小隊の間で(3)(4)の処理を行って再配分します。その際の 小隊の戦闘力は戦闘前の戦闘力です。
 

スポンサーサイト

2%キャップ

勝者兵被害のルールの最初の2ルールを使い、2%キャップが導かれます。

勝者の兵被害は(勝者総兵数×0.4×敗者戦闘力/勝者戦闘力)ですが、敗者全滅時は兵被害は敗者兵数を超えません。

つまり、敗者全滅時に勝者側の兵被害が最大となっている場合、次の式が成立します。

敗者総兵数=(勝者総兵数×0.4×敗者戦闘力/勝者戦闘力)

敗者は攻撃側ですね。そして戦闘力は、相性や統率をとりあえず無視(1とすると)し、兵種も1つとして近似すると 
 武将戦闘力+兵戦闘力×兵数 
ですので

攻撃側兵数=防御側兵数×0.4×(将攻+攻撃側兵数×兵攻)/(将防+防御側兵数×兵防)

となります。

攻撃側がハイランクの剣豪を使い 将攻>>兵攻×攻撃側兵数
防御側が兵数が莫大で       将防<<防御側兵数×兵防

となっているとすると

攻撃側兵数~0.4/兵防 ×将攻

となります。兵防は・・・・相性適用前で5~26、相性適用で最大40ですが・・・
えいやっと20くらいとしてみます。

そうすると・・・

攻撃側兵数~0.02×将攻

はい。

攻撃側の武将戦闘力の2%程度の兵数で、莫大な兵数の敵に突っ込むと
 同程度の兵被害を相手に生じさせる事ができるという 2%キャップが説明できました。



ここで、防御側が防御剣豪を使っていると、 将防<<防御側兵数×兵防 という近似が成立しません。攻め損です。
そこで、合戦の攻撃側の時、敵の大殿城に攻め込んでみましょう。莫大な兵が相手ですから、上の近似が成立し、こちらの被害に近い被害を相手に与える事ができます。剣豪が育っていれば、この方法で攻撃ポイントをじみーに稼ぐ事ができます。

戦闘に関する要因 整理 1

将戦闘力、兵種、兵数、統率(防御側は加えて相性)で小隊の基本戦闘力が決まります。

攻撃においては更にスキルと移動距離(及び距離課金)が影響します。防御においては、スキル、拠点の防御ボーナスが影響します。

以上で戦闘について決まりますが、戦闘の結果については更に次の項目が影響してきます。

1)戦闘の結果、武将のHPが減り、0になると兵が残っていてもその小隊は脱落します。

2)戦闘の結果、倒した兵数(兵種毎に補正がかかる)を小隊数で等分した値に、経験値補正ボーナス(同盟レベル、東西無双、経験値課金 空地攻撃の場合討伐ゲージ)を乗じた値が武将経験値として付与されます。

3)戦闘の結果、攻撃側勝利の場合、残った兵(HP0で脱落した兵は除く)により破壊が行われますが、その値は破壊スキルが影響します。

4)戦闘の結果、破壊が行われ、耐久値が減り0になると拠点陥落になります。耐久値は、拠点種別、拠点レベルで決まりますが、盟主本城には同盟員数によるボーナスが追加されます。

防御力計算

先の4ルールは、IXAのあれこれで発表されているものです。ただ、このブログの更新が停まった模様なので、整理して書き直しました。

さて、戦闘力比の計算ですが、
攻撃側に関しては、統率×(将戦闘力+兵戦闘力×兵数)が基本でこれにスキルの効果が適用されますが、防御側が問題で、これに攻撃側の兵科との相性補正がかかります。
赤備え等の馬兵科で攻めてきた時、防御側の槍兵科小隊の防御力は2倍、弓兵科小隊の防御力は半分になります。

ここまではWikiに載ってます。

混合兵科で攻めてきたら、どうなるか・・・はいっ、試験に出ますよ。

 攻撃力の比で補正が変ります

例として挙げますが、攻撃力が馬兵科1:槍兵科2の比だったら、
 
防御側の
槍兵科小隊の防御力は、2×1/3 + 1×2/3 = 4/3倍 (槍兵科の対馬相性補正2、対槍相性補正1)
弓兵科小隊の防御力は、1/2×1/3 +2×2/3 = 3/2倍 (弓兵科の対馬相性補正1/2、対槍相性補正2)
馬兵科小隊の防御力は、1×1/3 +1/2×2/3 = 2/3倍 (馬兵科の対馬相性補正1、対槍相性補正1/2)

となります。

Ixa戦闘アルゴリズム

次の4法則をもとに兵損失の計算を行います。

[1]勝者0.4、敗者1-0.6のルール
戦闘力(攻撃側の攻撃力と防御側の相性補正防御力)の比(敗者戦闘力/勝者戦闘力)が基本になります。

・勝者の兵被害は
 0.4×敗者戦闘力/勝者戦闘力 ×勝者総兵数

・敗者の兵被害は
 (1-0.6×敗者戦闘力/勝者戦闘力) ×敗者総兵数

[2]4倍で敗者全滅のルール
戦闘力比が1/4以下になると、敗者の兵は全滅し、勝者の兵被害はその数を超えません。

[3]戦闘力の逆数比で分配のルール
兵の被害は、小隊毎に分割されます。その際、小隊の戦闘力の逆数比で分割します。
その被害が兵数を超えていた場合、未消化分は残りの小隊で戦闘力逆数比で再分割です。

[4]勝者被害、少数点以下切捨てのルール
[1]-[3]のルールに基づいて、勝者側の小隊の兵被害を計算しますが、その際、少数点以下は切り捨てとします。
(敗者側が切り上げなのかどうかは・・・実は未検証です。切り捨て+1、四捨五入+1の可能性もあったりして)


敗者被害については・・・・今後、修正もありえます。

現状とこれから

この戦闘シミュレータはJavascriptで計算を行ってます。ローカルにソースファイルを持っていき、直接ブラウザで開くなり、httpdソフトを走らせてブラウザからlocalhostで開けば、Webにアクセスしなくても使えます。

ただ、Javascriptに関して若干ブランクがあり、前世紀末にJavascriptから離れ、時々Javaで遊んではいたものの、jqueryってなぁに?ajaxってなぁに?という状況から、急遽、試行錯誤しまくりで作りましたので・・・・・

いろいろいじってる間に、どんどんソースの構造が変っていく始末。

対空地戦闘に関しては、一応、出来上がってます。いろいろ付け足したい事はありますが、Javascriptの勉強、ソースの改造、アルゴリズムの改造、内容の検証、Ixaプレイ(笑)を並行させてやっていくとわけわかんなくなるので、12/05/22公開の0.15aで、空地攻略版は完結とします。(バグやアルゴリズム改造があれば修正します)

対人戦対応版を現在作成しています。一応、空地攻略版の上位版としていますが、ソースファイルはかなーり変っています。もう少しで、空地攻略版の機能を全部サポートできますので、その時点で公開し、その上でアルゴリズム検証・修正と機能追加をしていこうと思っています。

簡単なIxa自己紹介

そもそも、私は

IXAのあれこれ ダメージ吸収役について

にコメントしてる「12鯖のもがみん」です。もっとも、12鯖からは撤収し、今現在、27-28と29,30で遊んでます。

29鯖は織田家、30鯖は長宗我部家と最上家無きあと放浪してますが、27-28で最上家が復活したのでそこをメインにしてます。

攻撃力比で防御側の防御力が変化するという事を、あれこれさんのところで発表したのですが、計算方法が面倒なのか、だぁれもブログで扱ってくれません。2chのIxa質問スレで、混成部隊で攻めたいのですが、足りますか?と頻繁に質問があがるのに・・・・・

ということで、その計算が簡単に出来るようなツールを最初Excelワークシートで公開にしたのですが、使い勝手が悪いのか、Excel持ってない人が多いのか、あまり反応が無いので・・・

Webツール化してみました。

それが戦闘シミュレータです。

作成奮闘ブログつけました。

戦国IXAつーるを作ってみる

コメントを付けられる様、ブログ作ってみました。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。