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]
AI 이동 블루프린트 예시

장애물 회피 로직 구현

  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
  • 내비게이션 메시 및 경로 시각화
  1. 성능 모니터링
  • 프로파일러 사용하여 경로 탐색 비용 분석
  • 과도한 경로 재계산 식별 및 최적화
  1. 메모리 사용 최적화
  • 적절한 타일 크기 설정
  • 불필요한 영역 제외
내비게이션 시스템 디버깅 화면

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

  1. 경로 탐색 최적화
  • 계층적 내비게이션 메시 사용
  • A* 알고리즘 변형 적용 (Jump Point Search 등)
  1. 동시 경로 탐색 제한
  • 경로 탐색 요청 큐 구현
  • 프레임당 경로 탐색 수 제한
  1. LOD (Level of Detail) 시스템 구현
  • 거리에 따른 AI 복잡도 조절
  • 원거리 AI는 간단한 이동 로직 사용
  1. 공간 분할
  • 월드를 섹터로 나누어 관리
  • 관련 섹터의 AI만 상세 시뮬레이션

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

Event Tick
    |
[Get Distance to Player]
    |
[Branch: Distance > Threshold?]
    |
[Use Simple Movement] <-- [True]
    |
[Use Full Pathfinding] <-- [False]
AI LOD 시스템 다이어그램

고급 내비게이션 기법

  1. 동적 내비게이션 메시 수정
  • 런타임 중 내비게이션 메시 갱신
  • 파괴 가능한 환경 대응
  1. 커스텀 내비게이션 쿼리 필터
  • 특정 AI 유형에 맞는 경로 탐색
  • 지형 특성 고려 (예 : 은신 선호)
  1. 군중 시뮬레이션 통합
  • 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 이동 로직을 개발해야 합니다. 특히 대규모 AI 시스템에서는 성능 최적화가 매우 중요하며, LOD 시스템, 공간 분할 등의 기법을 적절히 활용해야 합니다.

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

 지속적인 테스트와 최적화를 통해 다양한 상황에서 안정적으로 작동하는 내비게이션 시스템을 구축하는 것이 중요합니다. 이는 플레이어에게 더 도전적이고 흥미로운 AI 상호작용을 제공하는 데 큰 도움이 될 것입니다.