Behavior Tree のユーザー ガイド

Behavior Tree と Behavior Tree に関連するアセットの作成、および編集方法について説明します。

Choose your operating system:

Windows

macOS

Linux

Behavior Tree アセットを作成する

このセクションでは、Unreal Engine 5 内にさまざまな Behavior Tree アセットを作成する方法について説明します。 

Behavior Tree を作成する

Behavior Tree は基本的に AI のプロセッサであり、その結果に基づいて決定を行い、さまざまなブランチを実行することができます。Behavior Tree は、次の方法で コンテンツ ドロワー 内に作成されます。 

[+Add (新規追加)] ボタンをクリックし、[Create Advanced Asset (高度なアセットを作成)][Artificial Intelligence (AI)][Behavior Tree] の順に選択します。

Click the Add button then under Create Advanced Asset select Artificial Intelligence and Behavior Tree

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

The new Behavior Tree asset will be added to the Content Drawer where you can define its name

右クリックのコンテキスト メニューを使用して、[+Add]>[Artificial Intelligence]>[Behavior Tree] を選択することもできます。

ブラックボードを作成する

Blackboard アセットは、AI の「頭脳」と考えることができ、Behavior Tree がその決定に必要な キー の値を格納します。Blackboard アセットは以下の方法で作成できます。

[+Add (新規追加)] ボタンをクリックし、[Create Advanced Asset (高度なアセットを作成)][Artificial Intelligence (AI)][Blackboard] の順に選択します。

Click the Add button, then under Create Advanced Asset select Artificial Intelligence and Blackboard

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

The new Blackboard asset will be added to the Content Drawer which you can rename to your desired name

Behavior Tree 内にブラックボードを作成するもう 1 つの方法があります。 

Behavior Tree エディタ のツールバーから [New Blackboard (新規ブラックボード)] ボタンをクリックします。 

Inside the Behavior Tree Editor from the Toolbar by clicking the New Blackboard button

これにより、コンテンツ ドロワー 内に新しい Blackboard アセットも作成されます。 

Behavior Tree タスクを作成する

タスク とは、ある場所に移動したり、何かに向かって回転するなど、AI に実行させたい「アクション」のことです。 

最適化が問題になる場合は、Blueprint Behavior Tree タスクをネイティブの Behavior Tree タスクに切り替えることをお勧めします。

既存の タスク に加えて、独自のロジックでカスタム タスク を作成することができます。 

[Behavior Tree Editor] 内のツールバーから [New Task] ボタンをクリックします。 

Click the New Task button from the Toolbar inside the Behavior Tree Editor

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

This will open a new Blueprint of the BTTask_BlueprintBase class where you can provide your Task logic

Task ブループリント は、コンテンツ ドロワー 内の Behavior Tree アセットと同じ場所に作成されます。 

Behavior Tree エディタ から新しい タスク を作成するときは常に、デフォルトの名前を使用するのではなく、コンテンツ ドロワー にアクセスしてアセットの名前を変更することをお勧めします。

新しい タスク を作成する際に、ドロップダウン メニューで既存の Behavior Tree タスク を選択すると、そのタスクを 親クラス として使用して、その機能を継承することができます。 

You can use an existing Behavior Tree Task as the Parent Class to inherit functionality  by selecting it from the drop-down menu

Behavior Tree デコレーターを作成する

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

Behavior Tree エディタ 内のツールバーから [New Decorator (新規デコーダー)] ボタンをクリックします。 

Click the New Decorator button from the Toolbar inside the Behavior Tree Editor

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

This will open a new BTDecorator_BlueprintBase class where you can provide your Decorator logic

Decorator ブループリント は、コンテンツ ドロワー 内の Behavior Tree アセットと同じ場所に作成されます。 

Behavior Tree エディタ から新しい デコレーター を作成するときは常に、デフォルトの名前を使用するのではなく、コンテンツ ドロワー にアクセスしてアセットの名前を変更することをお勧めします。

新しい デコレーター を作成するときは、既存の Behavior Tree デコレーター親クラス として使用し、ドロップダウンメニューから機能を継承することができます。 

You can use an existing Behavior Tree Decorator as the Parent Class to inherit functionality from by selecting it from the drop-down menu

Behavior Tree サービスを作成する

サービスComposite ノードにアタッチされ、ブランチが実行されている限り、定義された頻度で実行されます。これらは ブラックボード のチェックや更新によく使われ、他の Behavior Tree システムの従来の Parallel ノードに取って代わるものです。デフォルトで利用可能な サービス はいくつかありますが、Behavior Tree の実行方法の決定を支援する独自のカスタム サービスを作成することができます。 

最適化が問題になる場合は、Blueprint Behavior Tree サービスをネイティブの Behavior Tree サービスに切り替えることをお勧めします。

Behavior Tree エディタ のツールバーから [New Service (新規サービス)] ボタンをクリックします。 

Click the New Service button from the Toolbar inside the Behavior Tree Editor

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

This will open a new BTService_BlueprintBase class where you can provide your Service logic

Service ブループリント は、コンテンツ ドロワー 内の Behavior Tree アセットと同じ場所に作成されます。 

Behavior Tree エディタ から新しい サービス を作成するときは常に、デフォルトの名前を使用するのではなく、コンテンツ ドロワー にアクセスしてアセットの名前を変更することをお勧めします。

新しい サービス を作成する際に、ドロップダウン メニューで既存の Behavior Tree サービス を選択すると、そのサービスを 親クラス として使用して、その機能を継承することができます。 

You can use an existing Behavior Tree Service as the Parent Class to inherit functionality from by selecting it from the drop-down menu

ブラックボードを編集する

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

You can edit a Blackboard asset by double-clicking on the asset in the Content Drawer to open it up in the Blackboard Editor

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

You can switch to the Blackboard by clicking the tab in the upper-right corner of the window

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

In the Blackboard Details panel you can assign a different Blackboard as the Parent, inheriting Keys from it

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

You can add Keys by clicking the New Key button in the Blackboard window

キー として格納できる変数型の詳細については、「ブループリント変数」を参照してください。

キー が作成されたら、[Blackboard Details] パネルで キー に関連するプロパティを定義できます。

You can define properties associated with the Key in the Blackboard Details panel

プロパティ

説明

Entry Name

キーのユーザー定義名です。

Entry Description

ブラックボード キーの機能を説明するオプションの説明です。

Key Type

キーの作成時に定義されていますが、Object キーと Class キーには、特定の クラス を定義できるより多くの追加オプションが用意されています。これにより、Object (アクタのようなもの) から継承された任意のタイプのデータを格納できます。

Instance Synced

これは、ブラックボードのすべてのインスタンスでキーの同期の決定に使用されます。

Rename または Delete を行うには、キー を右クリックしてコンテキスト メニューを表示するか、キー 上で F2 キーまたは Delete キーを押します。

To Rename or Delete Key right-click a Key to bring up the context menu

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

For Class and Object Keys you can click the little triangle beside Key Type

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

For Enum Keys there are additional properties that can be set by clicking the little triangle beside Key Type

プロパティ

説明

Enum Type

割り当てられた列挙型を使用します。

Enum Name

C++ コードで定義された列挙型の名前は、Enum Type で割り当てられたアセットよりも優先されます。

Is Enum Name Valid

Enum Name のオーバーライドが有効でアクティブなときに設定します。

Behavior Tree を編集する

Behavior Tree を編集するには、Behavior Tree アセットを開く必要があります。 

コンテンツ ドロワーBehavior Tree アセットをダブルクリックして、[Behavior Tree Mode] に入ります。 

Double-click a Behavior Tree asset in the Content Drawer to enter Behavior Tree Mode

または Behavior Tree モード に切り替えることでも可能です。

[Behavior Tree Editor] の右上隅にある [Behavior Tree] タブをクリックします。 

Click the Behavior Tree tab in the upper-right corner of the Behavior Tree Editor

[Behavior Tree Mode] に切り替えるには、現在開いている Behavior Tree アセットを持っており、[Blackboard Mode] から切り替えている必要があります。 

ブラックボードを割り当てる

Behavior Treeブラックボード にアクセスするためには、Blackboard アセットを割り当てる必要があります。 

グラフ内の Root ノードを選択 (またはすべてのノードの選択を解除) してから、[Details (詳細)] パネルで必要な Blackboard アセット を設定します。 

In the Details panel set your desired Blackboard Asset

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

The Blackboard panel will update with its associated Blackboard Keys

ノードを操作する

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

Right-click the graph to bring up the context menu and select your desired node

Behavior TreeRoot ノードに接続できるのは、Composite ノードだけです。

ノードをドラッグして追加したいノードをコンテキスト メニューから選択することもできます。 

You can also drag off a node and select a node to add from the context menu

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

To remove nodes from the graph select a node or nodes and press Delete or right-click and select Delete

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

To connect nodes together left-click and drag from the output pin, to an input pin on another node

Behavior Tree でノードを接続するには、出力を入力に接続する必要があります (入力から出力に接続することはできません)。

ノードの接続を解除するには、ノードを右クリックして (または選択したノードを定義して) 希望の [Break All Pin Link(s) (すべてのリンクを解除)] メソッドを選択します。 

To disconnect nodes right-click a node or define a selection of nodes and select your desired Break Link(s) method
[Break All Pin Link(s)] を使用すると、ピン留めされている 1 つまたは複数のノードを切断できます。[Break link to...(...へのリンクを解除)] をクリックすると、指定したノードへの接続が切断されます。 

入力ピンまたは出力ピンを Alt +左クリックして接続を解除することもできます。

ノードを編集するには、ノードを選択してから、[Details] パネルでそのプロパティを調整できます。

Select a node and in the Details panel you can adjust its properties

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

To copy or paste a node select a node  then press ctrl+c to copy and ctrl+v to paste

ノード デコレーターとサービス

ノードのコンテキスト メニューから Behavior Tree グラフのノードに デコレーター、または サービス を追加できます。

これを行うには、Composite ノードまたは Task ノードを右クリックして、ノードに追加する デコレーター または サービス を選択します。 

To do this right-click a Composite or Task node then select the Decorator or Service you want to add to the node

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

To remove a Decorator or Service from a node select a Decorator or Service then press the Delete key or use the right-click context menu

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

To edit a Decorator or Service attached to the node first select the Decorator or Service then you can adjust your desired properties in the Details panel

ノードに追加された Composite デコレーター は、編集用に開くことができます。 

Composite デコレーターを開くには、Composite デコレーターをダブルクリックして、ブール値 (true またはfalse) を返すグラフを開きます。 

クリックして拡大

ツールバーから作成された タスクデコレーター、または サービス は、編集用に ブループリント で開くことができます。

カスタムの タスクデコレーター、または サービス を作成してグラフに追加したら、それをダブルクリックして編集用に開きます。 

After creating a custom Task Decorator or Service and adding it to your graph double-click it to open it for editing

また、コンテンツ ドロワー で任意のカスタム タスクデコレーター、または サービス を開くこともできます。

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

Double-click a custom Task Decorator or Service in the Content Drawer to open it in Blueprint for editing

また、デコレーターサービス をコピーして他のノードに貼り付けることもできます。

デコレーターまたはサービスを選択して、ctrl + c (コピーする) と ctrl + v (ペーストする) を押して別のノードに移動します。 

Select a Decorator or Service and press ctrl+c to copy and ctrl+v to paste onto another node