인바이런먼트 쿼리 테스팅 폰

EQS 테스팅 폰을 사용하여 EQS 쿼리가 무엇을 하고 있는지 디버그 및 표시하는 방법을 설명합니다.

Choose your operating system:

Windows

macOS

Linux

인바이런먼트 쿼리 시스템(Environment Query System, EQS)에는 AI 디버깅(AI Debugging) 툴뿐 아니라 인바이런먼트 쿼리가 무엇을 하고 있는지 확인할 수 있게 해 주는 특수한 타입의 폰(Pawn) 클래스도 있습니다. 이를 인바이런먼트 쿼리 시스템 테스팅 폰(Environment Query System Testing Pawn) 또는 EQS 테스팅 폰(EQS Testing Pawn) 이라고 합니다. 인바이런먼트 쿼리의 정확한 구조가 결과물의 크기와 모양을 정의하지만, 결과물은 항상 색이 있는 구체로 표현됩니다. 구체는 녹색에서 빨강까지의 컬러 스케일을 가지며, 인바이런먼트 쿼리가 실행한 다양한 테스트의 수준을 나타냅니다. 파란색 구체는 테스트가 실패했거나 트레이스(Trace) 테스트 등의 부울 타입 테스트가 false를 반환했음을 나타냅니다.

EQS 테스팅 폰으로 작업하기

EQS를 활성화하고 EQS 쿼리를 생성한 뒤에 에디터 내에서 EQS 테스팅 폰(EQS Testing Pawn)을 사용하여 데이터를 테스트할 수 있습니다. 

  1. 콘텐츠 브라우저(Content Browser) 에서 EQS 테스팅 폰(EQSTestingPawn) 클래스로 새 블루프린트 를 만들고 적절히 명명합니다.

    콘텐츠 브라우저에서 EQS 테스팅 폰 클래스로 새 블루프린트를 만들고 적절히 명명합니다

  2. EQSTestingPawn 을 레벨에 배치하고 디테일(Details) 패널에서 EQS 쿼리 템플릿(EQS Query Template) 을 테스트에 할당합니다.

인바이런먼트 쿼리 시스템은 실험단계 기능이므로 EQS 테스팅 폰은 프로세서에 큰 부하를 줄 수 있으며, 활성화된 쿼리 템플릿을 변경하면 시스템이 아주 오랜 시간 지연될 수 있습니다. 인바이런먼트 쿼리를 편집할 때는 쿼리 템플릿 프로퍼티를 지우는 것이 좋습니다.

쿼리의 콘텐츠에 따라서, EQS 테스팅 폰을 레벨에서 선택했다면 디버그 구체가 레벨에 표시되어 상태와 일치하는 값을 나타낼 것입니다. 아래 예시에서는 EQS 테스팅 폰을 사용하여 플레이어 캐릭터에 대한 시야가 확보되는 최적의 위치를 산출하는 쿼리를 테스트하고 있습니다. EQS 테스팅 폰을 움직이면 구체의 색과 값이 업데이트되며 플레이어의 위치와 EQS 테스팅 폰을 베이스로 새로운 최적의 결과를 표시합니다.

결과 평가하기

EQS 테스팅 폰(EQSTestingPawn)을 사용하여 테스트 결과를 평가할 때, 색 구체와 값은 해당 위치에서 아이템이 일치하는 수준을 나타냅니다.

  • 파란색 구체 : 이 구체는 해당 아이템의 테스트가 실패했음을 나타냅니다. 따라서 아이템은 아무런 가중치가 적용되지 않고 결과에서 제외됩니다. 보통 값이 필터로 걸러졌을 때 발생합니다. Distance 테스트 등으로 모든 아이템이 필터 범위를 초과하거나 필터 범위 미만일 때와 같은 경우입니다. 값이 완전히 제외되기를 원하지 않는다면 점수화 섹션의 범위제한(Clamp) 옵션을 사용하면 됩니다. 아래 예시는 플레이어에 대한 시야를 확보하기 위한 쿼리입니다. 비저빌리티(Visibility) 를 사용하여 AI가 플레이어에 대한 시야를 확보하지 못하는 아이템(파란색 구체로 나타남)을 컬링했습니다.

파란색 구체

  • 녹색에서 빨간색 구체 : 녹색에서 빨간색 사이의 구체는 아이템이 특정 테스트에 의한 최적의 결과로서 얼마나 바람직한지를 나타냅니다. 녹색이 빨간색보다 바람직하며, 표시되는 숫자는 가중치가 적용된 아이템의 점수입니다. 하나의 디버그 스텝(Debug Step)만 프리뷰하는 경우 이 값이 선택된 테스트의 최종값이 됩니다. 아래 예시에서는 쿼리를 사용하여 비저빌리티와 무관하게 플레이어로부터 가장 멀리 있는 포인트를 찾고 있습니다.

녹색에서 빨간색 구체

EQS 테스팅 폰 프로퍼티

EQS 테스팅 폰(EQSTestingPawn)을 레벨에서 선택하면 디테일(Details) 패널에서 다음과 같은 프로퍼티를 사용할 수 있습니다. 

프로퍼티

설명

쿼리 템플릿(Query Template)

EQS 테스팅 폰이 사용할 인바이런먼트 쿼리입니다.

쿼리 환경설정(Query Config)

명명된 값을 인바이런먼트 쿼리에 전달하여 세팅을 빠르게 조정합니다.

스텝별 시간 제한(Time Limit Per Step)

이 값이 0.0보다 크게 설정되면 EQS 테스팅 폰은 이 프로퍼티로 설정된 시간에 스텝 계산을 중단합니다. EQS 테스팅 폰을 사용하면서 인바이런먼트 쿼리를 조정할 때의 부하를 줄이는 데 유용합니다. 

Note: This will not reduce the time it takes to calculate the locations for the Generator, such as using a large Simple Grid with a tight Density

디버그 드로에 스텝(Step to Debug Draw)

단일 디버그 스텝을 표시합니다. 스텝이 인바이런먼트 쿼리에 나타나는 순서대로 매핑되지 않을 수도 있습니다.

하이라이트 모드(Highlight Mode)

모든 구체를 동일한 크기로 표시할지 아니면 최상위 5% 또는 25% 구체를 따로 표시할지 결정합니다(나머지 구체의 크기가 줄어듭니다).

라벨 드로(Draw Labels)

가중치 또는 실패한 이유를 뷰포트의 디버그 구체에 그립니다.

실패한 아이템 드로(Draw Failed Items)

트레이스가 타깃을 찾는 데 실패하는 등의 경우에 실패한 아이템을 컬링합니다.

완료된 움직임에 대해서만 쿼리 재실행(Re Run Query Only on Finished Move)

EQS 테스팅 폰의 움직임을 멈췄을 때만 뷰포트의 디버그 시각화를 업데이트합니다. 아주 빠른 인바이런먼트 쿼리로 작업하는 경우가 아니라면 활성화해 두는 것이 좋습니다.

게임에서 표시 필요(Should be Visible in Game)

실행 중인 게임에서 EQS 테스팅 폰과 디버깅 시각화를 표시합니다.

게임 도중 틱(Tick During Game)

실행 중인 게임에서 EQS 테스팅 폰과 디버그 시각화를 틱합니다.

쿼리 모드(Querying Mode)

디버그 뷰의 표시 내용을 변경합니다.

설명

단일 결과(Single Result)

디버그 드로에 스텝 프로퍼티에 나열된 아이템 결과만 표시합니다.

모두 매치(All Matching)

전체 인바이런먼트 쿼리의 필터와 가중치가 적용된 최종 점수를 표시합니다.

내비 에이전트 프로퍼티(Nav Agent Properites)

폰의 움직임 방식을 결정하는 프로퍼티입니다. 

설명

내비 에이전트 반경(Nav Agent Radius)

내비게이션/길 찾기에 사용되는 캡슐의 반경입니다.

내비 에이전트 높이(Nav Agent Height)

내비게이션/길 찾기에 사용되는 캡슐의 총 높이입니다.

내비 에이전트 스텝 높이(Nav Agent Step Height)

사용할 스텝의 높이입니다. -1인 경우 내비데이터(NavData) 설정의 디폴트 값을 사용합니다.

내비 걷기 검색 높이 스케일(Nav Walking Search Height Scale)

내비 걷기(Nav Walking) 중 프로젝트에 대한 내비메시(NavMesh)를 검색할 때 바운드 높이에 적용할 스케일 인수입니다.

선호하는 내비 데이터(Preferred Nav Data)

이 프로퍼티는 테스팅 폰이 테스트를 수행하게 할 내비게이션 데이터(Navigation Data)의 클래스 타입을 지정합니다.

크라우치 가능(Can Crouch)

true라면 폰이 웅크릴 수 있습니다.

점프 가능(Can Jump)

true라면 폰이 점프할 수 있습니다.

걷기 가능(Can Walk)

true라면 폰이 바닥 위를 걷거나 이동할 수 있습니다.

수영 가능(Can Swim)

true라면 폰이 플루이드 볼륨 안에서 수영 혹은 이동할 수 있습니다.

날기 가능(Can Fly)

true라면 폰이 날 수 있습니다.