icon안동민 개발노트

간단한 AI 의사결정 모델 구현


 이 절에서는 지금까지 학습한 AI 시스템 요소들을 통합하여 실제로 작동하는 AI 캐릭터를 만드는 과정을 단계별로 안내합니다.

 우리는 순찰, 추적, 공격, 도주 등의 기본적인 AI 행동을 구현하고 이들 간의 전환을 관리하는 의사결정 모델을 만들 것입니다.

1. AI 캐릭터 설정

 먼저 기본적인 AI 캐릭터를 설정합니다.

  1. Character 블루프린트 생성 (BP_AICharacter)
  2. AI Controller 블루프린트 생성 (BP_AIController)
  3. Behavior Tree와 Blackboard 생성
Character Components:
- Skeletal Mesh
- Character Movement
- AI Perception
 
AI Controller Settings:
- Behavior Tree: BT_AILogic
- Blackboard: BB_AIData

2. 센서 시스템 구성

 AI Perception 컴포넌트를 사용하여 시각과 청각 센서를 설정합니다.

AI Perception Component:
- Sight Config:
  - Sight Radius: 1000
  - Lose Sight Radius: 1500
  - Field of View: 90 degrees
- Hearing Config:
  - Hearing Range: 800

 센서 이벤트 처리

Event On Target Perceived:
  [Get Perceived Actor] --> [Set Blackboard Value "TargetActor"]
  [Get Stimulus Location] --> [Set Blackboard Value "LastKnownLocation"]

3. 내비게이션 시스템 설정

 레벨에 NavMesh를 생성하고, AI 캐릭터의 이동을 설정합니다.

  1. NavMesh Bounds Volume을 레벨에 배치
  2. AI 캐릭터의 Character Movement 컴포넌트 설정
Character Movement Component:
- Movement Mode: Walking
- Nav Movement: NavMesh

4. 비헤이비어 트리 구현

 기본적인 AI 행동을 구현하는 비헤이비어 트리를 만듭니다.

Root
|-- Selector
    |-- Sequence (Flee)
        |-- Is Health Low?
        |-- Find Safe Location (EQS)
        |-- Move To Safe Location
    |-- Sequence (Attack)
        |-- Has Target?
        |-- Is Target In Range?
        |-- Attack Target
    |-- Sequence (Chase)
        |-- Has Last Known Location?
        |-- Move To Last Known Location
    |-- Patrol
        |-- Get Patrol Point (EQS)
        |-- Move To Patrol Point

5. EQS 통합

 다양한 상황에 대응하는 EQS 쿼리를 만듭니다.

  1. 순찰 지점 선택 (EQS_PatrolPoints)
  2. 안전한 도주 위치 찾기 (EQS_SafeLocation)
EQS_SafeLocation:
- Generator: Donut
- Tests:
  - Distance to Player (Inverse score)
  - Visibility to Player (Inverse score)
  - Distance to Cover

6. 기본 AI 행동 구현

 각 주요 행동에 대한 태스크를 구현합니다.

  1. Patrol Task
[Get Patrol Point from EQS] --> [Move To Location]
  1. Chase Task
[Get Last Known Location] --> [Move To Location]
  1. Attack Task
[Get Target Actor] --> [Play Attack Animation]
                     --> [Apply Damage to Target]
  1. Flee Task
[Find Safe Location using EQS] --> [Move To Location]

7. 전환 로직 구현

 행동 간 전환을 관리하는 로직을 구현합니다.

 1. 블랙보드 키 설정

  • TargetActor
  • LastKnownLocation
  • CurrentHealth
  • IsUnderAttack

 2. 조건부 전환

[Is Health Low?] --> [Activate Flee Sequence]
[Has Target?] --> [Activate Chase/Attack Sequence]
[No Conditions Met] --> [Continue Patrol]

8. 난이도 조절 및 랜덤성 추가

 AI의 난이도를 조절하고 예측 불가능성을 추가합니다.

  1. 난이도 변수 설정
Variables:
- Accuracy: Float (0.0 - 1.0)
- ReactionTime: Float (seconds)
  1. 랜덤성 추가
Attack Task:
[Random Bool with Weight (Accuracy)] --> [Branch]
                                          |
                                 [Apply Damage] <-- [True]
                                          |
                                 [Miss Attack] <-- [False]
  1. 적응적 대응
Event On Damaged:
   [Increase Aggression] --> [Update Attack Pattern]

9. AI 시스템 디버깅

 효과적인 디버깅을 위한 도구를 구현합니다.

  1. 시각적 디버깅
Event Tick:
   [Draw Debug Sphere (Sight Radius)]
   [Draw Debug Cone (Field of View)]
   [Draw Debug Line (Current Path)]
  1. 로그 출력
[Print String] --> "AI State: " + Current Behavior
[Print String] --> "Target: " + TargetActor
  1. 행동 트리 시각화 활성화

10. 성능 최적화

 AI 시스템의 성능을 최적화합니다.

  1. Tick 간격 조절
AI Controller:
   [Set Tick Interval] --> 0.2 seconds
  1. LOD (Level of Detail) 시스템 구현
Function: UpdateAILOD
[Get Distance to Player] --> [Branch: Distance > Threshold?]
                                 |
                  [Set High Detail] <-- [False]
                                 |
                  [Set Low Detail] <-- [True]
  1. 동시 실행 AI 수 제한
Game Mode:
   [Limit Active AI] --> Max 10 Active AI

결론 및 추가 개선 방안

 이 기본적인 AI 의사결정 모델은 다양한 게임플레이 상황에 대응할 수 있는 기초를 제공합니다.

 추가적인 개선을 위해 다음과 같은 방안을 고려할 수 있습니다.

  1. 팀워크 AI : 여러 AI 캐릭터 간의 협력 행동 구현
  2. 학습형 AI : 플레이어의 행동 패턴을 학습하여 전략 조정
  3. 감정 시스템 : AI의 감정 상태에 따른 행동 변화 구현
  4. 고급 전투 시스템 : 다양한 무기와 기술을 활용한 전략적 전투 AI

 성능 최적화는 AI 시스템 구현에 있어 매우 중요한 부분입니다.

 특히 다수의 AI가 동시에 활동하는 경우 CPU 사용량과 메모리 관리에 주의를 기울여야 합니다.

 LOD 시스템과 같은 최적화 기법을 적절히 활용하여 게임의 전반적인 성능을 유지하면서도 풍부한 AI 행동을 구현할 수 있습니다.