icon안동민 개발노트

EQS의 기본 활용법


 환경 쿼리 시스템(Environment Query System, EQS)은 AI가 주변 환경을 분석하고 최적의 결정을 내리는 데 사용되는 강력한 도구입니다.

 EQS를 통해 AI는 동적 환경에서 효과적으로 정보를 수집하고 평가할 수 있습니다.

EQS의 개념과 구성 요소

 EQS는 다음과 같은 주요 구성 요소로 이루어져 있습니다.

  1. 쿼리(Query) : 환경에 대한 질문
  2. 제너레이터(Generator) : 후보 항목 생성
  3. 테스트(Test) : 후보 항목 평가 기준
  4. 컨텍스트(Context) : 쿼리의 기준점
EQS 기본 구성 요소

EQS 쿼리 생성

  1. 콘텐츠 브라우저에서 우클릭
  2. AI > Environment Query 선택
  3. 쿼리 이름 지정 (예 : EQS_FindCoverPoint)

기본 EQS 구성 방법

  1. 제너레이터 설정
  • 'Simple Grid' 등의 제너레이터 선택
  • 그리드 크기, 간격 등 설정
  1. 테스트 추가
  • 'Distance' 등의 테스트 추가
  • 테스트 파라미터 설정 (예 : 최소/최대 거리)
  1. 점수 계산 방법 설정
  • 테스트별 가중치 부여
  • 정규화 방법 선택 (예 : 선형, 제곱)

 예제 : 은신 위치 찾기 EQS

Generator: Simple Grid
Tests:
1. Distance (to querier)
2. Visibility (from enemy)
3. Cover (against enemy)
 
Scoring: 
- Distance: weight 0.3
- Visibility: weight 0.4
- Cover: weight 0.3
은신 위치 찾기 EQS 구성

EQS와 비헤이비어 트리 연동

 비헤이비어 트리에서 EQS를 사용하여 의사 결정을 내리는 방법

  1. 비헤이비어 트리에 'Run EQS Query' 태스크 추가
  2. 해당 태스크에 EQS 쿼리 할당
  3. 쿼리 결과를 블랙보드에 저장

 예제 : 전투 중 은신 위치 선택

[Selector]
|-- [Is Under Attack?]
    |-- [Run EQS Query: FindCoverPoint]
    |-- [Move To Best EQS Result]
|-- [Continue Combat]
EQS와 비헤이비어 트리 연동

동적 환경에서의 EQS 활용

 실시간으로 변화하는 환경에 대응하기 위한 EQS 활용

  1. 주기적 쿼리 실행
  • 일정 간격으로 EQS 쿼리 재실행
  • 환경 변화 반영
  1. 동적 컨텍스트 사용
  • 적의 현재 위치를 컨텍스트로 사용
  • 상황에 따라 컨텍스트 동적 변경
  1. 조건부 테스트
  • 게임 상태에 따라 테스트 가중치 조정
  • 특정 조건에서만 활성화되는 테스트 추가

 예제 : 동적 전투 위치 선택

EQS_CombatPosition
Context: CurrentEnemy
Generator: Donut (around enemy)
Tests:
1. Distance to enemy
2. Line of sight to enemy
3. Distance to allies
4. Cover availability
 
Dynamic Adjustment:
- If (LowHealth): Increase weight of 'Cover' test
- If (LowAmmo): Decrease radius of Donut generator
동적 EQS 활용 예시

EQS 결과 시각화 및 디버깅

  1. 에디터에서의 시각화
  • EQS 에디터에서 'Preview' 버튼 사용
  • 테스트 결과를 색상으로 표시
  1. 게임 내 디버그 뷰
  • 콘솔 명령어 사용 (예 : ShowDebug EQS)
  • 실시간으로 EQS 결과 확인
  1. 로깅
  • 중요 결정 지점에 로그 추가
  • 선택된 항목의 점수와 속성 기록
EQS 디버깅 화면

성능 고려사항 및 최적화

 EQS는 강력하지만 잘못 사용하면 성능에 큰 영향을 줄 수 있습니다.

  1. 쿼리 빈도 최적화
  • 필요한 경우에만 쿼리 실행
  • 결과 캐싱 고려
  1. 제너레이터 효율성
  • 과도하게 많은 항목 생성 자제
  • 상황에 적합한 제너레이터 선택
  1. 테스트 복잡도 관리
  • 고비용 테스트 최소화 (예 : 복잡한 가시성 체크)
  • 테스트 순서 최적화 (저비용 테스트 먼저 실행)
  1. 컨텍스트 범위 제한
  • 필요한 범위 내에서만 쿼리 실행
  • 전체 맵 대신 관련 영역만 고려

 예제 : 최적화된 EQS 구성

EQS_OptimizedCombatPosition
Generator: Simple Grid (limited radius)
Tests:
1. Fast Distance Check
2. Simple Visibility Test
3. Detailed Analysis (only for top candidates)
 
Execution:
- Run every 2 seconds
- Cache results for 1 second
최적화된 EQS 구성

고급 EQS 활용 기법

  1. 계층적 쿼리
  • 대략적인 영역 선택 후 세부 위치 결정
EQS_1: Select general area
EQS_2: Find specific position within selected area
  1. 동적 테스트 구성
  • 게임플레이 상황에 따라 테스트 세트 변경
If (Stealth Mode):
   Use Visibility and Noise tests
Else:
   Use Distance and Cover tests
  1. AI 협업을 위한 EQS
  • 다른 AI의 위치와 의도를 고려한 쿼리
Test: Distance to allies
Test: Complementary position to team formation

 EQS는 AI의 상황 인식과 의사 결정 능력을 크게 향상시킬 수 있는 강력한 도구입니다. 적절히 구성된 EQS는 동적이고 지능적인 AI 행동을 가능하게 하며, 이는 게임플레이의 깊이와 몰입도를 높이는 데 기여합니다.

 효과적인 EQS 활용을 위해서는 게임의 요구사항을 정확히 이해하고, 적절한 쿼리와 테스트를 설계하는 것이 중요합니다. 또한, 성능과 정확도 사이의 균형을 잘 유지해야 하며, 지속적인 테스트와 최적화가 필요합니다.

 EQS를 비헤이비어 트리, FSM(유한 상태 기계) 등 다른 AI 시스템과 잘 통합하면, 더욱 정교하고 적응력 있는 AI 행동을 구현할 수 있습니다. 이는 플레이어에게 더 도전적이고 흥미로운 게임 경험을 제공하는 데 큰 도움이 됩니다.