AIを考える上でこの記事やこの記事は役に立った。試しにAIの役割について簡単なチャートを描いてみた。AIは上級から下級にかけて「師団」「旅団」「大隊」としている。ユニットに搭載されているスクリプトは大隊クラスだ。最終的にはには第二次大戦のRTSを目指しているのでこのような構成にしてみた。ただし今回は戦国時代が舞台なので大規模な部隊運営は想定しておらず師団AIと旅団AIはほとんど融合することになる。図を見ると簡単に見えるが実際には戦況の把握・分析、戦術の決定をこなせばならず更に時間軸が関わってくるのでAIの組み立てには相当苦労するだろう。
2012年11月30日金曜日
2012年11月29日木曜日
【Unity】RTS:AI 1 単純な移動
2012年11月25日日曜日
【Unity】RTS:遠隔攻撃の付与
矢を目標に放っているところ |
ユニットが矢を放てるようになった。これでユニットのスクリプト開発はひと通り完了したことになる。これまでの開発でユニットは以下の様なことが可能になった。
- 指定された座標への移動
- 障害物を回避する
- 近接、間接攻撃
- ダメージ計算
これであとはAIを実装すればゲームとして機能するようになる。尤もそのAIが一番の関門なのだが。
さて、とにかくもここまで来ればどんなゲームを目指して開発をしているのか表明することもあながち場違いではないと思う。
ゲームのコンセプトアート |
来年度中に完成すれば万々歳だろう。
【Unity】RTS:集団行動
2012年11月21日水曜日
【Unity】RTS:障害物回避6
2012年11月18日日曜日
【Unity】RTS:障害物回避5
ウェイポイントシステムを構築した。まあこれは簡単だった。配列に座標を格納して指定した順にユニットは移動することが出来る。
さて、ユニットに搭載していた場当たり的な回避システムにはかねてより問題があった。大きい障害物は回避不能であり、広大な山岳を避けたり川にかけた橋などを通過させるためにはより改良された回避システムが必須だった。最初は超長距離センサーを搭載して回避を図ったがこれはこれまでの場当たり的な回避システムを単に大型化しただけで役には立たなかった。そこで大きな障害物の周りに4つのビーコンを置くことを思いついた。上の画像で光っているのがビーコンだ。大きな障害物はユニットが近づいてくると、ビーコンを作動させる。各ビーコンはただちにユニットとユニットの目的地そしてビーコン間の距離を測定しユニットがどのビーコンを中継して進めば大きな障害物にぶつかることなく、目的地に到達できるかを特定する。ユニットはビーコンの助言に基づき先のウェイポイントシステムを利用して新たにウェイポイントを設定し目的地まで無事にたどり着く…筈だがこれは回避システムの複雑化を招くこととなった。時々ユニットが明後日の方向に向かってしまう。非常に厄介だ。
2012年11月11日日曜日
【Unity】RTS:障害物回避4
2012年11月10日土曜日
【Unity】RTS:障害物回避3
色々考えたのだけども、障害物回避にはrayで周囲をスキャンして障害物を探知するのが良かろうという結論になった。そこで個々のユニットにくるくる自身が回転しながらrayを照射するオブジェクトを搭載させた。照射が障害物に当たると赤い線が表示される。馬鹿馬鹿しいことにこれを作るのに4時間もかかった。