인바이런먼트 쿼리 시스템(Environmental Query System, EQS)에서 제네레이터(Generator) 는 아이템(Item) 이라는 위치나 액터를 생성합니다. 아이템에는 테스트와 가중치가 적용되며, 가중치가 가장 높은 아이템은 비헤이비어 트리(Behavior Tree)로 반환됩니다. 정보를 얻기 위한 제네레이터에는 여러 타입이 있습니다. 블루프린트나 C++로 제네레이터를 만들 수도 있습니다.
Actors Of Class
Actors Of Class 제네레이터는 검색 중앙(Search Center) 주변의 지정된 검색 반경(Search Radius) 내에서 특정 클래스의 액터를 찾습니다. 반환된 액터는 테스트에서 아이템으로 사용할 수 있습니다.
프로퍼티 |
설명 |
---|---|
검색된 액터 클래스(Searched Actor Class) |
찾을 액터의 클래스(예: 폰, 캐릭터)입니다. |
반경 내에 액터만 생성(Generate Only Actors in Radius) |
지정한 검색 반경 내에서만 지정한 검색된 액터 클래스 의 액터를 찾아 반환합니다. 비활성화하면 게임 월드 전체에서 지정한 검색된 액터 클래스 의 액터를 찾아 반환합니다. 함께 사용할 사용자 정의 데이터 바인딩(Data Bindings) 을 포함시킬 수도 있습니다. |
검색 반경(Search Radius) |
지정된 검색된 액터 클래스(Searched Actor Class) 를 찾을 최대 거리입니다. 0이나 음수 값을 입력하면 아무 결과도 반환하지 않습니다. |
검색 중앙(Search Center) |
쿼리 요청자(Querier) 또는 기타 다른 컨텍스트를 검색할 중심점을 의미하는 컨텍스트입니다. |
옵션 이름(Option Name) |
Actors Of Class 제네레이터의 베이스 클래스로부터 상속받는 프로퍼티입니다. 주로 해당 제네레이터의 이름을 표시하는 데 사용합니다(예: HUD 또는 출력 메시지). |
테스트 자동 정렬(Auto Sort Tests) |
활성화하면 쿼리가 실행되기 전에 최적의 퍼포먼스를 내도록 테스트를 자동 정렬합니다. |
Composite
EQS 쿼리를 구성하다 보면 하나의 테스트 사례에 제네레이터 를 두 개 이상 포함하고 싶은 인스턴스가 있을 수 있습니다. Composite 노드로 여러 개의 제네레이터 가 포함된 배열을 테스트에 사용할 수 있습니다.
프로퍼티 |
설명 |
---|---|
제네레이터(Generators) |
테스트에 포함할 제네레이터를 여러 개 추가할 수 있습니다. |
다른 아이템 타입 허용(Allow Different Item Types) |
여러 아이템 타입을 포함하는 제네레이터에서 테스트를 허용합니다. 제네레이터는 원본 데이터에 ForcedItemType 을 사용하므로, 자손 제네레이터가 자체 아이템 타입으로 메모리 블록에 쓸 때 메모리 레이아웃이 적절한지 확인해야 합니다. 예를 들어 테스트가 강제된 항목 타입 을 통해 아이템의 위치나 프로퍼티를 읽을 동안에는 데이터가 강제된 항목 타입 으로 할당된 블록에 적합해야 합니다. |
강제된 항목 타입(Forced Item Type) |
테스트에 사용할 아이템 타입입니다. 액터, 방향, 포인트 등을 지정할 수 있습니다. |
옵션 이름(Option Name) |
Actors Of Class 제네레이터의 베이스 클래스로부터 상속받는 프로퍼티입니다. 주로 해당 제네레이터의 이름을 표시하는 데 사용합니다(예: HUD 또는 출력 메시지). |
테스트 자동 정렬(Auto Sort Tests) |
활성화하면 쿼리가 실행되기 전에 최적의 퍼포먼스를 내도록 테스트를 자동 정렬합니다. |
Current Location
Current Location 제네레이터는 테스트를 검증하기 위해 지정한 쿼리 컨텍스트(Query Context) 의 위치를 가져옵니다.
프로퍼티 |
설명 |
---|---|
쿼리 컨텍스트(Query Context) |
테스트에 사용할 컨텍스트와 해당 컨텍스트의 현재 위치입니다. |
옵션 이름(Option Name) |
Actors Of Class 제네레이터의 베이스 클래스로부터 상속받는 프로퍼티입니다. 주로 해당 제네레이터의 이름을 표시하는 데 사용합니다(예: HUD 또는 출력 메시지). |
테스트 자동 정렬(Auto Sort Tests) |
활성화하면 쿼리가 실행되기 전에 최적의 퍼포먼스를 내도록 테스트를 자동 정렬합니다. |
Custom Generators
엔진에서 제공하는 제네레이터 타입 외에 EnvQueryGenerator_BlueprintBase 클래스 타입의 새 블루프린트를 생성하여 커스텀 제네레이터를 만들 수도 있습니다.
일반적으로 C++로 만든 제네레이터가 블루프린트로 만든 제네레이터보다 더 빠르게 실행됩니다.
커스텀 제네레이터를 만든 후에는 인바이런먼트 쿼리(Environmental Query) 내에서 사용할 수 있습니다.
커스텀 제네레이터 내에는 오버라이드할 수 있는 Do Item Generation 함수가 있습니다.
이 함수를 오버라이드하면 인바이런먼트 쿼리에서 전달된 컨텍스트 위치의 배열을 구할 수 있습니다.
배열은 컨텍스트에 따라 달라집니다. 예를 들어 쿼리 요청자(Querier)의 위치를 포함하는 엔트리가 하나뿐인 배열일 수도 있고, 레벨 내 모든 체력 픽업의 위치를 포함하는 배열일 수도 있습니다.
함수는 하나의 값만 반환하므로, Do Item Generation 함수가 인바이런먼트 쿼리에 다시 전달할 수 있는 배열에는 Add Generated Actor 와 Add Generated Vector 두 가지가 있습니다.
Add Generated Actor 노드는 액터 반환 배열에 액터를 추가합니다. Add Generated Vector 노드(아래)와 함께 사용하면 위치 값도 반환할 수 있습니다. 제네레이터가 비헤이비어 트리(Behavior Tree)에 무엇을 전달할지는 인바이런먼트 쿼리(Environment Query) 노드에서 설정하는 블랙보드 키(Blackboard key)를 바탕으로 결정됩니다.
Points: Circle
Points: Circle 제네레이터는 원 중앙(Circle Center) 으로부터 트레이스를 발산하고, 생성된 원의 반경 에지에 도달한 히트를 아이템으로 반환합니다.
프로퍼티 |
설명 |
||||||||
---|---|---|---|---|---|---|---|---|---|
원 반지름(Circle Radius) |
원 중앙 컨텍스트에서 확산되는 원의 최대 반경입니다. |
||||||||
사이 공간(Space Between) |
원의 바깥쪽 에지에 생성되는 아이템 사이의 간격(cm 단위)입니다. |
||||||||
포인트 수(Number Of Points) |
원에 생성될 아이템의 개수입니다. |
||||||||
호 방향(Arc Direction) |
호 방향이 결정되는 모드를 정의합니다. Two Points 를 선택하면 한 컨텍스트 위치에서 다른 컨텍스트 위치로 향하는 방향입니다. Rotation 을 선택하면 컨텍스트의 회전을 방향으로 사용합니다. |
||||||||
호 각도(Arc Angle) |
호의 각도를 도 단위로 정의합니다. |
||||||||
원 중앙(Circle Center) |
원의 중앙으로 사용할 컨텍스트입니다. |
||||||||
서클 생성 시 모든 컨텍스트 액터 무시(Ignore Any Context Actors when Generating Circle) |
활성화하면 원을 생성할 때 컨텍스트 액터에 대한 트레이스를 무시합니다. |
||||||||
원 중앙 ZOffset(Circle Center ZOffset) |
Z축 컨텍스트에 적용할 수 있는 오프셋입니다. |
||||||||
트레이스 데이터(Trace Data) |
트레이스의 수행 방식과 관련된 옵션입니다.
|
||||||||
투영 데이터(Projection Data) |
결과 아이템을 내비메시에 투영할지 여부와 투영에 사용할 내비메시 데이터 세트입니다. |
||||||||
옵션 이름(Option Name) |
Actors Of Class 제네레이터의 베이스 클래스로부터 상속받는 프로퍼티입니다. 주로 해당 제네레이터의 이름을 표시하는 데 사용합니다(예: HUD 또는 출력 메시지). |
||||||||
테스트 자동 정렬(Auto Sort Tests) |
활성화하면 쿼리가 실행되기 전에 최적의 퍼포먼스를 내도록 테스트를 자동 정렬합니다. |
Points: Cone
Points: Cone 은 중앙 액터(Center Actor) 로부터 지정된 원뿔 각도(Cone Degrees) 의 원뿔 모양으로 트레이스를 발산하여 아이템을 생성합니다.
프로퍼티 |
설명 |
---|---|
정렬된 포인트 디스턴스(Aligned Points Distance) |
같은 각도의 각 포인트 간 거리입니다. |
원뿔 각도(Cone Degrees) |
생성된 원뿔의 최대 각도입니다. |
각도 단계(Angle Step) |
각도가 증가하는 단계입니다. 반드시 1 이상이어야 합니다. 값이 작을수록 생성되는 아이템의 수가 작습니다. |
범위(Range) |
컨텍스트로부터 원뿔을 생성할 거리입니다. |
중앙 액터(Center Actor) |
이 액터가 바라보는 방향으로 원뿔이 생성됩니다. |
컨텍스트 로케이션 포함(Include Context Location) |
아이템 생성 시 중앙 액터 의 위치를 포함할지 여부입니다. 이 옵션은 MinAngledPointsDistance 파라미터를 건너뜁니다. |
투영 데이터(Projection Data) |
결과 아이템을 내비메시에 투영할지 여부와 사용할 내비메시 데이터 세트입니다. |
옵션 이름(Option Name) |
Actors Of Class 제네레이터의 베이스 클래스로부터 상속받는 프로퍼티입니다. 주로 해당 제네레이터의 이름을 표시하는 데 사용합니다(예: HUD 또는 출력 메시지). |
테스트 자동 정렬(Auto Sort Tests) |
활성화하면 쿼리가 실행되기 전에 최적의 퍼포먼스를 내도록 테스트를 자동 정렬합니다. |
Points: Donut
Points: Donut 제네레이터는 중앙(Center) 컨텍스트에서 발산되는 사용자 지정 링 수(Number of Rings) 를 사용하여 셰이프 기반 트레이스를 생성합니다.
프로퍼티 |
설명 |
---|---|
내부 반경(Inner Radius*) |
포인트와 컨텍스트 간의 최소 거리입니다. |
외부 반경(Outer Radius) |
포인트와 컨텍스트 간의 최대 거리입니다. |
링 수(Number of Rings) |
생성할 링의 개수입니다. |
링별 포인트(Points Per Ring) |
링마다 생성할 아이템 개수입니다. |
호 방향(Arc Direction) |
호 방향이 결정되는 모드를 정의합니다. Two Points 를 선택하면 한 컨텍스트 위치에서 다른 컨텍스트 위치로 향하는 방향입니다. Rotation 을 선택하면 컨텍스트의 회전을 방향으로 사용합니다. |
호 각도(Arc Angle) |
호의 각도를 도 단위로 정의합니다. |
나선 패턴 사용(Use Spiral Pattern) |
활성화하면 휠의 링이 나선 패턴으로 회전합니다. 비활성화하면 회전이 없어져 바큇살 모양에 가까워집니다. |
중앙(Center) |
검색의 중심이 될 컨텍스트입니다. 쿼리 요청자(Querier)일 수도 있고 다른 컨텍스트일 수도 있습니다. |
투영 데이터(Projection Data) |
결과 아이템을 내비메시에 투영할지 여부와 사용할 내비메시 데이터 세트입니다. |
옵션 이름(Option Name) |
Actors Of Class 제네레이터의 베이스 클래스로부터 상속받는 프로퍼티입니다. 주로 해당 제네레이터의 이름을 표시하는 데 사용합니다(예: HUD 또는 출력 메시지). |
테스트 자동 정렬(Auto Sort Tests) |
활성화하면 쿼리가 실행되기 전에 최적의 퍼포먼스를 내도록 테스트를 자동 정렬합니다. |
Points: Grid
Points: Grid 제네레이터는 주변 생성(Generate Around) 프로퍼티로 지정한 쿼리 요청자(Querier)를 중심으로 아이템의 그리드를 생성합니다.
프로퍼티 |
설명 |
---|---|
그리드 절반 크기(GridHalfSize) |
생성할 아이템 그리드의 높이와 폭입니다. |
사이 공간(Space Between) |
그리드 아이템 사이의 간격입니다. |
주변 생성(Generate Around) |
이 컨텍스트 주변에 그리드를 생성합니다. |
투영 데이터(Projection Data) |
결과 아이템을 내비메시에 투영할지 여부와 사용할 내비메시 데이터 세트입니다. 벽 속에 있거나 장애물에 걸린 아이템이 내비메시로 돌아오지만, 그리드 라인이 내비메시의 모서리 바로 너머에 있다면 번칭이 발생할 수 있습니다. |
옵션 이름(Option Name) |
Actors Of Class 제네레이터의 베이스 클래스로부터 상속받는 프로퍼티입니다. 주로 해당 제네레이터의 이름을 표시하는 데 사용합니다(예: HUD 또는 출력 메시지). |
테스트 자동 정렬(Auto Sort Tests) |
활성화하면 쿼리가 실행되기 전에 최적의 퍼포먼스를 내도록 테스트를 자동 정렬합니다. |
Points: Pathing Grid
Points: Pathing Grid 는 지정된 컨텍스트 위치 주변에 그리드를 생성합니다.
프로퍼티 |
설명 |
---|---|
아이템 경로(Path to Item) |
활성화하면 아이템에서 가까워지는 방향으로 경로를 탐색합니다. 비활성화하면 아이템에서 멀어지는 방향으로 경로를 탐색합니다. |
내비게이션 필터(Navigation Filter) |
경로 탐색에 사용할 내비게이션 필터입니다. |
그리드 절반 크기(GridHalfSize) |
사각형 크기의 절반입니다(에지 거리). |
사이 공간(Space Between) |
그리드에서 생성할 포인트의 밀도를 정의합니다. |
주변 생성(Generate Around) |
이 컨텍스트 주변에 그리드를 생성합니다. |
투영 데이터(Projection Data) |
결과 아이템을 내비메시에 투영할지 여부와 사용할 내비메시 데이터 세트입니다. 벽 속에 있거나 장애물에 걸린 아이템이 내비메시로 돌아오지만, 그리드 라인이 내비메시의 모서리 바로 너머에 있다면 번칭이 발생할 수 있습니다. |
옵션 이름(Option Name) |
Actors Of Class 제네레이터의 베이스 클래스로부터 상속받는 프로퍼티입니다. 주로 해당 제네레이터의 이름을 표시하는 데 사용합니다(예: HUD 또는 출력 메시지). |
테스트 자동 정렬(Auto Sort Tests) |
활성화하면 쿼리가 실행되기 전에 최적의 퍼포먼스를 내도록 테스트를 자동 정렬합니다. |
스캔 범위 배수(Scan Range Multiplier) |
포인트와 컨텍스트 사이의 최대 거리에 대한 배수입니다. |