Behavior Tree アセットを作成する
このセクションでは、Unreal Engine 5 内にさまざまな Behavior Tree アセットを作成する方法について説明します。
ビヘイビアツリーを作成する
*ビヘイビアツリー は基本的に AI のプロセッサであり、その結果に基づいて決定を行い、さまざまなブランチを実行することができます。ビヘイビアツリー は、次の方法で コンテンツ ドロワー** 内に作成されます。
[+Add (新規追加)] ボタンをクリックし、[Create Advanced Asset (高度なアセットを作成)] で [Artificial Intelligence (AI)]、[Behavior Tree] の順に選択します。

新しい Behavior Tree (ビヘイビアツリー) アセットが コンテンツ ドロワー に追加されるので、名前を付けます。

右クリックのコンテキスト メニューを使用して、[+Add]>[Artificial Intelligence]>[Behavior Tree] を選択することもできます。
ブラックボードを作成する
Blackboard アセットは、AI の「頭脳」と考えることができ、Behavior Tree がその決定に必要な キー の値を格納します。Blackboard アセットは以下の方法で作成できます。
[+Add (新規追加)] ボタンをクリックし、[Create Advanced Asset (高度なアセットを作成)] で [Artificial Intelligence (AI)]、[Blackboard] の順に選択します。

新しい Blackboard アセットが コンテンツ ドロワー に追加されます。このブラウザを使用して、任意の名前に変更できます。

ビヘイビアツリー内にブラックボードを作成するもう 1 つの方法があります。
ビヘイビアツリー エディタ のツールバーから [New Blackboard (新規ブラックボード)] ボタンをクリックします。

これにより、コンテンツ ドロワー 内に新しい Blackboard アセットも作成されます。
ビヘイビアツリー タスクを作成する
タスク とは、ある場所に移動したり、何かに向かって回転するなど、AI に実行させたい「アクション」のことです。
最適化が問題になる場合は、Blueprint ビヘイビアツリー タスクをネイティブのビヘイビアツリー タスクに切り替えることをお勧めします。
既存の タスク に加えて、独自のロジックでカスタム タスク を作成することができます。
[Behavior Tree Editor (ビヘイビアツリー エディタ)] 内のツールバーから [New Task] ボタンをクリックします。

これにより、タスク ロジックの作成が可能な新しい BTTask_BlueprintBase クラスの新しいブループリントが開きます。

Task ブループリント は、コンテンツ ドロワー 内の Behavior Tree アセットと同じ場所に作成されます。
ビヘイビアツリー エディタ から新しい タスク を作成するときは常に、デフォルトの名前を使用するのではなく、コンテンツ ドロワー にアクセスしてアセットの名前を変更することをお勧めします。
新しい タスク を作成する際に、ドロップダウン メニューで既存の Behavior Tree タスク を選択すると、そのタスクを 親クラス として使用して、その機能を継承することができます。

Behavior Tree デコレーターを作成する
デコレーター (条件式とも呼ばれる) は Behavior Tree の内側のノードにアタッチし、ツリー内のブランチ (またはノード 1 つでも) を実行可能にするかどうかの決定に使用できます。Behavior Tree で使用できるデフォルトの デコレーター がいくつかありますが、カスタムのデコレーターも作成できます。
ビヘイビアツリー エディタ 内のツールバーから [New Decorator (新規デコーダー)] ボタンをクリックします。

これにより、新しい デコレーター ロジックの作成が可能な新しい BTDecorator_BlueprintBase クラスが開きます。

Decorator ブループリント は、コンテンツ ドロワー 内の Behavior Tree アセットと同じ場所に作成されます。
ビヘイビアツリー エディタ から新しい デコレーター を作成するときは常に、デフォルトの名前を使用するのではなく、コンテンツ ドロワー にアクセスしてアセットの名前を変更することをお勧めします。
新しい デコレーター を作成するときは、既存の Behavior Tree デコレーター を 親クラス として使用し、ドロップダウンメニューから機能を継承することができます。

Behavior Tree サービスを作成する
サービス は Composite ノードにアタッチされ、ブランチが実行されている限り、定義された頻度で実行されます。これらは ブラックボード のチェックや更新によく使われ、他の Behavior Tree システムの従来の Parallel ノードに取って代わるものです。デフォルトで利用可能な サービス はいくつかありますが、Behavior Tree の実行方法の決定を支援する独自のカスタム サービスを作成することができます。
最適化が問題になる場合は、Blueprint Behavior Tree サービスをネイティブの Behavior Tree サービスに切り替えることをお勧めします。
ビヘイビアツリー エディタ のツールバーから [New Service (新規サービス)] ボタンをクリックします。

これにより、新しい サービス ロジックの作成が可能な新しい BTService_BlueprintBase クラスが開きます。

Service ブループリント は、コンテンツ ドロワー 内の Behavior Tree アセットと同じ場所に作成されます。
ビヘイビアツリー エディタ から新しい サービス を作成するときは常に、デフォルトの名前を使用するのではなく、コンテンツ ドロワー にアクセスしてアセットの名前を変更することをお勧めします。
新しい サービス を作成する際に、ドロップダウン メニューで既存の Behavior Tree サービス を選択すると、そのサービスを 親クラス として使用して、その機能を継承することができます。

ブラックボードを編集する
通常、Behavior Tree が意思決定プロセスにおいて ブラックボード を参照するために、Behavior Tree の前に ブラックボード を作成します (必要に応じていつでも キー を追加できます)。コンテンツ ドロワー でアセットをダブルクリックして ブラックボード エディタ を開くと、Blackboard アセットを編集できます。

ブラックボード が割り当てられた Behavior Tree を編集しているときは、ウィンドウの右上にあるタブをクリックして ブラックボード に切り替えることができます。

[Blackboard Details] パネルでは、親 としてもう 1 つの ブラックボード を割り当てると、そこから キー を継承することができます。

ブラックボード ウィンドウにある [New Key] ボタンをクリックすると、キー を追加できます。

キー として格納できる変数型の詳細については、「ブループリント変数」を参照してください。
キー が作成されたら、[Blackboard Details] パネルで キー に関連するプロパティを定義できます。

プロパティ | 説明 |
---|---|
Entry Name | キーのユーザー定義名です。 |
Entry Description | ブラックボード キーの機能を説明するオプションの説明です。 |
Key Type | キーの作成時に定義されていますが、Object キーと Class キーには、特定の クラス を定義できるより多くの追加オプションが用意されています。これにより、Object (アクタのようなもの) から継承された任意のタイプのデータを格納できます。 |
Instance Synced | これは、ブラックボードのすべてのインスタンスでキーの同期の決定に使用されます。 |
Rename または Delete を行うには、キー を右クリックしてコンテキスト メニューを表示するか、キー 上で F2 キーまたは Delete キーを押します。

Class キーと Object キーの場合、[Key Type] の横にある小さな三角形をクリックすると、使用する Base Actor クラスを定義できます。

Enum キーの場合は、[Key Type] の横にある小さな三角形をクリックして設定できる追加のプロパティがあります。

プロパティ | 説明 |
---|---|
Enum Type | 割り当てられた列挙型を使用します。 |
Enum Name | C++ コードで定義された列挙型の名前は、Enum Type で割り当てられたアセットよりも優先されます。 |
Is Enum Name Valid | Enum Name のオーバーライドが有効でアクティブなときに設定します。 |
ビヘイビアツリーを編集する
ビヘイビアツリー を編集するには、Behavior Tree アセットを開く必要があります。
コンテンツ ドロワー で Behavior Tree アセットをダブルクリックして、[Behavior Tree Mode] に入ります。

または Behavior Tree モード に切り替えることでも可能です。
[Behavior Tree Editor] の右上隅にある [Behavior Tree] タブをクリックします。

[Behavior Tree Mode] に切り替えるには、現在開いている Behavior Tree アセットを持っており、[Blackboard Mode] から切り替えている必要があります。
ブラックボードを割り当てる
Behavior Tree が ブラックボード にアクセスするためには、Blackboard アセットを割り当てる必要があります。
グラフ内の Root ノードを選択 (またはすべてのノードの選択を解除) してから、[Details (詳細)] パネルで必要な Blackboard アセット を設定します。

ブラックボード を割り当てた後、[Blackboard] パネルは関連付けられた Blackboard Key で更新されます。

ノードを操作する
Behavior Tree のグラフに コンポジット、または タスク を追加するには、グラフを右クリックしてコンテキスト メニューを表示し、目的のノードを選択します。

Behavior Tree の Root ノードに接続できるのは、Composite ノードだけです。
ノードをドラッグして追加したいノードをコンテキスト メニューから選択することもできます。

グラフからノードを削除するには、1 つのノード (もしくは複数のノード) を選択して Delete キーを押します (または右クリックして Delete キーを押します)。

ノードを接続するには、左クリックして出力ピンから別のノードの入力ピンにドラッグします。

Behavior Tree でノードを接続するには、出力を入力に接続する必要があります (入力から出力に接続することはできません)。
ノードの接続を解除するには、ノードを右クリックして (または選択したノードを定義して) 希望の [Break All Pin Link(s) (すべてのリンクを解除)] メソッドを選択します。
[Break All Pin Link(s)] を使用すると、ピン留めされている 1 つまたは複数のノードを切断できます。[Break link to...(...へのリンクを解除)] をクリックすると、指定したノードへの接続が切断されます。
入力ピンまたは出力ピンを Alt +左クリックして接続を解除することもできます。
ノードを編集するには、ノードを選択してから、[Details] パネルでそのプロパティを調整できます。

選択したノードとその設定をコピーして貼り付けることもできます。これを行うには、ノードを選択して (または選択ボックスを選択したノードの周囲にドラッグして) ctrl + c (コピー) および ctrl + v (ペースト) を押します。

ノード デコレーターとサービス
ノードのコンテキスト メニューから Behavior Tree グラフのノードに デコレーター、または サービス を追加できます。
これを行うには、Composite ノードまたは Task ノードを右クリックして、ノードに追加する デコレーター または サービス を選択します。

ノードから デコレーター、または サービス を削除するには、デコレーター、または サービス を選択してから Delete キーを押すか、右クリックのコンテキスト メニューを使用します。

ノードに接続されている デコレーター、または サービス を編集するには、まず デコレーター、または サービス を選択してから、[Details] パネルで目的のプロパティを調整できます。

ノードに追加された Composite デコレーター は、編集用に開くことができます。
Composite デコレーターを開くには、Composite デコレーターをダブルクリックして、ブール値 (true またはfalse) を返すグラフを開きます。
クリックして拡大
ツールバーから作成された タスク、デコレーター、または サービス は、編集用に ブループリント で開くことができます。
カスタムの タスク、デコレーター、または サービス を作成してグラフに追加したら、それをダブルクリックして編集用に開きます。

また、コンテンツ ドロワー で任意のカスタム タスク、デコレーター、または サービス を開くこともできます。
コンテンツ ドロワー でカスタム タスク、デコレーター、または サービス をダブルクリックして、編集用に ブループリント で開きます。

また、デコレーター や サービス をコピーして他のノードに貼り付けることもできます。
デコレーターまたはサービスを選択して、ctrl + c (コピーする) と ctrl + v (ペーストする) を押して別のノードに移動します。
