2014年1月14日火曜日

【Unity】RTS:整列行進と中級AI

中隊同士の戦闘
AIが集団のユニットを移動させると到着地点で横隊になるように改善した。これはプレーヤーのみが使えたフォーメーションのシステムを流用したものだ。
 
 フォーメーションシステムは横隊を組むにあたり、基準となる地点が必要だが、これは指揮車に設定してある。そのため各ユニットは所属する指揮車の周りに円陣を作るようにして横隊を組む。これは中隊を戦略戦闘単位とするゲームシステムにピッタリだ。

 新型の中級クラスのAI、「十月AI(OctoberAI)」の開発を始めた。十月AIは中隊の指揮AIとして指揮下のユニットに指示を与える。これまでは各ユニットに搭載された下級AI「movementManger」が戦闘の判断を行ってきた。しかしこれからは十月AIにより移動および戦闘が管理される。
 十月AIが主に判断の材料とするのは指揮下のユニットから送られてくる、そのユニットを攻撃しているプレーヤーのユニットの情報だ。一番単純なのは攻撃しているユニットが判明した時点で指揮下の全ユニットに対しそのユニットへの攻撃を命じることだ。そうすることで中隊が一丸となって脅威に対処することができる。これは基本の原理としていいだろう。しかしあまりスマートなやり方ではない。
 より的確に戦うには戦闘が始まった時、十月AIは次のことを行わなければならない。

・複数の攻撃目標、及びその周辺を調べる。
・攻撃目標を決定する。
・攻撃目標を指揮下にあるユニットに割り振る。目標を割り振らないで予備戦力としてリザーブさせることもある。
・苦戦しているユニットは撤退させる。この場合撤退とは指揮車の近くまで後退することを意味する。

さらに複雑にすればより効果的に戦えるが、いまのところはこのくらいでいいだろう。他にも十月AIは以下の様な仕事をこなさなければならない。

・常に指揮下のユニットの状態を把握
HP、統制値(パニックの有無)を常に把握しておく必要がある。

・中隊のユニットが常に指揮車の指揮範囲に入るようにする。
これを実現するには2つの方法がある。ひとつは指揮範囲からはみ出たユニットを指揮範囲内に戻す方法、もうひとつは指揮車が移動してはみ出たユニットに近づく方法だ。これはなかなか判断が難しい。追って考えていくようにしよう。

・中隊が停止中の場合は脅威のある方向にむけてユニットを配置して攻撃に備える。
これはたやすい。前述したようにユニットは指揮車の周りに円陣を組むので地点だけ指定すればいい。そうすれば例えば3時方向に展開というようなことができる。

・上級AIに意見具申する。
補給が切れそうなときや戦線が維持できなさそうな場合は上級AIに中隊の配置転換を要請する。

上級AIは戦略を司るAIで各中隊の十月AIに対し指示を与える。上級AIが出す指示には以下の様なものがある。
・攻撃目標とする敵中隊の指定
・ある地点への移動指示

 Bwarsは以前よりより戦略的になっておりそれに伴いゲームバランスを調整しなければならない。ユニットはより破壊されにくくなり持久力が増す。ゲームスピードは低下する。

0 件のコメント: