53. 인바이런먼트 쿼리
Enemy AI가 텔레포트 사용하도록 하기
인바이런먼트 쿼리(환경 질의)
콘텐츠 브라우저에서 우클릭 - 인공 지능 - 인바이런먼트 쿼리(EQS_Example)를 사용해볼 것이다.
주변 상황에 대해서 AI가 파악하기 위한 수단 중 하나이다.
EQS_Example 내부에서 Points:Grid를 추가한다.
* Run EQS Query 태스크
그리고 BT_Enemy_Ranged 비헤이비어 트리에 와서 Run EQSQuery 태스크를 추가한다.
이 태스크에서 Node탭과 블랙보드의 DEPRECATED로 되어있는 항목들은 모두 폐기된 것이므로 사용하지 않는다.
그리고 Query Template에 아까 만든 EQS_Example 인바이런먼트 쿼리를 선택해준다.
이후 비헤이비어 트리에 연결했던 Sequence들을 모두 해제하고 Run EQSQuery만 임시로 연결한다.
이제 플레이하여 디버그 화면에서 3.EQS를 활성화 시켜주면 아래와 같이 Grid 형태로 구체가 생긴 것을 볼 수 있다.
이 구체들은 하나의 아이템으로써, 우리가 제시하는 조건에 만족하는 하나의 아이템을 찾는 것이 이번 목표이다.
다시 돌아와서 EQS_Example 인바이런먼트 쿼리에 생성했던 Points:Grid Generators의 디테일들을 알아보자.
- GridHalfSize : 사각형의 절반 크기(원으로 치자면 반지름)
- Space Between : 아이템의 간격
- Generate Around : 아이템을 누구 주변에 생성할 것인지
Grid를 우클릭하여 테스트를 추가할 수 있다. (비헤이비어 트리에서 서비스와 비슷한 느낌처럼 보인다)
왼쪽의 박스를 통해 활성화 여부를 선택한다.
- Distance 테스트
현재 Querier로의 거리를 뜻한다.
여기서 거리를 비교할 대상은 Grid로 생성된 아이템으로부터 Querier의 거리를 계산하게 된다.
Distance의 디테일 중에 Test Purpose(테스트의 목적)을 선택할 수 있다.
Filter는 필터링, 즉 걸러내는 것이 목적.
Score는 점수를 매기는게 목적.
Test Mode에는 3D, 2D, Z, Z(Absolute)가 있다.
이는 아이템과 대상의 거리를 구함에 있어서 어떻게 구할 것인지를 말한다.
Distance To는 누구의 거리를 잴 것인지 선택한다.
Filter Type은 Range로 최소 200 ~ 최대 500의 거리에 있는 아이템들을 걸러낸다.
Score는 필터링을 거쳐 배제되지 않은 아이템만 대상이 된다.
Scoring Equation에서 어떤 방정식 형태를 사용할 것인지 정한다.
Clamping은 최소 / 최대 거리를 지정하여 최소거리 이하는 모두 0.0이고, 최대거리 이상은 모두 1.0으로 Scoring한다.
Scoring Factor는 점수의 배율을 조정하는 것이다.
Normalization Type(정규화) : Absolute(절대적), Relative(상대적) : 필터를 거치고 남은 아이템들로 Score를 계산한다.
Reference Value : 특정 거리를 지정하면 해당 거리로부터 아이템들의 Score를 매겨준다.
* 아이템이 Winner로 선정되는 조건은 모든 테스트를 통과하고 필터링되지 않은 대상만이 Winner로 선정된다.