Environment Query System ユーザー ガイド

EQSアセット作成と使用の一般的な方法を説明します。

Choose your operating system:

Windows

macOS

Linux

このページでは、Environmental Query System (EQS) アセットの有効化、作成、および編集の一般的なワークフローについて説明します。 

EQS の有効化

EQS の使用を開始する前に、[Editor Preferences (エディタの環境設定)] メニューから EQS を有効にする必要があります。

  • [Editor Preferences (エディタの環境設定)] > [Experimental (実験的)] > [AI] セクションで、[Environmental Query System] オプションをオンにします。

    EQSUG_EnableEQS.png

EQS クエリの作成

EQS アセットを作成するには、次の手順を実行します。 

  1. コンテンツ ブラウザ で、[Add New (新規追加)] ボタンをクリックして、[Artificial Intelligence (人工知能)] で、[Environment Query] を選択します。 

    EQSUG_CreateEQSAsset.png

  1. 新しい EQS アセットの名前を入力します。 

    EQSUG_EnterEQSName.png

Environment Query の他、コンテンツ ブラウザではカスタムのジェネレータアセットおよび Context ブループリント アセットを作成できます。

EQS クエリの編集

EQS アセット内で、ジェネレータを使用すると、テストされ重み付けされることになる位置またはアクタを生成します。コンテキスト を提供し、テストでジェネレータのどのアイテムが最も良い選択肢であるかを特定できます。次のセクションでは、EQS アセット内でこれらのそれぞれを作成する方法を説明します。

ジェネレータを追加するには、次の手順を実行します。

  • EQS のグラフで右クリックして、希望のタイプのジェネレータを選択します。

    EQSUG_AddGenerator.png

    ジェネレータを追加したら、Root ノードをドラッグしてジェネレータに接続します。 

    EQSUG_ConnectGenerator.png

    Root には複数のジェネレータを接続できますが、クエリでは一番左のジェネレータのみが使用されます。

テストを追加するには、次の手順を実行します。

  • ジェネレータを右クリックして、追加するテストを選択します。 

    EQSUG_AddTest.png

    テストを追加すると、ジェネレータに接続されているように表示されます。テストを選択して、[Details (詳細)] パネルでプロパティを調整します。 

    EQSUG_AddTestDetails.png

コンテキストを定義するには、次の手順を実行します。

  • テストの [Details (詳細)] パネルで、 EnvQueryContext を希望のコンテキストに変更します。 

    EQSUG_Context.png

    プロパティ名は、テストのタイプに基づいて変わります。詳細については、「テスト」を参照してください。

EQS Query のプレビュー

エディタで EQS クエリの結果をプレビューできます。ウェイト付け/フィルタリングされた結果がデバッグ球体で表されます。 

EQSUG_Preview.png

この画像では、レベルのプレイヤー キャラクターが見える位置を返す EQS クエリをデバッグしています。 

詳細については、「AI デバッグ」または「EQS Testing Pawn」を参照してください。

ビヘイビア ツリーで EQS を使用する

EQS Query を作成したら、ビヘイビア ツリー内で タスク の一部としてクエリを実行できます。

  1. ビヘイビア ツリー内で右クリックして、Run EQS Query Task ノードを追加します。

    EQSUG_RunEQS.png

  2. [Run EQS Query] で、実行する [Query Template (クエリ テンプレート)] (目的の EQS アセット) とこのクエリで返される [Blackboard Key (ブラックボード キー)] を割り当てます。

    EQSUG_EditEQSBT.png

    返されるブラックボード キーが最も高いウェイトの結果 (オブジェクトまたはベクター) になります。この例の EQS クエリでは、プレイヤーの場所を特定し、その場所を MoveToLocation という名前のブラックボード キーに提供します。

    必要に応じて、[Query Config (クエリ設定)] オプションを使用して、EQS アセットに渡すパラメータを追加できます。

ネイティブ コードで EQS を使用する

EQS Queries は通常ビヘイビア ツリー内で実行しますが、ネイティブ コードから直接使用することも可能です。以下のの例は、特定のゾーンでスポーンするためにキャラクターまたはアイテムの安全な場所を探す仮想クエリを示しています。

// These names must match the variable names used in the query
static const FName SafeZoneIndexName = FName(TEXT("SafeZoneIndex"));
static const FName SafeZoneRadiusName = FName(TEXT("SafeZoneRadius"));

// Run a query to find a safe spawn point based on the zone's index and a safety radius
bool AMyActor::RunPlacementQuery(const UEnvQuery* PlacementQuery)
{
    if (PlacementQuery)
    {
        // Set up a query request
        FEnvQueryRequest QueryRequest(PlacementQuery, this);

        // Set query parameters
        QueryRequest.SetIntParam(SafeZoneIndexName, SafeZoneIndexValue);
        QueryRequest.SetFloatParam(SafeZoneRadiusName, SafeZoneRadius);

        // Execute the query
        QueryRequest.Execute(EEnvQueryRunMode::RandomBest25Pct, this, &AFortAthenaMutator_SpawningPolicyBase::OnEQSSpawnLocationFinished);

        // Return true to indicate that we started the query
        return true;
    }

    // Return false to indicate that we failed to start a query
    return false;
}
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル