大雑把に理解するUE4のビヘイビアツリー
ビヘイビアツリー
ビヘイビアツリー
キャラクターに対して、
アニメーションの再生
特定の位置への移動
何かにヒットしたときの反応
などの「アクション」をするための指示を、独自の思考や意思決定
(要は複雑な条件でアクションを決定する等)
を視覚的にわかりやすく組めるようにした機能
ビヘイビアツリー
BlueprintだけでもAIを組めなくはないが、処理が複雑になって見にくくなる
上に、他のアクターで同様の意思決定をしたい場合、移植に手間がかかっ
てしまう。
「意思決定」の部分だけを切り離すことにより、他のアクターのAIに使いまわ
すことが容易になる。
ここに何か一つ以上、意思決定のための条件が加わるだけで味わい深いスパゲッティが完成する
ビヘイビアツリー
・ブラックボード
意思決定に必要なプロパティをまとめたもの
一般的なワークフローとしては、ブラックボードを作成し、
Blackboard Key をいくつか追加してから、Blackboard アセッ
トを使用するビヘイビアツリーを作成
ビヘイビアツリー
・コンポジット
実行するタスク等をまとめたノード。最初は2つのノードだけ覚えればいい
https://docs.unrealengine.com/ja/InteractiveExperiences/ArtificialI
ntelligence/BehaviorTrees/BehaviorTreeNodeReference/Behavior
TreeNodeReferenceComposites/index.html
ビヘイビアツリー
・コンポジット Sequence
ぶら下げたタスク等(子ノード)を左から順番に処理する。
すべての子ノードの処理が成功した場合に限り、親に成功を通知する
一度でも子ノードの処理が失敗すると、同じ位置の子ノード以降の処理は
実行されない
ビヘイビアツリー
・コンポジット Selector
ぶら下げた子ノードのうち、どれか一つでも成功を通知した場合、親に成功
を通知する。
成功が一回でも通知されると、同じ位置の子ノード以降の処理は実行され
ない。
すべての子ノードの処理が失敗した場合に限り、親に失敗を通知する。
ビヘイビアツリー
・タスク
AI の移動やブラックボードの値の調整などを「行う」ノード
意思決定に必要なことを実行する場合は基本タスクを作成して処理させる
Finish Executeで成功か失敗かを通知する
https://docs.unrealengine.com/ja/InteractiveExperiences/ArtificialI
ntelligence/BehaviorTrees/BehaviorTreeNodeReference/Behavior
TreeNodeReferenceTasks/index.html
ビヘイビアツリー
・デコレーター
タスクを実行するか否かを判断するためのノード。青いやつ
簡単に言えばIF文
https://docs.unrealengine.com/ja/InteractiveExperiences/ArtificialIntell
igence/BehaviorTrees/BehaviorTreeNodeReference/BehaviorTreeNode
ReferenceDecorators/index.html
ビヘイビアツリー
・サービス
タスクorコンポジット実行中に限り、常に実行させたい処理をまとめたもの
緑色のやつ
https://docs.unrealengine.com/ja/InteractiveExperiences/ArtificialIntell
igence/BehaviorTrees/BehaviorTreeNodeReference/BehaviorTreeNode
ReferenceServices/index.html
参考資料(特に参考になった資料紹介)
・UE4でAIとビヘイビアツリーと-基礎-
https://www.slideshare.net/com044/ue4ai
参考資料(特に参考になった資料紹介)
・【UE4】味方AIの作り方!AIとは何かを学びながら、ブループリントで味方
キャラクターを実装しよう
https://qiita.com/4_mio_11/items/9e8af2ce82ee2a7625b5

大雑把に理解するUE4のビヘイビアツリー