【Unreal Engine】StateTree入門:Behavior Treeとの使い分け

作成: 2026-07-23

UE5の新しいAI構築ツールStateTreeの入門。Behavior Treeとの発想の違い(BTは毎回ルートから優先度で選ぶ、StateTreeは今の状態から遷移する)、State/Task/Condition/Transitionの登場人物、StateTree AI Componentで動かす手順、そしてどちらを選ぶかの判断表まで。Behavior Tree記事と同じ巡回→追跡→帰還の見張りをStateTreeで組み直して並べます。

Behavior Treeで敵AIを組めるようになった。でも、新しい公式サンプルを開いたら、見慣れないもう1つのAIツール「StateTree」が使われていて戸惑う。「Behavior TreeとStateTree、結局どっちを学べばいいの?」で手が止まります。

UE5世代では、EpicがAI構築ツールとして StateTree を前面に出しており、公式テンプレートでの採用例も増えています。この記事では、Behavior Tree と何が違うのかを発想から整理し、 Behavior Tree記事とまったく同じ「巡回→追跡→帰還」の見張り をStateTreeで組み直して、2つを並べて見比べます。

StateTreeは実験的機能を脱して標準的に使える位置づけになっています。プラグインの有効化が要るかどうかはバージョンで変わるので、使っているUEで確認してください。

巡回・追跡・帰還の状態が遷移の矢印でつながったStateTreeのイメージとソフトブルーのクレイ人形の見張り

この記事でわかること

  • Behavior Treeとの 発想の違い(優先度で選ぶ vs 状態から遷移する)
  • StateTreeの登場人物: State / Task / Condition / Transition
  • StateTree AI Component で動かすまでの手順
  • どちらを選ぶか の判断表
  • Behavior Tree記事と同じAIを組んで 構造を並べる
  • 実践: 巡回→追跡→帰還の見張りをStateTreeで組み直す

Sponsored

Behavior Treeとの発想の違い

同じ敵AIを作るツールですが、 考え方の出発点が逆 です。ここが一番大事なところです。

Behavior Treeは毎回ルートから優先度で行動を選び直し、StateTreeは今の状態から次の状態へ遷移することを対比した図
  • Behavior Tree: 毎フレーム ルートから木をたどり直し 、「今、優先度の高い行動はどれか」を選びます。中心にあるのは「選択」です
  • StateTree: 「今どの状態にいるか」を持っていて、条件を満たしたら 今の状態から次の状態へ遷移 します。中心にあるのは「状態と遷移」です

Behavior Treeが「毎回、上から優先度で選び直す」のに対し、StateTreeは「今いる状態を基点に、次へ移る」。これは、enumとswitchで作るステートマシン の考え方の、正統な進化版だと考えると分かりやすいです。あのステートマシンを、専用のビジュアルエディタで、階層と遷移込みで組めるようにしたもの、それがStateTreeです。

StateTreeの登場人物

StateTreeを読むために、4つの言葉を押さえます。Behavior Treeを知っていれば、対応づけて理解できます。

StateTreeのState・Task・Condition・Transitionの4つの登場人物と、それぞれの役割を示した図
  • State(状態): 「巡回中」「追跡中」のような、AIが今いる状態。State同士は階層に組める
  • Task(タスク): その状態にいる間に実行する処理。「巡回地点へ移動する」など。Behavior TreeのTaskに近い
  • Condition(条件): その状態に入ってよいかを判定する条件(Enter Condition)。Behavior TreeのDecoratorに近い
  • Transition(遷移): ある状態から別の状態へ移る矢印。「プレイヤーを見つけたら、巡回→追跡へ」。 これがStateTreeの主役 です

Behavior Treeが「木の枝を選ぶ」構造だったのに対し、StateTreeは 「状態の箱を、遷移の矢印でつなぐ」構造 です。仕様書に「巡回中に発見したら追跡へ」と書いてあれば、その矢印がそのままエディタに現れます。

最初のStateTreeを動かす

StateTreeでAIを動かす流れは、Behavior Treeと似ています。

StateTreeアセットを作り、StateにTaskを置き、Transitionをつなぎ、Pawnに付けたStateTree AI Componentで実行するまでの手順図
  1. StateTreeアセットを作る: Content Browserで新規作成し、Schemaを StateTree AI に設定する(AI用のStateTreeであることを指定)
  2. Stateを置く: 「Patrol」「Chase」などのStateを作り、それぞれにTask(Move Toなど)を割り当てる
  3. Transitionをつなぐ: 各Stateに、次の状態へ移る条件と行き先を設定する
  4. Pawnで実行する: AIが動くPawn(またはAI Controller)に StateTree AI Component を付け、作ったStateTreeアセットを割り当てる

これで、Pawnを配置すればStateTreeが動きます。ターゲットや巡回地点といった、状態をまたいで使いたいデータは、StateTreeの Parameters に定義します。Behavior TreeのBlackboardにあたる「AIの共有メモ」です。移動の土台には NavMesh が要るのは、Behavior Treeのときと同じです。

Sponsored

どちらを選ぶか

「BehaviorTreeとStateTree、どちらで書くべきか」。これは、 AIの性格 で決めるのが分かりやすいです。

状態が明確なAIやギミックはStateTree、優先度の割り込みが複雑なAIはBehavior Tree、という使い分けを示した判断表の図
こういうAIならおすすめ理由
状態がはっきりしている(巡回/追跡/帰還、ギミックの開閉)StateTree状態と遷移がそのまま図になる。仕様書どおりに読める
優先度の割り込みが複雑(多数の行動を毎回天秤にかける)Behavior Treeルートから優先度で選び直す構造が向いている
既存資産・情報量を重視Behavior Tree情報や既存プロジェクトが多く、学習素材が豊富
公式サンプルに合わせたいStateTreeUE5世代のサンプルで採用例が増えている

迷ったときは、 状態がはっきりしているならStateTreeから試す のがおすすめです。UE5世代の公式サンプルはStateTree側の採用が増えており、これから情報も増えていく見込みです。ただし今すぐ困っているなら、情報量が多いBehavior Treeのほうが早く動くこともあります。

どちらか一方が正解というより、 AIの向き不向き です。状態がくっきりしたAIやギミックはStateTree、優先度の駆け引きが命のAIはBehavior Tree。そして前述のとおり、Behavior TreeからStateTreeを呼ぶこともできるので、 両方を組み合わせる 道もあります。

Sponsored

実践:見張りをStateTreeで組み直す

ステルスの見張り、ホラーの徘徊者、アクションの哨戒兵。 「普段は巡回し、見つけたら追い、見失ったら持ち場へ帰る」 はAIの基本形です。ここでは、Behavior Tree記事 とまったく同じ仕様をStateTreeで組み、2つの構造を並べて見比べます。

作るのは、 巡回地点を回り、プレイヤーを発見したら追跡に切り替わり、見失って5秒たったら巡回へ帰る 見張りです。挙動はBehavior Tree版と同一で、 差が出るのはエディタ上の見え方 です。

まず、同じAIをBehavior TreeとStateTreeで組むと、構造がどう見えるかを並べます。

同じ巡回→追跡→帰還のAIを、左にBehavior Treeの木構造、右にStateTreeの状態遷移図で並べて対比した図

Behavior Treeでは、ルートのSelectorの下に「追跡」「巡回」の枝が並び、Decoratorの条件で枝が選ばれます。StateTreeでは、「Patrol」「Chase」というStateが箱として並び、その間を 遷移の矢印 が結びます。「発見したらPatrol→Chase」「見失って5秒でChase→Patrol」という仕様が、そのまま矢印として読めます。

StateTreeの構成

要素内容
State「Patrol」Task: 巡回地点を選ぶ → Move To。Transition: プレイヤー発見で「Chase」へ
State「Chase」Task: ターゲットへ Move To。Transition: 見失って5秒経過で「Patrol」へ
発見の供給元AI Perception の視覚。ターゲットをParametersに書く
ParametersTargetActor(Object)、PatrolLocation(Vector)。Blackboard相当

遷移の考え方

StateTree(AI Schema)
├ State: Patrol
│    Task: FindPatrolLocation → Move To(PatrolLocation)
│    Transition: TargetActor が有効 → Chase へ
└ State: Chase
     Task: Move To(TargetActor)
     Transition: TargetActor を見失って 5秒 → Patrol へ

要点は、 遷移条件が「その状態から出る矢印」として1か所に集まる ことです。Behavior TreeではDecoratorの Observer aborts の設定で割り込みを表現しましたが、StateTreeでは「Patrolから出る条件」「Chaseから出る条件」が、それぞれのStateにまとまって書かれます。

確かめる

Playすると、 挙動はBehavior Tree版とまったく同じ です。敵は巡回地点を歩き回り、視界にプレイヤーが入ると追跡に切り替わり、見失って5秒たつと巡回へ帰ります。

うまくいかないときの切り分けです。

  • Chaseに移らない → PatrolのTransition条件(TargetActor が有効か)を確認。AI PerceptionがParametersに書けているか
  • ずっとChaseのまま帰らない → ChaseのTransitionの「5秒」タイマーか、TargetActor をクリアする処理を確認
  • そもそも動かない → Pawnに StateTree AI Component が付いていて、アセットが割り当たっているか。NavMeshがあるか

ポイントは2つです。

  • 同じAIなら、行数はほぼ同じ: この巡回AIくらいなら、Behavior TreeでもStateTreeでも手間は変わりません。違うのは「見え方」で、StateTreeは遷移が仕様書のまま図になります
  • 差が出るのは割り込みを足したとき: たとえば「どの状態にいても、被弾したら1秒ひるむ」を足すと、StateTreeは共通のTransitionで、Behavior Treeは高優先度の枝で表現します。ここで得意不得意が出ます。まずは同じ題材で両方を組み、Behavior Tree と読み比べてみてください

おまけ:先に知っておくと良いこと

Behavior TreeからStateTreeを呼べる。 UE5.4以降には、Behavior Treeのタスクから StateTree を実行するノード(BTTask_RunStateTree)があります。「大枠はBehavior Treeの優先度で回し、細かい状態遷移はStateTreeに任せる」という組み合わせができます。どちらか一方に決めきる必要はありません。

ステートマシンからの地続きの進化。 enumとswitchのステートマシン で「状態を1つに決める」考え方に慣れていれば、StateTreeはその発展形としてすんなり入れます。コードで書いていた match(状態ごとの分岐)を、ビジュアルエディタの箱と矢印に置き換えたもの、と捉えてください。

まずは小さく試す。 いきなり複雑なAIをStateTreeで組むより、2〜3状態の単純なギミック(扉の「閉→開→閉」など)で、State・Task・Transitionの手触りを掴むのがおすすめです。仕組みが分かれば、敵AIへの応用はすぐです。

まとめ

StateTreeとBehavior Treeは、発想が逆の兄弟です。

観点Behavior TreeStateTree
考え方ルートから優先度で選び直す今の状態から遷移する
主役木の枝(Selector/Sequence)状態の箱と遷移の矢印
得意複雑な優先度の割り込み明確な状態・ギミック
共有データBlackboardParameters

そして忘れてはいけないのが、 どちらも現役で、併存している ことです。置き換えではなく、AIの性格で選び、必要なら組み合わせる。

これで、新しいサンプルでStateTreeを見ても戸惑わなくなりました。あなたのゲームの敵AIは、状態がくっきりしていますか、それとも優先度の駆け引きが命ですか。その答えが、どちらで書くかを教えてくれます。

さらに学ぶために