SlideShare a Scribd company logo
UE4
ビヘイビアツリー入門
発表内容
・ビヘイビアツリーの概要や作り方の解説
・ビヘイビアツリーを使って直面した課題や解決法の共有
今回の目的
ビヘイビアツリーを知る
今回の目的
ビヘイビアツリーとは?
ビヘイビアツリーとは
ツリー上に要素を配置してAI(思考)を構築するもの
ビヘイビアツリー
ビヘイビアツリーとは
ツリー上に要素を配置してAI(思考)を構築するもの
ビヘイビアツリー
ビヘイビアツリーとは
ツリー上に要素を配置してAI(思考)を構築するも
の
AI?
AI = キャラクターの思考回路
例えば、
「電車に乗って会社へ行く」
「会社に付いたら仕事をする」
「仕事が終わったら家に帰る」
「家に着いたら寝る」
つまり、
AI = キャラクターがどのように行動するかを決めるもの
ビヘイビアツリーとは
ツリー上に要素を配置してAI(思考)を構築するもの
=キャラクタがどのように行動するかを決定する
ビヘイビアツリー
ビヘイビアツリーの処理の流れ
ビヘイビアツリーでの処理の流れ
手順1. Aを実行
手順2. Aが完了したらBを実行
手順3. Bが完了したらCを実行
手順4. Cが完了したら手順1.へ戻る
A:会社へ行く
B: 仕事する
完了
C:家に帰って寝る
完了
完了
実際のビヘイビアツリー
実演デモ
Sequenceを使ってみる
実演デモ
一定間隔で攻撃するAI
AI解説
SequenceとSelector
実行順序を制御するノード
二つのノード(コンポジットノード)
• Sequence
一連の処理を実行するノード
• Selector
条件を満たす処理を選び実行するノード
AIの実行ルートの制御を行う
Sequenceノード
一連の処理を実行するノード
Sequenceノード
例えば、こんなAIが作れます
1.「電車に乗る」を実行する
2.「電車に乗る」が完了したら「会社へ行く」を実行する
3.「会社へ行く」が完了したら「仕事をする」を実行する
Sequenceノード = 1 ~ 3 を順番に実行
(補足 : Sequenceは英語で「連続するもの」という意味)
例
処理の流れ
Sequenceノードの挙動
• 下位ノードの実行が成功で終了した場合、次のノードを実行
• 下位ノードの実行が失敗で終了した場合、そこで終了
ノードが成功した場合、次を実行
ノードが失敗した場合、そこで終了
Selectorノード条件分岐を実現するノード
Selectorノード
例えば、こんなAIが作れます
1. お腹が空いていた場合、ご飯を食べる
2. 疲れていた場合、寝る
3. それ以外の場合、会社で仕事をする
Selector = 条件を最初に満たすものを1つ選ぶ
(補足 : Selectは英語で「選ぶ」という意味)
例
最初に条件を満たすものを実行
Selectorノードの挙動
• 下位ノードの実行が成功で終了した場合、そこで終了
• 下位ノードの実行が失敗で終了した場合、次のノードを実行
成功した場合、 そこで終了
失敗した場合、 次を実行する
実演デモ
Selectorを使った条件分岐
実演デモ
プレイヤーが近づいたら攻撃してくるAI
AI解説
SequenceとSelectorの比較
Sequence
• 下位ノードの実行が成功で終了したら次を実行
• 下位ノードの実行が失敗で終了したらそこで終了
Selector
• 下位ノードの実行が成功で終了したらそこで終了
• 下位ノードの実行が失敗で終了したら次を実行
SequenceとSelectorの使い分け
Sequence
Selector
→ タスクを全部まとめて実行する
= 処理をまとめたい場合に便利 = ノード整理に使える
→ タスクのどれか1つを選んで実行する
= 条件分岐させたい場合に便利
ビヘイビアツリーの部品
ビヘイビアツリーを構成する要素
ビヘイビアツリーを構成する部品
• Task
• Sequence
• Selector
• Blackboard
• Decorator
• Service
ビヘイビアツリーを構成する部品
Task
キャラクターに対して処理を行う
Sequence/Selector
実行ルートの制御
Blackboard
ビヘイビアツリーで使用する変数の受け渡し
Decorator
下位ノードの実行判定の条件式
Service
指定した秒数間隔で処理を行う
BTの各部品の解説
Task
キャラクターに対して処理を行う
Taskノードとは
キャラクターに関する処理を行うノード
例
・プレイヤーを追いかける
・その場で待機する
・攻撃する
・ジャンプする
タスク例
Taskは2種類ある
最初から用意されているTask
例: 相手を追いかける(MoveToタスク), 一定時間待つ (Waitタスク)
自分で作るTask
・ブループリント または C++で実装するタスク
例: 正面へ進み続ける、 画面にログを出す (デバッグ用)
Taskの作り方 解説UE4上でオリジナルのTaskを作る
STEP1. Taskアセットの作成
1. ブループリント作成 2. BTTask_BlueprintBaseを選ぶ
STEP2. ブループリントを組む
PrintStringするだけのTask
自作Taskの呼び出し
注意点
Finish Executeを呼び忘れるとタスクが終了しない
Decorator下位ノードの実行判定
Decoratorとは
下位ノードを実行するかどうかを判定する
活用例
・HPが減っていた場合逃げる
・プレイヤーキャラが近かったら追いかける
使い方 : タスクやSequence, Selectorにくっつける
例
Decoratorの機能
実行タイミングでの失敗判定
・ノードに実行タイミングで失敗するかどうかを判定
・失敗した場合、上位ノードに実行結果として失敗を戻す
例: 最初からキャラが遠くにいたので作業をしない
実行中での失敗判定
・下位ノード実行中に失敗判定を行う
・失敗した場合、下位ノードを強制終了(Abort) して上位ノードに失
敗を戻す
例: キャラが近かったけど途中で遠くなったので作業をやめる
デコレーター判定タイミングの設定
None = 実行タイミングで判定
Self = さらに実行中に判定を行い、失敗時に下位ノードを中断
実行時の失敗判定
Blackboardビヘイビアツリー上で使用するデータの定義
Blackboardとは
ビヘイビアツリー上で使用する変数を定義するもの
Blackboardで使える変数型
Bool
Class
Float
Int
Name
String
Enum
Object
Rotator
Vector
Blackboardの使用例
TaskからBlackboardを使う
「ご飯を食べる」タスクから胃袋に入っている食べ物の量を増やす
DecoratorからBlackboardを使う
「おなかが減っている」デコレーターから胃袋に入っている食べ物の量を
チェックする
例 :DecoratorからBlackboardを使う
Blackboard
例 : TaskからBlackboardを使う
Blackboardを使って待機時間を設定する例
Blackboard
その他のBlackboardの使い道の具体例
・MoveToタスク
Blackboardに設定されているアクタに向かってAIキャラクタが
歩いていく
・ Is At Locationデコレータ
Blackboardに設定されているアクタがAIキャラクターから離れ
ている場合に失敗する
-> アクタがキャラに近い時に処理をさせたい時に便利
Service下位ノード実行中に処理を行う
Serviceノードとは
下位ノード実行中に指定した頻度で処理を走らせる
例
・0.1秒間隔でBlackboardの更新を行う
使い方 : タスクやSequence, Selectorにくっつける
サービスの使用例
例
• Blackboardを更新するサービス
実行間隔の設定
部品の説明 終わり
直面した課題とその解決
BehaviourTreeを触っていて直面した課題
課題1
ノードが多すぎてビヘイビアツリーが見づらい
課題2
ビヘイビアツリーの動作チェック
課題1
ノードが多すぎて見づらい
最初はシンプルなAIだった
-> 複雑なことをしようとするとノードが増加
-> ノード数が爆発的に増加
実際のビヘイビアツリー(再現)
実際のビヘイビアツリー(再現)
実際のビヘイビアツリー(再現)
対策
ビヘイビアツリーを整理
ビヘイビアツリーの整理
BT(ビヘイビアツリー)を構造化することを意識する
・同じ意図のツリーは別のBTにまとめる
・ソースコードを関数化するのと同じ
下位ノードがたくさんぶら下がっていると見づらい
-> Sequenceノードを使ってまとめる
整理 1
BTを別のBTとしてまとめる
例
置き換えた後
実際に作ったBT : キャラクター抽選
名前 : BT_GetCharacter
整理 2
Sequenceノードを使ってノードをま
とめる
ノードが多いと読みづらい
Sequenceノードを使って構造化
Sequenceノードを使って更に構造化
整理した結果
ビヘイビアツリーを整理した結果
比較
AfterBefore
課題2
正しく動いているか確認できない
とあるビヘイビアツリー
とあるビヘイビアツリー
対策
デバッグログのTaskを
自作
デバッグログタスク
実行時に画面に文字を出すタスク
内部的にはPrintStringノードを実行してるだけ
UE4にはデバッグログ用のタスクがなぜか用意されていないので
自分で作る必要あり (UE4.18時点)
タスクの中身
PrintStringするだけのTask
自作Taskの呼び出し
ご清聴ありがとうございました
参考URL
[UE4] ビヘイビアツリー(BehaviorTree)の使い方 入門編
http://historia.co.jp/%3Fp%3D1102

More Related Content

What's hot

UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
 
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
エピック・ゲームズ・ジャパン Epic Games Japan
 
絵心がなくてもわかる UE4絵作りのコツ
絵心がなくてもわかるUE4絵作りのコツ絵心がなくてもわかるUE4絵作りのコツ
絵心がなくてもわかる UE4絵作りのコツ
Masahiko Nakamura
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
エピック・ゲームズ・ジャパン Epic Games Japan
 
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
Tatsuya Iwama
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
Masahiko Nakamura
 
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
エピック・ゲームズ・ジャパン Epic Games Japan
 
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られたNintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
Tatsuya Iwama
 
猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4
pafuhana 1213
 
第1回UE4名古屋勉強会
第1回UE4名古屋勉強会第1回UE4名古屋勉強会
第1回UE4名古屋勉強会
Masahiko Nakamura
 
Unreal Engine 4を使って地球を衛る方法
Unreal Engine 4を使って地球を衛る方法Unreal Engine 4を使って地球を衛る方法
Unreal Engine 4を使って地球を衛る方法
エピック・ゲームズ・ジャパン Epic Games Japan
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-
com044
 

What's hot (20)

UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)UE4を使った映像制作 (UE4 Character Art Dive Online)
UE4を使った映像制作 (UE4 Character Art Dive Online)
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
UE4におけるレベル制作事例
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
絵心がなくてもわかる UE4絵作りのコツ
絵心がなくてもわかるUE4絵作りのコツ絵心がなくてもわかるUE4絵作りのコツ
絵心がなくてもわかる UE4絵作りのコツ
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
 
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
 
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
 
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られたNintendo Switch『OCTOPATH TRAVELER』はこうして作られた
Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた
 
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
 
猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4
 
第1回UE4名古屋勉強会
第1回UE4名古屋勉強会第1回UE4名古屋勉強会
第1回UE4名古屋勉強会
 
Unreal Engine 4を使って地球を衛る方法
Unreal Engine 4を使って地球を衛る方法Unreal Engine 4を使って地球を衛る方法
Unreal Engine 4を使って地球を衛る方法
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
 
UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-UE4 アセットロード周り-アセット参照調査-
UE4 アセットロード周り-アセット参照調査-
 

UE4 ビヘイビアツリー入門

Editor's Notes

  1. ちなみに根元はここにあります
  2. ノードが多すぎて訳が分からない
  3. ノードがたくさんぶら下がってると読みづらい
  4. これでもかなり複雑な来ますが、自分の中では整理されたほうだと思います