인바이런먼트 쿼리 시스템 개요

인바이런먼트 쿼리 시스템 개요 페이지입니다.

Choose your operating system:

Windows

macOS

Linux

인바이런먼트 쿼리 시스템(EQS, Environment Query System) 은 환경 데이터를 수집하는 데 사용되는 언리얼 엔진 5(Unreal Engine) AI 툴의 기능입니다. 데이터를 수집한 뒤 제네레이터(Generator)를 사용하여 다양한 사용자 정의 테스트(Test)를 통해 데이터에 관해 질문하여 질문 타입에 가장 잘 맞는 아이템(Item) 을 반환합니다. EQS 사용 사례로는 가장 가까이에 있는 체력 픽업 또는 탄약을 찾기, 어떤 적이 가장 위협적인지 파악하기, 플레이어에 대한 시야를 확보하기(아래 예시 참고) 등이 있습니다. 

플레이어에 대한 시야 확보

EQS의 기반이 되는 콘셉트 아이디어와 이론은 언리얼 엔진 3의 인바이런먼트 택티컬 쿼리(ETQ, Environment Tactical Query) 시스템에서 출발했습니다. 이 시스템에 대한 자세한 내용은 환경에 스마트한 질의하기(Asking the Environment Smart Questions) 문서를 참고하세요.

EQS 기초

EQS 쿼리 에셋은 콘텐츠 드로어(Content Drawer) 에서 생성할 수 있으며 인바이런먼트 쿼리 에디터(Environment Query Editor) 에서 편집할 수 있습니다. 인바이런먼트 쿼리 에디터는 노드 기반 에디터로, 여기에서 제네레이터 노드를 추가하여 아이템을 생성하고, 이 아이템에 수행할 테스트와 테스트가 수행될 컨텍스트(Context)를 추가할 수 있습니다. 언리얼 엔진은 기본적으로 여러 가지 제네레이터 타입을 지원하지만, 블루프린트 또는 C++를 통해 커스텀 제네레이터를 생성할 수도 있으며, C++에서 생성한 제네레이터는 실행 속도가 더 빠릅니다. 

기존 제네레이터에 Distance 테스트 추가

위에서는 기존 제네레이터에 거리(Distance) 테스트를 추가했습니다.

제네레이터와 유사하게 반환된 아이템에 필터를 적용하고 점수를 매길 수 있는 테스트 타입이 몇 가지 있습니다. 커스텀 테스트는 제네레이터와 달리 C++에서만 생성할 수 있습니다. 하나의 제네레이터에 여러 테스트를 추가할 수 있으며, 이는 반환되는 아이템의 결과를 좁히기 위한 일반적으로 쓰이는 방법입니다. 테스트에서는 점수를 매기기 전에 먼저 필터를 적용하기 때문에 테스트를 제네레이터에 추가하는 순서는 결과와 무관합니다. 이는 반환되고 점수화되는 아이템의 수를 줄이기 위한 것입니다. 테스트의 타입은 아래 표를 참고하세요. 

노드 타입

설명

제네레이터(Generator)

아이템(Item) 이라는 위치 또는 액터를 생성합니다. 아이템에는 테스트 및 가중치가 적용됩니다.

컨텍스트(Context)

다양한 테스트와 제네레이터에 대한 레퍼런스 프레임입니다.

테스트(Test)

인바이런먼트 쿼리가 제네레이터로 생성된 아이템 중 어느 것이 최선의 옵션인지 결정하는 방법입니다.

각 타입에 대한 상세 정보는 EQS 노드 레퍼런스 페이지를 참조하세요.

EQS 쿼리를 구성하고 나면 비헤이비어 트리(Behavior Tree)에서 Run EQS Query 태스크(Task) 노드를 사용하여 쿼리를 실행할 수 있습니다. 

Run EQS Query 태스크 노드

EQS 쿼리를 생성하고 사용하는 전체 과정은 EQS 퀵 스타트 가이드를 참조하세요.

EQS 활성화하기

EQS로 작업을 시작하려면 프로젝트 세팅(Project Settings) 메뉴에서 EQS를 활성화해야 합니다.

  • 필요한 경우 세팅(Settings) > 플러그인(Plugins) 섹션에서 인바이런먼트 쿼리 에디터(Environment Query Editor) 옵션을 활성화합니다.

    인바이런먼트 쿼리 에디터 옵션 활성화

EQS 쿼리 프리뷰하기

EQS 쿼리의 결과를 에디터 내에서 프리뷰할 수 있습니다. 가중치와 필터를 적용한 결과가 디버깅 구체로 표현됩니다. 

디버그 구체

위 이미지에서는 레벨 내에서 플레이어 캐릭터에 대한 시야가 확보되는 위치를 반환하는 EQS 쿼리를 디버깅하고 있습니다. 

자세한 정보는 AI 디버깅 또는 EQS 테스팅 폰 페이지를 참조하세요.