Unreal Engine 5 AI

백승수·2025년 5월 14일

Unreal Engine 5 AI 시스템 정리

언리얼 엔진 5(UE5)는 강력하고 유연한 AI 시스템을 제공하여 개발자가 복잡하고 지능적인 NPC 동작을 구현할 수 있도록 지원함
이 시스템의 핵심 요소들을 이해하면 더욱 생동감 넘치는 게임을 만들 수 있음


개념

  • AI 캐릭터가 월드 내에서 이동할 수 있는 영역을 나타내는 3D 폴리곤 메시
  • AI는 이 NavMesh위에서만 경로를 탐색하고 이동할 수 있음
  • 벽이나 장애물처럼 이동 불가능한 영역은 제외됨

생성 방법

1. NavMesh Bounds volume 배치

  • 레벨에 NavMesh Bounds volume을 배치
  • AI가 이동할 영역을 포함하도록 크기 조절
  • 여러 개를 배치하여 복잡한 레벨 커버 가능

2. 자동 생성

  • 볼륨이 배치되면 에디터는 자동으로 해당 볼륨 내에 NavMesh를 생성
  • 단축키 P를 누르면 NavMesh 시각화를 토글 가능

주요 설정

프로젝트 설정 -> 엔진 -> 내비게이션 메시/ 내비게이션 시스템

  • Agent Radius/Height
    • AI 캐릭터의 크기에 맞춰 NavMesh가 생성될 때 고려하는 반경과 높이
  • Cell Size/Height
    • NavMesh를 구성하는 폴리곤(셀)의 크기와 높이 정밀도
    • 작을수록 정교하지만 생성 비용 증가

Dynamic NavMesh

  • 기본적으로 NavMesh는 정적이지만 런타임에 환경이 변하는 경우(예:문이 열리거나 닫힘, 다리가 파괴됨) NavMesh도 업데이트 되어야 함
  • Navigation Invoker Component
    • 플레이어나 특정 AI 주변에서만 동적으로 NavMesh를 생성하거나 업데이트하여 성능 최적화 가능
  • 내비게이션 관련 컴포넌트(예:NavRelevantComponent를 가진 액터)의 속성 변경 시 NavMesh가 자동으로 리빌드되도록 설정할 수 있음

AI Controller

개념

  • 폰(Pawn, AI 캐릭터의 몸체)을 제어하는 두뇌 역할을 하는 액터
  • 플레이어 컨트롤러가 플레이어 입력을 받아 폰을 제어하는 것처럼 AI 컨트롤러는 AI로직(예:Behavior Tree)을 실행하여 폰을 제어

주요 기능

  • Behavior Tree 실행
  • 감각 시스템을 통한 환경 정보 수집
  • 경로 탐색 및 이동 명령

생성 및 할당

1. AIController 클래스를 상속받는 블루프린트 또는 C++ 클래스 생성

2. AI 캐릭터의 블루프린트 Detail 패널 -> Pawn 섹션 -> AI Controller Class 변경

3. 레벨에 AI 캐릭터를 배치하면 자동으로 해당 AI 컨트롤러가 스폰되어 빙의(Possess)


Behavior Tree/BT

개념

  • AI의 의사 결정 과정을 시각적으로 표현, 실행하는 계층적인 트리 구조
  • 다양한 노드들을 조합하여 복잡한 AI 행동 패턴을 만듦

주요 구성 요소(노드 유형)

  • Root Node
    • 행동 트리의 시작점. 단 하나의 자식만 가질 수 있음
  • Composite Nodes(컴포짓 노드)
    • 자식 노드들의 실행 순서나 조건을 제어
    • Selector(선택자)
      • 자식 노드들을 왼쪽에서 오른쪽 순서대로 실행
      • 하나라도 성공하면 즉시 성공을 반환하고 나머지 자식들은 실행하지 않음
      • 모두 실패해야 실패를 반환
      • 용도
        • 여러 가능한 행동 중 우선순위가 높은 것부터 시도할 때 사용
    • Sequence(시퀀서)
      • 자식 노드들을 왼쪽에서 오른쪽 순서대로 실행
      • 하나라도 실패하면 즉시 실패를 반환하고 나머지 자식들은 실행하지 않음
      • 모두 성공해야 성공을 반환
      • 용도
        • 순차적으로 완료되어야 하는 일련의 행동들을 묶을 때 사용
    • Simple Parallel(단순 병렬)
      • 주 테스크(Main Task)와 백그라운드 트리(Background Tree)를 동시에 실행
      • 주 테스크가 완료되거나 백그라운드 트리가 먼저 완료되면 전체 노드가 종료될 수 있음
      • 용도
        • 이동하면서 주변을 살피거나, 특정 행동을 하면서 다른 조건을 계속 체크할 때 사용
  • Decorators(데코레이터)
    • 특정 조건이 충족될 때만 하위 트리나 노드의 실행을 허용하거나 막는 '조건문'역할
  • Services(서비스)
    • 특정 서브트리가 활성화되어있는 동안 주기적으로 실행되는 로직
    • 주로 블랙보드 값을 업데이트 하거나 주변 환경을 체크하는데 사용
  • Tasks(테스크)
    • AI가 실제로 수행하는 '행동'단위
    • 트리거 가장 말단에 위치

실행 흐름

  • 루트에서 시작하여 왼쪽에서 오른쪽으로, 위에서 아래로 트리를 탐색
  • 컴포짓 노드의 규칙에 따라 자식 노드들이 실행
  • 데코레이터의 조건을 만족해야 하위 노드가 실행될 수 있음
  • 서비스는 연결된 서브트리가 활성화된 동안 주기적으로 실행
  • 테스크가 실행되면 성공(Succeeded) 도는 실패(Failed)를 반환, 때로는 진행 중(In Progress) 상태를 가질 수 있음

생성 및 사용

1. 콘텐츠 브라우저에서 우클릭 -> AI -> Behavior Tree 생성

2. 행동 트리 에디터에서 노드들을 조합하여 AI 로직 구성


Blackboard(블랙 보드)

개념

  • 행동 트리와 AI 컨트롤러 간에 데이터를 공유하고 저장하는데 사용되는 AI의 기억 장소
  • 행동 트리는 직접적인 변수를 가지기보다는 블랙보드의 데이터를 읽고 쓰면서 의사 결정을 내림

주요 특징

  • 키-값 저장소
    • 다양한 타입의 데이터를 '키(Key)'라는 이름으로 저장
  • 행동 트리와의 연동
    • 행동 트리의 서비스, 데코레이터, 테스크 노드들은 이 블랙보드의 키 값을 참조하거나 업데이트
  • 데이터 지속성
    • AI가 특정 상태 정보를 기억하고 다음 결정에 사용할 수있도록 함(예:마지막으로 본 적의 위치, 현재 순찰 지점)

생성 및 사용

1. 콘텐츠 브라우저 우클릭 -> AI -> Blackboard 생성

2. 블랙보드 에디터에서 필요한 키들을 추가 -> 데이터 타입 설정

3. 행동 트리 에셋의 디테일 패널에서 생성한 Blackboard 지정

4. AI 컨트롤러나 서비스에서 블랙보드 컴포넌트를 통해 값을 설정하거나 가져옴

0개의 댓글