サポートされている Godot エンジン: 4.3 (v1.2.0+) | 4.2 (v1.1.x リリース)
LimboAI は、複雑な AI 動作を作成するために一緒に使用できるビヘイビア ツリーとステート マシンの組み合わせを提供するGodot Engine 4用のオープンソース C++ プラグインです。ビヘイビアー ツリー エディター、組み込みドキュメント、ビジュアル デバッガー、チュートリアル付きの広範なデモ プロジェクトなどが付属しています。 C++ で実装されていますが、独自のタスクと状態を作成するための GDScript を完全にサポートしています。
LimboAI の使用を気に入っていただけましたら、Ko-fi への寄付で私の取り組みをサポートすることをご検討ください。あなたの貢献は、開発と改善を続けるのに役立ちます。
動作ツリーは、ゲーム内のエージェント (キャラクター、敵など) の動作をモデル化および制御するために使用される強力な階層構造です。これらは、ゲーム用の豊富で高度にモジュール化された動作を簡単に作成できるように設計されています。ビヘイビア ツリーの詳細については、「ビヘイビア ツリーの概要」とチュートリアルを含むデモ プロジェクトをご覧ください。
デモ プロジェクトは
demo
フォルダーにあり、リリースで個別に入手できます。まず、demo/scenes/showcase.tscn
を実行してください。また、実例を通じてビヘイビアー ツリーを紹介するチュートリアルも含まれています。
さまざまなクリエイターが制作した YouTube 動画
ビヘイビア ツリー (BT):
ブラックボード プラン: BehaviorTree リソースで変数を定義し、BTPlayer ノードでその値をオーバーライドします。
プラン エディター: 変数、そのデータ型、プロパティのヒントを管理します。
ブラックボード スコープ: 名前の競合を防止し、複数のエージェント間でのデータ共有などの高度なテクニックを有効にします。
ブラックボード パラメーター: BB パラメーターをエクスポートします。ユーザーは値を指定するか、それをブラックボード変数にバインドできます (カスタム タスクで使用できます)。
ブラックボード変数を指定するためのインスペクターのサポート (「_var」で終わるエクスポートされたStringName
プロパティのカスタム エディター)。
エディターでBehaviorTree
リソースを簡単に作成、編集、保存できます。
BTPlayer
ノードを使用してBehaviorTree
リソースを実行します。
階層内でタスクを組み合わせたりネストしたりすることで、複雑な動作を作成します。
複合タスク、デコレータータスク、および条件タスクを使用して実行フローを制御します。
コア クラスBTAction
、 BTCondition
、 BTDecorator
、およびBTComposite
を拡張してカスタム タスクを作成します。
組み込みクラスのドキュメント。
Blackboard システム: Blackboard
を使用してタスク間でデータをシームレスに共有します。
BTSubtree
タスクを使用して、別のリソース ファイルからツリーを実行し、編成と再利用性を高めます。
ビジュアル デバッガー: 実行中のシーン内の BT の実行を検査し、問題を特定してトラブルシューティングします。
BehaviorTreeView
ノード (カスタムゲーム内ツール用) を使用してゲーム内の BT を視覚化します。
カスタム パフォーマンス モニターを使用してツリーのパフォーマンスを監視します。
階層型ステート マシン (HSM):
LimboState
クラスを拡張して状態ロジックを実装します。
LimboHSM
ノードは、 LimboState
インスタンスと遷移を管理するステート マシンとして機能します。
LimboHSM
それ自体が状態であり、他のLimboHSM
インスタンス内にネストできます。
イベントベース: 遷移はイベントに関連付けられており、関連するイベントが送出されるときにステート マシンによってトリガーされるため、ステート ロジックから遷移をより適切に切り離すことができます。
BTState
使用してステート マシンとビヘイビア ツリーを組み合わせ、高度なリアクティブ AI を実現します。
委任オプション: バニラLimboState
使用して、実装をコールバック関数に委任すると、ラピッド プロトタイピングやゲーム ジャムに最適になります。
?注: ステート マシンのセットアップと初期化にはコードが必要です。 GUI エディタはありません。
テスト済み:ビヘイビア ツリー タスクと HSM は単体テストでカバーされています。
GDExtension: LimboAI を拡張機能として使用できます。カスタム エンジンのビルドは必要ありません。
デモ + チュートリアル:例を使用したビヘイビアー ツリーの紹介を含む、広範なデモ プロジェクトを確認してください。
ファースト ステップ ガイドに従って、LimboAI とデモ プロジェクトを開始する方法を学びます。
LimboAI は、C++ モジュールまたは GDExtension 共有ライブラリとして使用できます。 GDExtension バージョンはより使いやすくなっていますが、機能が多少制限されています。どちらを使用することを選択しても、プロジェクトは両方との互換性を維持し、いつでも一方からもう一方に切り替えることができます。 「GDExtension の使用」を参照してください。
最新のビルドの場合は、 「アクション」 →「すべてのビルド」に移動し、リストからビルドを選択し、 「アーティファクト」セクションが見つかるまで下にスクロールします。
リリース ビルドについては、 「リリース」を確認してください。
Godot Engine のソース コードをダウンロードし、このモジュール ソースをmodules/limboai
ディレクトリに置きます。
ソース コードからビルドする方法については、Godot Engine のドキュメントを参照してください。
LimboAI モジュールを利用してゲームをエクスポートする予定がある場合は、エクスポート テンプレートも構築する必要があります。
単体テストを実行するには、エンジンをtests=yes
でコンパイルし、 --test --tc="*[LimboAI]*"
で実行します。
SCons ビルド ツールと C++ コンパイラが必要です。 「コンパイル」も参照してください。
scons target=editor
を実行して、現在のプラットフォーム用のプラグイン ライブラリを構築します。
SCons は、godot-cpp/ リポジトリがlimboai/godot-cpp
ディレクトリに存在しない場合、自動的にそのクローンを作成します。
デフォルトでは、ビルドされたターゲットはデモ プロジェクトに配置されます: demo/addons/limboai/bin/
他のオプションとターゲットについては、 scons -h
確認してください。
オンラインドキュメント: 安定版、最新版
最初のステップ
ビヘイビアツリーの概要
GDScript でのカスタム タスクの作成
Blackboardを使用したデータ共有
シーンツリー内のノードへのアクセス
ステートマシン
GDExtensionの使用
C# で LimboAI を使用する
クラスリファレンス
貢献は大歓迎です!バグレポート、機能リクエスト、またはコード変更については問題を開いてください。コードまたはドキュメントへの貢献に関する詳細なガイドラインについては、「貢献」ページをご覧ください。
さまざまなプロジェクトで役立つビヘイビアー ツリー タスクや機能のアイデアがある場合は、問題を開いて議論してください。
助けが必要ですか? Discordサーバーがあります: https://discord.gg/N5MGC95GpP
Mastodon で LimboAI の開発について書いています: https://mastodon.gamedev.place/@limbo。
このソース コードの使用は、LICENSE ファイルまたは https://opensource.org/licenses/MIT にある MIT スタイルのライセンスによって管理されます。
LimboAI のロゴとデモ プロジェクトのアート アセットは、https://creativecommons.org/licenses/by/4.0/ にあるクリエイティブ コモンズ表示 4.0 国際ライセンスに基づいてライセンスされています。