Behave 2 for Unityとは
Behaviour TreeによりAIなどのロジックの全体像を可視化することができるAssetです。
Behaviour Treeは木構造でノードとリーフを用いて、ルール/アクションを評価/実行します。
ノードのステータス
各ノードにはステータスがあります。
ステータスの詳細は以下のとおりです。
- READY:初期値
- SUCCESS:ノードの実行が成功
- FAILURE:ノードの実行が失敗
- RUNNING:ノードの実行中
ノードの種類
Action
stringとfloatのパラメータを追加できます。
実行するのみで、Actionノードの下に子ノードを配置することはできません。
Selector
左から右へ順番に実行されます。
子でSuccessが発生した時点でSuccessを上位へ返します。
Failureが発生した場合は右隣のノードへ遷移します。
すべてのノードが失敗だった場合はFailureを上位へ返します。
Priority Selector
Sequence
Selectorが子がFailureしたら右隣のノードをチェックしにいくのに対し、SequenceはSuccessした場合のみ右隣のノードをチェックしにいきます。
Failureの場合はその場で上位へFailureを返します。
Repeater
右ノードがFailureを発生させるまで下ノードはループし続けます。
Interrupter
右ノードをチェックし、Failureの場合は子ノードへ遷移しません。
右ノードがSuccessの場合は子ノードへ遷移します。
Parallel
並列で子ノードを実行可能にするノードです。
左下のON/OFFスイッチみたいなので、子ノードがすべてSuccess/Failureしたタイミングで上位へ結果を返すか、いずれか一つでもSuccess/Failureしたタイミングで上位へ結果を返すかどうかを設定できる。
Reference
使用方法
1.Behaveエディター上でツリー(Tree)を作成
2.各ノードを配置
3.コンパイル/ビルド
4.コンパイルエラー発生
コンパイルを実行するとエラーが発生しますが、こちらは気にしなくても大丈夫です。
エラーの原因はビルド完了時に進捗バーをクリアしようとして失敗し、そのエラーがComplie関数内で実装されているみたいで、そのためにコンパイルエラーというようなダイアログが表示されてしまっています。
(紛らわしいので修正してほしい。。)
5.dll出力
ビルドされたファイルはdllとして出力されます。
dllが出力されていない場合は、どこかでビルドが失敗していると思われます。
6.ライブラリ読み込み
実際にUnity上で扱う際は、出力されたdllを読み込み、ツリーをインスタンス化します。
インスタンス化すると、各ノードの実行結果が上位ノードへ返却されます。
最上位ノードは返却されたステータスを判定し、ツリーの処理を止める(Reset)かどうかを決めます。
Behave 2 for Unityを使ってみた感想
メリット
AIロジックなどを実装する際に、全体像が可視化できるため、複雑になったとしても管理しやすいです。
再利用性も非常に高いと思います。
デメリット
ドキュメントが英語の為、導入のハードルが少し高いです。
また、初心者が扱うには難易度が高い気がしました。
この記事へのコメントはありません。