센서
소개
센서의 용도는 두 가지입니다.
- 데이터 처리를 중앙 집중화하여 최적화합니다.
- 플레이어의 즉각적인 환경 인식 능력을 모방합니다.
이 접근 방식은 복잡성을 우아하게 처리하며 동작이 확장되어도 유지 보수가 가능합니다.
처리된 정보는 센서에 의해 에이전트의 블랙보드 또는 메모리에 저장됩니다. 이렇게 하면 HFSM이 결정을 내리고 작업을 수행할 때 저장된 데이터에 액세스할 수 있으므로 재계산 중에 발생하는 오버헤드를 방지하여 성능을 개선할 수 있습니다.
노트: 센서는 일반적으로 레이캐스트 또는 NavMesh 검사와 같이 성능이 많이 필요한 계산을 캡슐화합니다. 그러나 이러한 계산을 모든 틱에서 수행할 필요는 없습니다. 이를 통해 각 틱 동안 일부 센서만 업데이트하는 등의 간단한 최적화가 가능합니다. 예를 들어, 5번째 AI 틱마다 센서 눈을 업데이트할 수 있습니다.
센서는 에셋이며, 이를 통해 설계자는 다중 또는 다른 버전의 HFSM 없이 편집기에서 바로 어떤 센서를 가질지 지정할 수 있습니다.
서로 다른 에이전트 난이도에 동일한 센서의 여러 버전을 사용할 수 있습니다. 예를 들어 EasySensorEyes
에셋은 적을 탐지할 수 있는 최대 시야 거리를 20m로 설정할 수 있는 반면 DifficultSensorsEyes
에셋은 훨씬 더 넓은 시야 거리를 가질 수 있습니다.
센서 타입
각 정보 유형에는 "감지" 전용 센서가 있습니다. 이 항목에 포함된 센서는 기본적으로 FPS 템플릿에 포함되어 있습니다. 게임에 필요한 만큼의 다른 센서 타입을 자유롭게 만들 수 있습니다. 확장된 센서로는 커버 센서, 떨어뜨린 무기 센서, 위험한 물체 센서(예: 투척 수류탄) 또는 대화식 물체 센서가 있습니다.
SensorEyes
SensorEyes
는 가장 기본적인 센서입니다. 최적의 공격 대상(적)을 탐지하고 시야에서 사라진 적의 마지막 위치를 기억하는 데 사용됩니다. 목표물은 거리, 시야 위치 및 회전(AI 에이전트 확인 여부)을 기준으로 평가됩니다. 설계자는 이러한 메트릭에 가중치를 할당할 수 있습니다. 이러한 가중치는 런타임에 메트릭을 평가하는 방법을 변경합니다. 이 절차에서 가장 비용이 많이 드는 검사는 레이캐스트입니다. 성능을 최적화하기 위해 잠재적인 가시 대상을 미리 필터링합니다.
SensorPickup
SensorPickup
은 근처의 "최상" 픽업을 선택합니다. 픽업의 관련성이 고려됩니다. 예를 들어, 봇은 이미 최대 상태에 있는 상태에서는 상태 팩을 픽업하려고 시도하지 않습니다. 설계자는 다시 가중치를 지정하여 관련성보다 거리에 우선순위를 지정하거나 그 반대의 경우도 마찬가지입니다.
SensorDamage
SensorDamage
은 OnDamage()
신호를 리슨하고 에이전트의 메모리에 피해 기록을 작성합니다. 동일한 인스트레이터에 의해 발생한 피해는 시간이 지남에 따라 집계되므로 일정량의 피해가 발생한 후에야 에이전트가 피해 메모리에 반응할 수 있습니다.
SensorEars
SensorEars
는 OnWeaponFired()
신호를 듣고 "들린" 발사가 우호적인지, 적대적인지 메모리에 기록합니다.