kazuki’s blog

新人エンジニアのブログ

Behavior Designer触ってみた

こんにちは! かずきです。

今回はBehavior DesignerというゲームAIを作成する為のUnity向けアセットを触ってみたので、 備忘録的なものを書きます。

Behavior Designerとは

Task(行動や条件)をノードとしてツリー構造で管理・実行できて、ツリーをGUIエディターで作ることの出来るアセット。
UE4にデフォでついてるBehavior Treeみたいなもの。

ビジュアル化されているので比較的わかりやすく効率のより思考ルーチンを組む事が出来る(と思う)

Behavior Designerのタスク

エディタ内では
Composite
Decorator
Conditional
Action
の4種類で分けられていますが、大きく分けると
Action Task (行動するタスク)
Conditional Task (条件判断するタスク)
の2種類で構成されています。

- Action Task ・・・ Decorator Action
- Conditional Task ・・・ Composite Conditional
といった感じに分けられます。

Compositeタスク

Conditional Taskの1種で、タスクの実行結果を条件判断値として利用し、子ノードのタスクを実行していきます。

主なCompositeタスク

Sequence

f:id:tc_kazuki:20180304180104p:plain エディタ上で見て左から順に子ノードのタスクを実行します。
Failure(失敗)が子ノードのタスクから返ってきた際には自身もFailureを返し、その後に続く子ノードのタスクは実行されません。

Selector

f:id:tc_kazuki:20180304180048p:plain Sequenceの逆でSuccessが子ノードのタスクから返ってきた際には自身もSuccessを返し、
その後に続く子ノードのタスクは実行されません。

Parallel (並列実行版Sequence)

SequenceとSelectorは子ノードのタスクを左から順番に実行していましたが、
Parallel(並行)は文字通り子ノードのタスクを並列実行します。
実行した子ノードのタスクが1つでもFailureを返したタイミングで他の子ノードのタスクを全て中断して、
自身もFailureを返します。

Parallel Selector (並列実行版Selector)

子ノードのタスクを並列実行します。
実行した子ノードのタスクが1つでもSuccessを返したタイミングで他の子ノードのタスクを全て中断して、
自身もSuccessを返します。

Random Sequence (ランダム実行順版Sequence)

Sequenceでは左から順に子ノードのタスクを実行していましたが、Random Sequenceではランダムな順番で子ノードのタスクが実行されます。
その他の動作はSequenceと同様です。

Random Selector (ランダム実行順版Selector)

Selectorでは左から順に子ノードのタスクを実行していましたが、Random Selectorではランダムな順番で子ノードのタスクが実行されます。
その他の動作はSelectorと同様です。

Priority Selector (優先順位指定版Selector)

Selectorでは左から順に子ノードのタスクを実行していましたが、Priority Selectorでは子ノードのタスクに設定されたPriorityが高い順にタスクを実行します。
その他の動作はSelectorと同様です。

まとめ

今回は軽く触ってみただけなので、軽めの内容になってます。
しっかり触ったのちにもうちょっとちゃんとした内容の記事書きます。。

間違いなどございましたらコメント欄でご指摘していただけると幸いです。

では、また!