2016年2月24日水曜日

【Unity】火器管制装置


ここ数日はずっと煩瑣なユティリティのメソッドを作っていた(地点Aから地点Bを0時として指定時間方角で地点Aから指定距離離れた座標を返すとか)が、今日は思い切って火器管制装置を改修した。

 各タレットは使用する弾薬の威力と砲の発射速度から対装甲種ごとに分間攻撃力(DPM)を算出し、火器管制装置がこれを集計する。これがそのユニットの火力の評価となる。
 レーダークラスは探知距離内に確認された敵情報を火器管制装置に渡す。火器管制装置は与えられた敵をまず攻撃優先度でソートして、ついで管制下のタレットに目標として割り振る。優先度を測るために敵の火力から脅威度を評価する。まずこちらを射程に収めてかつ火力の高い敵が上位を占めて距離が離れるごとに優先度が下がっていく。優先度が決まると今度はその敵の装甲種を確認して最も効果的なダメージを与えれるタレットに攻撃目標を割り当てる。割り当てるに際してはタレットがまだ目標を指定されず、目標を射程に収め、ダメージを与えられるか判断される。目標がタレット数を下回る場合は一番優先度が高い目標に複数のタレットが割り当てられる。

 上の写真の例では右端のレッド国のタレットが3つある(!)戦車が左二つのブルー国と戦闘をしている。レッド戦車のタレットの向きから優先度の高い至近のブルー戦車にタレットを二つ、もう一つのブルー戦車に一つを割り当てていることが分かる。この火器管制装置は(処理が許す限りは)戦車のような火砲が数個のユニットから戦艦のような数十の火砲を持つユニットを一律に制御ができる。とてもいい話に聞こえるが、もちろん、ネックは処理負荷だ。

 しばらくこれで火器管制装置はほっぽくが今後の改善としてはタレットから目標に火線が通るかの確認、角度が限定されたタレットへの対応、ユニットのダメージに応じた優先度決定ロジックの選択、また攻撃対象への攻撃予約の確認が考えられる。攻撃予約とは攻撃が決まったユニットに対して予想される与ダメージ量を伝達することで味方ユニットの火力が過度に一つの目標に集中することを防止するアイディアだ。この場合、責任交戦距離の短いユニットからチェックを行うべきだろう。そうすれば至近の敵歩兵に対しては味方歩兵が対応し、戦車は(敵歩兵にすでに十分な攻撃量が予約されているので)より重要度の高い目標を攻撃することができる。

0 件のコメント: