urosidoki/htn_planner

Ahead-of-time compiled HTN planner and C++ SDK for game AI.

解決する課題

ゲームAIでは、目標を達成するための一連のアクションを決定する必要があります。階層タスクネットワーク (HTN) プランニングは、高レベルのタスクをより小さく具体的なステップに分解します。このライブラリは、ゲーム向けのHTNプランナーを提供し、宣言型ドメイン言語を事前にネイティブCにコンパイルします。これにより、ランタイムはドメインテキストを解析することなくプランナーを直接実行できるため、パフォーマンスの予測可能性が維持されます。

仕組み

Lispのような構文でドメインを記述します。例えば、条件 (guard_on_duty) をチェックし、チェックポイントへの移動とエリアのスキャンという2つのプリミティブタスクを実行するパトロールメソッドなどです。付属の HTNTranslator ツールがドメインを検証し、Cソースコードを生成します。生成されたプランナーは、ゲームにコンパイルされるか、個別のモジュールとしてコンパイルされます。ランタイムでは、プランナーがワールドステートと呼び出し項を使用して、実行するプリミティブタスクを決定します。エンジンがアクションを駆動し、分解APIを呼び出して結果のプリミティブタスクを読み取り、それらを一つずつ完了させます。統合レイヤー (HTNIntegration) がフックとプランニングユニットを提供し、これを簡素化します。デバッグ用に、インストゥルメント化されたビルドで分解ツリー全体をキャプチャし、視覚的に表示できます。

対象ユーザー

NPC、部隊、またはAIディレクターのために構造化された意思決定を必要とするゲーム開発者。READMEには、NPCの行動、アクティブプランの検証、部隊の調整、AIディレクターのフローなどのユースケースが記載されています。Windows x64およびLinux x64上のC++プロジェクト向けに構築されており、Visual Studio 2022 および Ubuntu 24.04 上の GCC/Clang をサポートしています。高速でオフラインコンパイルされたプランナーをゲームエンジンに組み込みたい場合に最適です。

ハイライト

  • ドメインソースをネイティブCにコンパイルするため、ランタイムが高速で解析オーバーヘッドがありません。
  • 検証およびCコード生成用のコマンドライントランスレーター (HTNTranslator) を含みます。
  • プランナーフック、プランニングユニット、ワールドステートデータベースを備えたC++統合レイヤーを提供します。
  • SDL/ImGui ビジュアルデモと生成された実行デバッガーが付属しています。
  • エディター (HTNEditor)、言語サーバー (HTNLanguageServer)、VS Code 拡張機能を提供します。
  • 生成されたドメインモジュールのホットリロードをサポートします。
  • CMake 統合を備えた Windows および Linux 用のパッケージ化可能なSDK。
  • コンパイラ、ランタイム、統合、ABI検証をカバーするテストスイートで検証済み。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト