Frost Dog Studioさんをフォローして、最新情報をチェックしよう!

マイページへ

Ci-enはクリエイターに対して、金銭的な支援を送ることができるサービスです。

【Oats】BehaviorTreeで敵AIの作成

今回はちょっと技術的な話です!
専門的な話なので需要がないかもですが、ちょこちょこ載せていきたいと思います。

Oats プロジェクトは Unreal Engine 4(以下、UE4)を用いて制作中ですが、UE4 の 機能で Behavior Tree という機能があります。

1つ1つの行動を枝分かれした階層構造(ツリー構造)状に繋げていき、AI をノードベースで作成することができます。

Oats プロジェクトの敵AIも Behavior Tree を用いて作成しています、今回は以前紹介した「一つ目小僧」の徘徊する AI を例に解説していきます。

まずはざっくり全体図はこのような感じになっています。

ROOTノードから実行され、左下から順に実行されます。
実際に実行してみるとこんな感じ。

黄色くなっているノードが実行されているノードです。1フレーム内に一気に実行されるので処理の流れはとても早いですが、ちゃんと全てのノードが機能しています。

一つ目小僧の AI は「正面方向に歩き続けて進行方向に何か障害物があれば一旦立ち止まり、Uターンする」というものになっています。
一つ目小僧が歩いている時は「Walk」の方が処理されていて、障害物に近づくと立ち止まり、「Turn」の方が処理された後にUターンしてまた「Walk」が処理されているのが分かるかと思います。

また、Oats プロジェクトではアニメーションの管理も Behavior Tree 内で行っています。
UE4 でアニメーション遷移を管理するには Animation Blueprint を使用するのが一般的ですが、今回 Oats プロジェクトではアニメーションを全て Sprite Studio で作成しているため、その仕組みに乗っかることができません。

そのため、PlayAnimation などのノードを自作し、Behavior Tree 内で行動遷移と共にアニメーションの遷移も実行しています。

今回の例はとても単純な 敵AI の例ですが、Oats プロジェクトの全ての 敵AI はこんな感じで制作しております!

また、こんな感じで技術的な内容だったりゲーム開発環境などの地味な内容の記事もちょこちょこ載せていこうと思います!
何かの参考になったりしたら幸いです!(゜-゜)

\いいね・ツイートで応援!/