UE4勉強会 in 大阪
UE4でAIとビヘイビアツリーと-基
礎-
Slideshare用壁紙
Slideshare用壁紙
自己紹介
● Twitter: @com04
● ゲームプログラマー
● 作ったものとかは大体twitterモーメントに
○ https://twitter.com/i/moments/847072031048814594
○ https://twitter.com/i/moments/986364547098275840
自己紹介
● マーケットプレイスに出品しました
− ComMaterialTools - マテリアル検索の便利ツール
● https://www.unrealengine.com/marketplace/commaterialtools
● 講演したスライド
− マテリアル基礎・初級: https://www.slideshare.net/com044/ue4-80326829
− UE4でのチーム製作: https://www.slideshare.net/com044/4ue4-in-ue4
− アニメーション基礎: https://www.slideshare.net/com044/ue4-in-91056422
− もっとアニメーションBP: https://www.slideshare.net/com044/ue4-in-bp
− UE4 LODs for Optimization -Beginner-:
https://www.slideshare.net/com044/lods-for-optimization-beginner
− Volumetric Fogで空間を演出する!:
https://www.slideshare.net/com044/ue4-volumetric-fog
− UE4でTranslucencyやUnlitに影を落としたい!:
https://www.slideshare.net/com044/ue4translucencyunlit 5
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか version: UE4.21.1
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
はじめに
今回は主にビヘイビアツリーの基礎と、AIの作り始めの周
りをやっていきます。
はじめに
文字だとややこしいところもあるので、今回のスライド用に
テストしたプロジェクトを共有します。
● https://github.com/com04/UE4Osaka10_AI
○ プロジェクト内の説明についてはリンク先のページに書いてあ
ります。
はじめに
1. 「Clone or download」から、「Download ZIP」
2. ダウンロードした.zipを解凍する
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
UE4にあるAI系の機能
ビヘイビアツリー
http://api.unrealengine.com/JPN/Engine/AI/BehaviorTrees/index.html
● AIの処理を記述する機能
○ BPとはまた違ったノードベース
● 今日やります!
UE4にあるAI系の機能
Environment Query System(環境クエリ システム)
http://api.unrealengine.com/JPN/Engine/AI/EnvironmentQuerySystem/index.html
● 周囲の環境を調べる機能
○ 半径100m以内で敵の攻撃から隠れれる座標はどこ?とか
○ 敵に攻撃しつつ味方から離れない位置取りはどこ?とか
■ これらの結果をビヘイビアツリーで使用できる
● 初心者がEQSやってみた @goolee
○ https://www.slideshare.net/goolee1/eqs-107895547
■ 第7回UE4勉強会 in 大阪
UE4にあるAI系の機能
敵から壁で遮蔽される所を判別したり
敵
壁で敵の攻撃が当
たらない場所
UE4にあるAI系の機能
AI Perception
http://api.unrealengine.com/JPN/Engine/Components/AI/
● 視覚と聴覚を表現
○ 視野に入った、視野から出た。を検出できる
○ 敵が発した音を感知した。を検出できる
■ AI Perception用の音を発するノードとか有る
● 【UE4】AI Perception の紹介と使い方 @PavilionDV7
○ https://qiita.com/Dv7Pavilion/items/741402f4da609ec595a2
○ https://qiita.com/Dv7Pavilion/items/2984f2b03711492aa451
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
Behavior Trees (ビヘイビアツリー) は、闇に潜む憎きゴキ
ブリから、シューティング ゲームの Bot に至るまで、撃つタ
イミングやヘルス値と弾薬を求めるタイミングが分かる AI
をアンリアル エンジン 4 で作るパワフルなツールです。
公式ドキュメントより
http://api.unrealengine.com/JPN/Engine/AI/BehaviorTrees/index.html
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
BPとは違ったシステム
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
こんな感じのノード構成
● 右クリックでノード出して繋
げていくのはBPと同じ
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
処理の流れをそのまま記述できる
相手の近くに移動するまでこ
こで処理する
移動終わったら次の処理に
移って攻撃処理する
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
実行中、もしくは一時停止中にビヘイビアツリーを開くと、
今走ってる処理フローが確認出来ます
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーとは?
ノードを右クリックでブレークポイントも使用できます
ビヘイビアツリー
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
ビヘイビアツリー基礎 - アセットの種類/BPの機能
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ビヘイビアツリー
AIの思考/行動を記述する
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ビヘイビアツリー
コンテンツブラウザから右クリック→「AI」→「ビヘイビアツ
リー」で作成
ビヘイビアツリー基礎 - アセットの種類/BPの機能
ブラックボード
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
変数を格納するアセット。ビヘイビアツリーに登録して使用
する
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
コンテンツブラウザから右クリック→「AI」→「ブラックボー
ド」で作成
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
左上のボタンから変数を追加します
ブラックボード
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
ブラックボード特有の機能として、変数の値を他のActorと
共有する事が出来ます
● 1つのActorがブラックボードに値を保存すると、別の
Actorのブラックボードでも値が書き換わっている
別々のActorで同じ値を共有できる
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 ブラックボード
ブラックボードの変数で、「Instance Synced」にチェックを
入れると変数が共有されます
ブラックボード
ビヘイビアツリー基礎 - アセットの種類/BPの機能
タスク
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
ビヘイビアツリーで使用する処理1つ
● ビヘイビアツリーで右クリックから出せます。
○ 紫のノードで表されます
○ 移動する、アニメーション再生する
SEを再生する。など
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
自分でも作成する事が出来ます。
● コンテンツブラウザを右クリック
○ 「ブループリントクラス」作成→
○ 「BTTask_BlueprintBase」を選択して作成します。
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
BPを開いて、関数をオーバーライドして処理を書きます
● Receive Tick AI
○ タスクが処理をしている間のTick処理
● Receive Execute AI
○ タスクに入った際に1度だけ呼ばれる
● Receive Abort AI
○ 処理中に中断された時に呼ばれる
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
タスクは「Finish Execute」ノードで終了します
● ノードを呼ぶまではビヘイビアツリーは次のタスクへ遷
移しません
● 引数の「Success」はビヘイビアツリーに返す結果です
(後ほど)
○ 「Receive Execute AI」で攻撃処理を開始して、攻撃処理/
アニメーションが終わった時点で
「Finish Execute」ノードを呼ぶなど
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク
何もしない最小構成のノード
ビヘイビアツリー基礎 - アセットの種類/BPの機能
デコレーター
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 デコレーター
ビヘイビアツリーのノードにくっつけるフロー制御
● ノードを右クリック→
「デコレーター」を追加から
○ 青いノードで表されます
○ このノードに入るかどうか、ループ
処理、指定時間で処理中断させる等
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 デコレーター
自分でも作成する事が出来ます。
● コンテンツブラウザを右クリック
○ 「ブループリントクラス」作成→
○ 「BTDecorator_BlueprintBase」を選択して作成します。
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 デコレーター
BPを開いて、関数をオーバーライドして処理を書きます
● Perform Condition Check AI
○ くっついているビヘイビアツリーの
ノードの中に入るかを返す
● Receive Execution Start AI
○ ノード開始時に呼ばれる
● Receive Execution Finsih AI
○ ノード終了時に呼ばれる
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 デコレーター
「Perform Condition Check AI」
● Trueを返すと中入る
● Falseを返すと中を処理しない+そのノード自体もFalse
を返す
True
False
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
サービス
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 サービス
ビヘイビアツリーのノードにくっつける処理
● ノードを右クリック→
「サービス」を追加から
○ 緑のノードで表されます
○ このノード以下の処理をしている時は常に動作しています
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 サービス
自分でも作成する事が出来ます。
● コンテンツブラウザを右クリック
○ 「ブループリントクラス」作成→
○ 「BTService_BlueprintBase」を選択して作成します。
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 サービス
BPを開いて、関数をオーバーライドして処理を書きます
● Receive Tick AI
○ このサービスが動作している時に呼ばれるTick
● Receive Activation AI
○ このサービスを開始したタイミングで
呼ばれる
● Receive Deactivation AI
○ このサービスが終了するタイミングで
呼ばれる
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 サービス
ビヘイビアツリーでサービスを選択、詳細欄でパラメーター
を設定できます
● Interval
○ 「Receive Tick AI」が呼ばれる間隔
● Random Deviation
○ Intervalにランダムで加算する値。ランダムでタイミング変えた
い時に
ビヘイビアツリー
ビヘイビアツリー基礎 - アセットの種類/BPの機能
タスク、デコレーター、サービスのBP共通
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク、デコレーター、サービスのBP共通
イベントノードの引数
● Owner Controller
○ ビヘイビアツリーを実行しているAI Controller。ブラックボード
はここから取得する
● Controlled Pawn
○ AI ControllerがくっついてるPawn。
○ 大体は動かしているキャラクター自体のActor。
ブループリント
ビヘイビアツリー基礎 - アセットの種類/BPの機能
 タスク、デコレーター、サービスのBP共通
各BPのパラメーターをビヘイビアツリーに出す方法
● 変数の詳細「インスタンス編集可能」にチェックを入れる
と、ビヘイビアツリーでパラメーターを設定できます
ブループリント ビヘイビアツリー
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
ビヘイビアツリーは上から順、左から順に処理されていき
ます
0
1
2 3
4
5
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
ノードはCompositesノードで処理を分岐して、末端のタスク
で処理を行います
ビヘイビアツリー
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
Selector
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Selector
Selector
● 繋がってるタスクがSuccessを返すと終了する
○ タスク内の「Finish Execute」ノードの引数
Successを返すとこ
のノードで終わり。
Successでなけれ
ば次のノードに
赤のタスクが
Successだとここは
来ない。
Successでなけれ
ば処理される
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Selector
例1)
Success! 実行されない!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Selector
例2)
Successしなかった! 実行される!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
Sequence
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Sequence
Sequence
● 繋がってるタスクがSuccessを返すと次に行く
○ タスク内の「Finish Execute」ノードの引数
Successを返すと次
のノードに。
Successでなけれ
ば終了
赤のタスクが
Successだと処理さ
れる。
Successでなけれ
ば処理されない
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Sequence
例1)
Success! 実行される!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 Sequence
例2)
実行されない!Successしなかった!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
組み合わせ事例
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例1)
Sequenceなので、赤枠の
ノードが全部Successだっ
た場合。Sequenceも
Successを返す
Success Success
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例1) 赤枠のSequenceが
Successを返したので、青
枠のSelectorは次を処理
せずに終わる。
Success!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例2)
Sequenceなので、赤枠の
ノードが一つでもSuccess
を返さなかった場合。
Sequenceも失敗を返す
Successじゃない!Success
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例2)
Successじゃない!
赤枠のSequenceが失敗を
返したので、青枠の
Selectorは次を処理して緑
枠に入る
実行する!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例3)
Selectorなので、赤枠のノー
ドが一つでもSuccessだった
場合。SelectorもSuccessを
返す
SuccessSuccessじゃない!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例3)
赤枠のSelectorが
Successを返したので、青
枠のSequenceは次を処理
する。
実行する!
Success!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例4)
Selectorなので、赤枠のノー
ドが全部Success返さな
かった場合。Selectorも失敗
を返す
Successじゃない! Successじゃない!
ビヘイビアツリー基礎 - ビヘイビアツリーの処理流れ
 組み合わせ事例
例4)
赤枠のSelectorが失敗を
返したので、青枠の
Sequenceは次を処理しな
い。
Successじゃない!
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
作っていきます
今回は動きを確認しやすい「トップダウン」プロジェクトで始
めます
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
作っていきます - 基本セット
アセットの基本セットを作っていきます
作っていきます - 基本セット
1.コンテンツブラウザを右クリックから「ブラックボード」を作
成
右クリック
作っていきます - 基本セット
「BB_Enemy」の名前で作りました。
変数を入れるアセットになります。
作っていきます - 基本セット
2.コンテンツブラウザを右クリックから「ビヘイビアツリー」を
作成
右クリック
作っていきます - 基本セット
「BT_Step01」の名前で作りました。
AIのロジックを記述するアセットになります。
作っていきます - 基本セット
ビヘイビアツリーを開いて、詳細欄に先程作成したブラック
ボードを設定します。
これで、このビヘイビアツリーでは「BB_Enemy」が使用さ
れます
ビヘイビアツリー
作っていきます - 基本セット
コンテンツブラウザを右クリックから「ブループリントクラス」
を作成
右クリック
作っていきます - 基本セット
「TopDownCharacter」を選択
※TopDownテンプレート以外の環境の場合は、Character
クラス等キャラクターを表示、動かすクラスを指定してくださ
い
作っていきます - 基本セット
「BP_Enemy」の名前で作りました。
キャラクター自体のBPアセットになります。
作っていきます - 基本セット
ブループリントを開いて、「Run Hehavior Tree」ノードで先
程のビヘイビアツリーを走らせます
ブループリント
作っていきます - 基本セット
BPをドラッグ&ドロップで投げ入れます
作っていきます - 基本セット
これで初期設定は終わりです。
後はAIのロジックを組んでいけば動きます
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
作っていきます - AIを作る
実装テストする際は一つずつやっていきます
作っていきます - AIを作る
Case 1
プレイヤーに近づいて攻撃する
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
Step 1
目標点に移動する
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
目標点の座標を入れる変数をブラックボードに用意しま
す。
新規キーを選択して、追加したい型を指定
します。
ブラックボード
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
目標点、座標を指定しますのでVector型で用意します
ブラックボード
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
ビヘイビアツリーのサービスを作ります。
「ブループリントクラス」作成→
「BTService_BlueprintBase」を選択して作成します。
「BTS_TargetLocation」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
作成したBPを開いて、関数欄から「オーバーライド」→
「Receive Tick AI」でイベントを追加します。
後はブラックボードの先程追加した変数に、移動させたい
座標を設定します
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
ビヘイビアツリーで右のように繋ぎます。
「ルート」から直接タスクに繋げないので、
「Selector」を経由して「Move To」タスクに繋ぎ
ます
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
「Move To」タスクの詳細欄に、先程ブラックボードで作成し
た目標点の座標変数を設定します
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
Move Toタスク
● 指定したVector座標、Objectの位置へ移動する
http://api.unrealengine.com/JPN/Engine/AI/BehaviorTrees/NodeReference/Task
s/index.html#moveto
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
「Selector」を右クリックして「サービスを追加」→先程作成
したBP「BTS_TargetLocation」を選択します
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
これでこの「Selector」以下の処理をしている際は
「BTS_TargetLocation」サービスが動作するようになりま
す。
=先程のBPで組んだ移動させたい座標設定
が行われます
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
プレイすると動き出すようになります。
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
Step 2
プレイヤーに向かっていく
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
作成したサービス「BTS_TargetLocation」を開いて編集し
ます。
座標をPlayerCharacterの座標で指定します
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
ビヘイビアツリーのサービスで動作しているので、
「Selector」以下の処理をしている際は、
常にプレイヤーの座標から取得しています
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
これだけでプレイヤーに向かっていくようになります。
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
※動きがカクカクする際はビヘイビアツリーの「Move To」タス
クの詳細欄「Observed Blackboard Value Tolerance」に
チェックを入れて有効にしてみてください
● 【UE4】AIMoveToノードのゴールに指定する型による動作の違いに
ついて - @Dv7Pavilion
○ https://qiita.com/Dv7Pavilion/items/1ab2f715e9d19e5d9d05#observed-bla
ckboard-value-tolerance
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
Step 3
プレイヤーに近づいて攻撃する
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
攻撃するビヘイビアツリーのタスクを作成します。
「ブループリントクラス」作成→「BTTask_BlueprintBase」
を選択して作成します。
「BTT_Attack」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
作成したBPを開いて、関数欄から「オーバーライド」→
「Receive Execute AI」でイベントを追加します。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
攻撃処理を追加します。
今回は本題では無いのでデバッグ表示で代用します。
攻撃処理が終わった後は「Finish Execute」ノードでタスク
を終わらせます。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
プレイヤーとの距離を判断するビヘイビアツリーのデコレー
ターを作成します。
「ブループリントクラス」作成→
「BTDecorator_BlueprintBase」を選択して作成します。
「BTD_LengthCheck」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
作成したBPを開いて、関数欄から「オーバーライド」→
「Perform Condition Check AI」でイベントを追加します。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
距離チェック処理を追加します。
これ以下の距離は攻撃を行います。
自身のActorとプレイヤーのXY平面での距離を測ります。
ブループリント
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
ビヘイビアツリーを右のよう
にします。
● 近いと攻撃(赤枠)
● でなければ近づく(緑
枠)
ビヘイビアツリー
作っていきます - AIを作る
 Case 1 プレイヤーに近づいて攻撃する
これで近づくまで追ってきて、一定距離以下になると攻撃
するビヘイビアツリーになりました
作っていきます - AIを作る
Case 2
プレイヤーから離れて射撃攻撃する
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
Step 4
プレイヤーから離れて攻撃する
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
プレイヤーとの距離を判断するビヘイビアツリーのデコレー
ターを作成します。
「ブループリントクラス」作成→
「BTDecorator_BlueprintBase」を選択して作成します。
「BTD_LengthCheck」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
距離チェック処理を追加します。
これ以下の距離なら、プレイヤーから離れます。
自身のActorとプレイヤーのXY平面での距離を測ります。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
逃げる位置用ビヘイビアツリーのサービスを作ります。
「ブループリントクラス」作成→「BTService_BlueprintBase」
を選択して作成します。
「BTS_TargetLeaveLocation」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
とりあえず背景のコリジョンに関係なく、プレイヤーから逆
方向を目標点にしています
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
射撃攻撃するビヘイビアツリーのタスクを作成します。
「ブループリントクラス」作成→「BTTask_BlueprintBase」を
選択して作成します。
「BTT_AttackShot」の名前で作りました。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
攻撃処理を追加します。
今回は本題では無いのでデバッグ表示で代用します。
攻撃処理が終わった後は「Finish Execute」ノードでタスク
を終わらせます。
ブループリント
作っていきます - AIを作る
 Case 2 プレイヤーから離れて射撃攻撃する
ビヘイビアツリーを右のよう
にします。
● 近いと離れる
(赤枠)
● でなければ攻撃
(緑枠)
ビヘイビアツリー
作っていきます - AIを作る
Case 3
両方のパターンを配置する
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
Step 5
それぞれ出現させる
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
始めに作った「BP_Enemy」の「Run Behavior Tree」の
「BT Asset」を変数にします
ブループリント
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
作った変数の「インスタンス編集」をONにします
ブループリント
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
これで3D View上でビヘイビアツリーを直接指定できます
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
「BP_Enemy」を2体配置してそれぞれ、別々のビヘイビアツ
リーを設定すると挙動の違う2体が動きます。
作っていきます - AIを作る
 Case 3 両方のパターンを配置する
近接してくる敵と離れて射撃を行
う敵が動き出します
作っていきます - AIを作る
ここから
作っていきます - AIを作る
 ここから
● 近いと近接攻撃
● 届かなければ離れて
遠距離攻撃
ビヘイビアツリー
作っていきます - AIを作る
 ここから
他には
● プレイヤーを察知しているか
○ していなければ待機でその辺ふらつくとか
● プレイヤーに猶予を与える為に待機する
○ ひたすら攻撃しているとプレイヤーが何も出来ない
● プレイヤーの攻撃を避ける
○ 距離を取る、ガードする
などなど……
もくじ
● はじめに
● UE4にあるAI系の機能
● ビヘイビアツリー基礎
○ ビヘイビアツリーとは?
○ アセットの種類/BPの機能
○ ビヘイビアツリーの処理流れ
● 作っていきます
○ 基本セット
○ AIを作る
● ほか
ほか
注意点
ほか - 注意点
● 「MoveTo」タスク等で動かす場合は、BP側では
MovementComponent系が無いと動かない場合があり
ます
○ 今回はBPを作る時に
「TopDownCharacter」で作りました。
○ 他に作る時は「Character」から
作ってみると大丈夫です
■ 自作で上手く動かない時は試しに
Characterで作ってみるとか
ほか - 注意点
● 「MoveTo」タスク等で動かす場合は、歩ける地面にナ
ビゲーションメッシュが配置されている必要があります
○ 「Nav Mesh Bounds Volume」を配置して地面を囲う
○ 参考
■ 2.Nav Mesh Bounds ボリュームの作成
● https://api.unrealengine.com/JPN/Engine/AI/BehaviorTrees/QuickStar
t/2/index.html
○ ビヘイビアツリーが正常に走ってるのに動かない時は大抵コ
レ
ほか - 注意点
Viewの「表示」から「ナビゲーション」で可視化。
緑のエリアがAIが歩ける
ほか
参考
ほか - 参考
参考
● [UE4] ビヘイビアツリー(BehaviorTree)の使い方 入門編
@historia
○ http://historia.co.jp/%3Fp%3D1102
● [UE4] BehaviorTree: Task、Service、Decoratorのイベント
@historia
○ http://historia.co.jp/archives/10221/
● はじめてのAI~ 愛のあるAIを作ろう @中村 匡彦
○ https://www.slideshare.net/masahikonakamura50/ai-ai-62023284
ほか - 参考
もう一歩先に
● スクウェア・エニックスにおける UNREAL ENGINE 4 を用いた人
工知能技術の開発事例
○ https://www.youtube.com/watch?v=BV2GTGbSjq8
● 【UE4】味方AIの作り方!AIとは何かを学びながら、ブループリン
トで味方キャラクターを実装しよう @ろっさむ
○ https://qiita.com/4_mio_11/items/9e8af2ce82ee2a7625b5
●
以上!

More Related Content

PDF
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
PPTX
[CEDEC2018] UE4アニメーションシステム総おさらい
PPTX
UE4のためのより良いゲーム設計を理解しよう!
PDF
猫でも分かる UE4の新しいサンプル「Action RPG」について
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
PDF
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
PDF
猫でも分かるUE4.22から入ったSubsystem
PDF
UE4で作成するUIと最適化手法
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
[CEDEC2018] UE4アニメーションシステム総おさらい
UE4のためのより良いゲーム設計を理解しよう!
猫でも分かる UE4の新しいサンプル「Action RPG」について
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
猫でも分かるUE4.22から入ったSubsystem
UE4で作成するUIと最適化手法

What's hot (20)

PDF
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
PDF
60fpsアクションを実現する秘訣を伝授 解析編
PDF
わからないまま使っている?UE4 の AI の基本的なこと
PPTX
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
PDF
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
PDF
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
PPTX
UE4アセットリダクション手法紹介
PPTX
猫でも分かる UE4のAnimation Blueprintの運用について
PDF
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
PDF
60fpsアクションを実現する秘訣を伝授 基礎編
PDF
UE4における大規模背景制作事例(コリジョン編)
PDF
Unreal Engine 4を使って地球を衛る方法
PPTX
UnrealBuildTool勉強会まとめ
PDF
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
PPTX
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
PDF
PDF
新しいエフェクトツール、Niagaraを楽しもう! ~Niagara作例のブレイクダウン~
PDF
UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方
PDF
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
PPTX
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
UE4 Hair & Groomでのリアルタイムファーレンダリング (UE4 Character Art Dive Online)
60fpsアクションを実現する秘訣を伝授 解析編
わからないまま使っている?UE4 の AI の基本的なこと
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
UE4アセットリダクション手法紹介
猫でも分かる UE4のAnimation Blueprintの運用について
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
60fpsアクションを実現する秘訣を伝授 基礎編
UE4における大規模背景制作事例(コリジョン編)
Unreal Engine 4を使って地球を衛る方法
UnrealBuildTool勉強会まとめ
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
新しいエフェクトツール、Niagaraを楽しもう! ~Niagara作例のブレイクダウン~
UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
Ad

Similar to UE4でAIとビヘイビアツリーと-基礎- (20)

PDF
[UE4]自動テストでもっと楽したい!
PDF
UE4ぷちコンの勧め
PDF
正しいものを正しくつくるへ至る道
PDF
Room metro Tokyo #3 発表資料です。
PDF
UE4 Volumetric Fogで 空間を演出する!
PPTX
勉強会 Cvml python基礎
PDF
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
PDF
プロダクト開発を繋げる
PDF
EC-CUBEユーザカンファレンス2016
PDF
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
PPTX
concrete5 テーマ作成ハンズオン (Ver5.6 まで)
PPTX
Terraform with Bitbucket pipeline
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
PPTX
Build 2022 / Uno Platform
PDF
CSRを自動生成する!
PPTX
IGDA日本 GDC2015報告会 「ゲームから社会へ、社会からゲームへ」
PDF
UE4勉強会 in 大阪 - アニメーション基礎
PDF
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
PDF
WatchKitを実際にさわってみてわかったこと
PPTX
T119_5年間の試行錯誤で進化したMVPVMパターン
[UE4]自動テストでもっと楽したい!
UE4ぷちコンの勧め
正しいものを正しくつくるへ至る道
Room metro Tokyo #3 発表資料です。
UE4 Volumetric Fogで 空間を演出する!
勉強会 Cvml python基礎
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
プロダクト開発を繋げる
EC-CUBEユーザカンファレンス2016
ここが変わる!Unity 5のスマホ開発  ~アセットバンドル、ビルド、プラグイン~
concrete5 テーマ作成ハンズオン (Ver5.6 まで)
Terraform with Bitbucket pipeline
iPhoneアプリ開発の歩き方〜Swift編〜
Build 2022 / Uno Platform
CSRを自動生成する!
IGDA日本 GDC2015報告会 「ゲームから社会へ、社会からゲームへ」
UE4勉強会 in 大阪 - アニメーション基礎
Spring Data RESTを利用したAPIの設計と、作り直しまでの道のり
WatchKitを実際にさわってみてわかったこと
T119_5年間の試行錯誤で進化したMVPVMパターン
Ad

More from com044 (20)

PDF
2019年03月 UE4界隈ニュース
PDF
AI基礎
PDF
2019年01月 UE4界隈ニュース
PDF
UE4でTranslucencyやUnlitに影を落としたい!
PDF
2018年11月 UE4界隈ニュース
PDF
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
PDF
UE4 アセットロード周り-アセット参照調査-
PDF
UE4 LODs for Optimization -Beginner-
PDF
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
PDF
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
PDF
UE4勉強会 in 大阪 - もっとアニメーションBP
PDF
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
PDF
第4回UE4勉強会 in 大阪 UE4でのチーム製作
PDF
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
PDF
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
PDF
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
PDF
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
PDF
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
PDF
第1回UE4勉強会 in 大阪 - UE4界隈ニュース
PDF
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
2019年03月 UE4界隈ニュース
AI基礎
2019年01月 UE4界隈ニュース
UE4でTranslucencyやUnlitに影を落としたい!
2018年11月 UE4界隈ニュース
第8回UE4勉強会 in 大阪 201809 UE4界隈ニュース
UE4 アセットロード周り-アセット参照調査-
UE4 LODs for Optimization -Beginner-
第7回UE4勉強会 in 大阪 201807 UE4界隈ニュース
第6回UE4勉強会 in 大阪 201805 UE4界隈ニュース
UE4勉強会 in 大阪 - もっとアニメーションBP
第5回UE4勉強会 in 大阪 201803 UE4界隈ニュース
第4回UE4勉強会 in 大阪 UE4でのチーム製作
第4回UE4勉強会 in 大阪 201801 UE4界隈ニュース
第3回ue4勉強会 in 大阪 201711 ue4界隈ニュース
第2回UE4勉強会 in 大阪 - マテリアル基礎・初級
第2回UE4勉強会 in 大阪 - 201709 ue4界隈ニュース
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - UE4界隈ニュース
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた

UE4でAIとビヘイビアツリーと-基礎-