ビヘイビアツリーとは?ゲームAIの仕組みを初心者向けにわかりやすく解説
2026年2月26日

近年、ゲーム開発において「ビヘイビアツリー」という言葉の露出が増えています。ビヘイビアツリーはゲームに実装するNPCの制御に役立つ技術として評価が高く、利用頻度が上がっているからです。
そこでこのコラムでは、ビヘイビアツリーとはなにかをまず解説したうえで、関連技術との違いやビヘイビアツリーの基本構造、ビヘイビアツリーの活用方法などを具体的に紹介していきます。
ゲーム開発者にとって役立つ知識が満載なので、ぜひ最後まで読んで参考にしてください。
ビヘイビアツリーとは
ビヘイビアツリー(Behavior Tree)を一言で表現するなら、「AI(NPC)の行動を制御するための設計図」です。
キャラクターが次に何をするべきか、優先順位に基づいて判断を下すためのツリー構造(木構造)をしたアルゴリズムを指します。ビヘイビア(Behavior)という英単語には「行動」、「挙動」などの意味があります。そのため、行動を決定するためのツリー状の図と考えるとわかりやすいでしょう。
ゲームに登場する敵キャラクターは、根拠なくただ闇雲に動いているわけではありません。まず「索敵」を行い、「プレイヤーを見つける」という条件を満たせば「追いかける」行動に移行します。さらに「攻撃範囲内に入る」という条件が加われば「攻撃を開始する」といったアルゴリズムで動いている場合が多いです。
このような動きはビヘイビアツリーが主流になる以前から使われていたステートマシンでも実現できますが、ビヘイビアツリーは階層化して整理しやすく、挙動追加や調整がしやすい点が強みです。このように、あらかじめ付与した条件に沿って、行動の分岐を表現したものがビヘイビアツリーです。
ビヘイビアツリーは、2004年にMicrosoftがリリースしたFPS『Halo 2』で初めて導入されたとされています。その後、ゲームのNPCを制御する手法として普及し、現在も広く利用されています。
なぜゲーム開発でビヘイビアツリーが使われるのか
ビヘイビアツリーが普及する以前は、ゲームのNPCはステートマシンという考え方で動いていました。ステートマシンとビヘイビアツリーの異なる点は、当コラムの「ステートマシンとの違い」の項目で解説しますので、そちらをご参照ください。
ここで重要なのは、ビヘイビアツリー登場以前は、NPCの動作条件を増やすとコードが複雑化して作業がしにくいうえに、バグが発生しやすかったという点です。
ビヘイビアツリーは行動条件を視覚的に把握できるため、複雑な行動を整理しやすい特徴をもっています。また、行動パターンや条件を後から修正、追加したいと思ったときにも対応しやすいメリットもあります。さらに、ビヘイビアツリーがしっかり作られていればその後の工程を分業しやすいので、チーム開発と相性も良好です。
これらの理由から、ビヘイビアツリーは複雑化が進むゲームのNPC制御に向いており、登場から20年以上が経過した現在でも広く用いられています。
ステートマシンとの違い
ステートマシン(State Machine)は、1990年代から使用されてきた制御方法です。ステート(State)という英単語には「状態」「様子」といった意味があります。たとえば、待機状態にいるNPCが、音などで敵を見つけたら攻撃し、攻撃対象を見失ったら待機状態に戻るといった使い方ができます。
「待機」、「攻撃」などの状態が遷移することを特徴としており、待機状態にも「巡回」や「ある場所での停止」など条件を増やすことができます。
上記のように、単純で少ない条件下での使用であれば問題ありません。ステートマシンは、どの状態にあるかが明確な点が大きなメリットです。
ただし、状態の数を増やすほど複雑化していくため、管理しにくくなるデメリットをもっています。ステートマシンは「もし○○なら××する」というifの考え方で制御しますが、条件を増やすたびにすべてのif文に条件を書き込まなければなりませんから、管理が非常に大変です。また、if文だけで構成していくと何らかの組み合わせで、攻撃と待機が同時に成立する、といった矛盾が生じ、バグが発生することもあります。わずかな条件追加のためにほとんどのif文を書き直す必要があるため、バグの解消も大変です。
一方のビヘイビアツリーは階層構造を持っており、「待機」、「攻撃」などの特定行動を一つのパッケージとして扱い、それを上位の判断ノードから呼び出す形式を取ります。状態が遷移して循環するステートマシンに対して、ビヘイビアツリーは状態遷移ではなく一連の流れの中で条件に合う行動を選択します。
このため、条件が増えてもステートマシンのようにほかの部分を修正する必要がなく、管理がしやすいのです。
ビヘイビアツリーの基本構造

ビヘイビアツリーは、複数の「ノード(ツリー構造の中の構成要素)」を線で結んでいくので、結果的に枝分かれが増え、木のような形状になります(スタート地点を上において下に流れていくように書けば、根が上にあって下に枝が広がっていく逆さの木のようになります)。ツリーを左から右など横に書くこともありますが、当コラムでは上から下に流れていくものとして統一します。
ビヘイビアツリーを理解するうえでは、スタートを「根(ルート)」とすると、次にある分岐点を「親ノード」、そこから分岐した先を「子ノード」と考えることが重要です。
子ノードは「成功(Success)」「失敗(Failure)」「実行中(Running)」のいずれかを親ノードに知らせるので、ツリー上のどの状態にあるかがわかりやすく、構造が非常にシンプルなことを特徴としています。
ルート(Root):スタート地点
ツリーの最上部に位置するのが「ルート(Root)」ノードです。ルートはAIが思考を開始する入り口であり、常に一つしか存在しません。ルート自体は複雑なロジックは持たず、直下にある最初の子ノードに対して「実行せよ」という命令を出す役割を担います。
ビヘイビアツリーを作るツールでは、ルートはひとつの子ノードのみをもつことができます。
行動ノード(タスク):キャラクターが実際に行うこと
ツリーの末端、いわゆる「子」または「葉(リーフ)」にあたる部分が行動ノードです。このノードで個別の具体的な処理を指示します。このノードは「子」を持つことができません。そのため、タスクノードと呼ばれることもあります。
具体例としては、以下のようなプレイヤーにとって見える(聞こえる)行動が該当します。
・指定の座標まで、あるいは指定した距離を移動する
・待機する
・武器で攻撃する
・防御する
・SEを鳴らす
行動ノードは、そのタスクが完了すれば「成功」、なんらかの理由でタスクを遂行できなければ「失敗」という情報を親ノードに返します。
判断ノード:どの行動を選ぶかの決定
ルートと行動ノードの間には、思考を制御するための判断ノードが配置されます。これらのノードはAIの性格や知能に当たる要素です。判断ノードの中には、以下のようなノードが存在します。
・セレクター(Selector)
複数の「子」を持つことが可能で、左の「子」から実行していき、成功したら終了して親に返します。失敗したら次の「子」を実行し、すべての「子」が失敗したときも終了して親に返します。
・シーケンス(Sequence)
複数の「子」を持つことが可能で、左の「子」から実行していき、成功したら次の「子」を実行します。ひとつでも失敗が起きたらその時点で終了して親に返します。これらによって、「敵が近いか?」「見えているか?」などの判断が可能となります。
ビヘイビアツリーの簡単な挙動例
用語の概要説明だけでは具体的なイメージがつかみにくいかもしれません。そのためここからは、日常生活に落とし込んで例を解説します。
・信号機を渡る際の判断
1.信号が赤かどうか判断する
2.赤なら止まる
3.青になれば進む
この一連の流れをビヘイビアツリーで考えると、「信号の色判定(判断ノード)」→「止まる(行動ノード)」→「進む(行動ノード)」といった形で、条件と行動を順序立てて表すことができます。
もうひとつ、体調が好ましくないときの判断をビヘイビアツリー的に書いてみます。
・体調が好ましくないときの判断
1.仕事が可能な体調か?(判断)
2.可能 → 通常どおり出勤する(行動)
3.不可能 → 会社に連絡して休む(行動)
4.発熱など通院すべき症状はあるか?(追加判断)
5.ある → 病院に行く(行動)
6.ない → 自宅で静養する(行動)
このように、優先度の高い条件から順番に確認し、それに応じて行動を選ぶ仕組みは、まさにビヘイビアツリーの基本的な挙動と一致します。
ゲームエンジンでのビヘイビアツリー活用

ビヘイビアツリーは、Unreal Engine(UE5)やUnityなどの代表的ゲームエンジンの機能に組み込まれているので、近年はゼロから自力で作ることはほとんどありません。以下で、Unreal Engine(UE5)とUnityに実装されているビヘイビアツリーの特徴を記載します。
・Unreal Engine(UE5)
Unreal Engineには、「Behavior Tree」エディタが標準搭載されています。ノードを線でつなぐビジュアルスクリプト形式で、不要な作業を行わないイベント駆動型な点が大きな特徴です。
また、標準的なビヘイビアツリーと比べ、Unreal Engineは条件式用のデコレーターが使用できるメリットがあります。さらに、同時動作ができる点や、ツリーがシンプルでわかりやすくデバッグ効率が良いこともUE5の優れた点です。
・Unity
Unity 6では、公式パッケージ「Unity Behavior」が提供されています。
Unity Behaviorは従来のビヘイビアツリーに比べて階層システムを構築しやすいメリットをもっています。また、一般的なビヘイビアツリーより子から親への返答の種類が多いことも大きな特徴です。
一般的なタイプであれば、成功、失敗、実行中の3種類しか返答がありませんが、Unity Behaviorは左記の3種類に加えて、待機中、初期化中の返答も可能です。さらに、一般的なものよりノードの種類も多く、ゲーム開発における柔軟な対応ができる点も魅力となっています。
ビヘイビアツリーを学ぶと何ができるようになるか
ビヘイビアツリーについて学習を進めると、開発中のゲームに質の高いNPCを登場させることができます。
ビヘイビアツリーを使わないNPCは無機的に感じられがちですが、ビヘイビアツリーを導入することで、行動を複雑化でき、生き物や人間のような挙動を実現できるからです。
たとえば、状況によって「逃げる」、「仲間を呼ぶ」、「隠れる」といった行動ができますし、ランダム性を持たせることもできます。また、このような複雑な挙動をさせても、管理が容易でバグが出た時の対応もしやすいので、開発にかかるリソースを押さえながら質の良いNPCの実装が可能です。
これらの機能を使っていく中で、AIを使った開発に馴染むこともできますし、ゲームの面白さを制御しやすくなるなど、メリットが豊富です。
ほかにもビヘイビアツリーの応用によって得られるものがあります。ここまでの説明では、ステートマシンとビヘイビアツリーはそれぞれ独立した選択肢であるかのように読み取れるかもしれませんが、実は併用することも可能です。多層構造的にステートマシンとビヘイビアツリーを使うことで、より高度なNPCを登場させることができます。
そしてこれらのツールや機能を使いこなせることが、ゲーム業界で役立つスキルをもつ人としての評価を高めます。これらを踏まえて、ぜひビヘイビアツリーを使いこなせるエンジニアを目指してください。
まとめ
ビヘイビアツリーは、現代のゲーム開発において「NPCの挙動を人間に近づける手法」として重要視されています。過去には無機物のような行動しかできなかったNPCが、人が操作しているような応答ができればゲームの没入感が大きく向上するからです。
また、ビヘイビアツリーは、ゲーム開発者にとっての管理しやすさやバグ修正のリソース低減など多数の恩恵をもたらしてくれます。
ビヘイビアツリーはUnreal EngineやUnityといった主要エンジンに標準装備されているので、容易に触れることができる環境も整っています。これからのゲーム開発において、ビヘイビアツリーは「使用することが当然」の技術となることが予想されます。これを踏まえて、まだビヘイビアツリーに触れていない開発者は、ぜひ当コラムを参照しながらビヘイビアツリーの知識や、適切に扱うためのスキルを獲得してください。