icon안동민 개발노트

내비게이션 시스템을 통한 기본 AI 이동


 언리얼 엔진의 내비게이션 시스템은 AI 캐릭터가 복잡한 환경에서 효율적으로 이동할 수 있도록 지원합니다.

 이 시스템을 통해 장애물 회피, 경로 탐색, 동적 환경 대응 등 다양한 이동 관련 기능을 구현할 수 있습니다.

내비게이션 시스템 기본 개념

  1. 내비게이션 메시(NavMesh) : AI가 이동 가능한 영역을 표현하는 3D 메시
  2. 경로 탐색 : 시작점에서 목표점까지의 최적 경로를 찾는 과정
  3. 장애물 회피 : 정적 및 동적 장애물을 피해 이동하는 기능

내비게이션 메시 생성 및 설정

  1. 레벨에 NavMeshBoundsVolume 배치
  2. 'Build' 메뉴에서 'Build Paths' 실행
  3. 내비게이션 메시 속성 조정 (에이전트 높이, 반경 등)
World Settings:
- Nav Mesh Tile Size: 1024
- Agent Radius: 34
- Agent Height: 144

AI 컨트롤러 기반 경로 탐색 및 이동 구현

  1. AI 컨트롤러 블루프린트 생성
  2. SimpleMoveToActor 또는 MoveToLocation 함수 사용

 예제 : 목표 지점으로 이동

Event Begin Play
    |
[Get Player Character]
    |
[Simple Move To Actor]

장애물 회피 로직 구현

  1. 캐릭터 무브먼트 컴포넌트 설정
  2. 회피 반경 및 회피 높이 조정
Character Movement Component:
- Agent Radius: 34
- Agent Height: 144
- Avoid Collision: True

 예제 : 동적 장애물 감지 및 회피

Event Tick
    |
[Raycast Forward]
    |
[Branch: Hit Obstacle?]
    |
[Adjust Movement Direction]

동적 장애물 처리

  1. 동적 장애물에 NavMeshObstacle 컴포넌트 추가
  2. 장애물 속성 설정 (크기, 회피 반경 등)
NavMeshObstacle Component:
- Radius: 100
- Height: 200
- Can Ever Affect Navigation: True

내비게이션 링크 기반 복잡한 환경 이동

  1. Nav Link Proxy 액터 배치
  2. 시작점과 끝점 설정
  3. 링크 타입 지정 (점프, 사다리 등)

 예제 : 점프 지점 구현

Nav Link Proxy:
- Start Point: (0, 0, 0)
- End Point: (300, 0, 100)
- Direction: One Way
- Navigation Link Type: Jump

내비게이션 시스템 디버깅 및 최적화

 1. 시각적 디버깅

  • 콘솔 명령어 사용: show Navigation
  • 내비게이션 메시 및 경로 시각화

 2. 성능 모니터링

  • 프로파일러 사용하여 경로 탐색 비용 분석
  • 과도한 경로 재계산 식별 및 최적화

 3. 메모리 사용 최적화

  • 적절한 타일 크기 설정
  • 불필요한 영역 제외

성능 영향 및 대규모 AI 시스템 최적화

 1. 경로 탐색 최적화

  • 계층적 내비게이션 메시 사용
  • A* 알고리즘 변형 적용 (Jump Point Search 등)

 2. 동시 경로 탐색 제한

  • 경로 탐색 요청 큐 구현
  • 프레임당 경로 탐색 수 제한

 3. LOD (Level of Detail) 시스템 구현

  • 거리에 따른 AI 복잡도 조절
  • 원거리 AI는 간단한 이동 로직 사용

 4. 공간 분할

  • 월드를 섹터로 나누어 관리
  • 관련 섹터의 AI만 상세 시뮬레이션

 예제 : 거리 기반 AI LOD 시스템

Event Tick
    |
[Get Distance to Player]
    |
[Branch: Distance > Threshold?]
    |
[Use Simple Movement] <-- [True]
    |
[Use Full Pathfinding] <-- [False]

고급 내비게이션 기법

 1. 동적 내비게이션 메시 수정

  • 런타임 중 내비게이션 메시 갱신
  • 파괴 가능한 환경 대응

 2. 커스텀 내비게이션 쿼리 필터

  • 특정 AI 유형에 맞는 경로 탐색
  • 지형 특성 고려 (예 : 은신 선호)

 3. 군중 시뮬레이션 통합

  • RVO(Reciprocal Velocity Obstacle) 알고리즘 적용
  • 대규모 AI 그룹의 자연스러운 이동 구현

 예제 : 커스텀 내비게이션 쿼리 필터

Custom NavQueryFilter:
- Area Costs:
  - Default: 1.0
  - Water: 5.0
  - Rough Terrain: 2.0
- Filter Flags:
  - Avoid Enemies
  - Prefer Cover

 내비게이션 시스템은 AI 캐릭터에게 지능적이고 자연스러운 이동 능력을 부여하는 핵심 요소입니다.

 내비게이션 시스템을 통해 게임 내 AI의 현실감과 몰입도를 크게 향상시킬 수 있습니다.

 효과적인 내비게이션 시스템 구현을 위해서는 동적 환경 변화에 대응할 수 있는 유연한 시스템 설계가 필요합니다.

 내비게이션 링크, 동적 장애물 처리 등을 통해 복잡하고 변화하는 환경에서도 AI가 자연스럽게 이동할 수 있도록 해야 합니다.