언리얼 엔진5 Basic - 행동 트리 모델의 이해

타입·2024년 4월 25일
0

언리얼 강의

목록 보기
18/47

행동 트리 모델의 이해 (Behavior Tree)

행동 트리 모델 개요

  • 행동 트리(Behavior Tree)의 역사
    2004년 개발사 번지의 헤일로2에서 인공지능을 설계하는데 사용
    우선순위와 트리 구조를 사용해 인공지능을 설계하는 기법
    FSM이 가지고 있던 문제를 해결하는 새로운 게임 인공지능 모델의 수립
  • 행동 트리 모델의 장점
    • 모듈화가 잘 되어 있어 확장이 자유롭다.
    • 트리를 기반으로 계층화가 잘 되어 있어, 복잡한 인공지능 모델을 쉽게 설계할 수 있다.
    • 다이어그램으로 인공지능 모델을 효과적으로 표현할 수 있다.
    • 제공되는 여러 편리한 부가 기능을 활용해 다양한 상황에 대해 손쉽게 제어할 수 있다.
  • 행동 트리 모델의 구성 요소
    트리에서 항상 왼쪽에 있는 노드에 우선 순위를 부여
    시작 상태를 설정할 필요 없이 왼쪽에서부터 깊이 우선 탐색을 시작
    • 행동을 중심으로 설계
    • 단 부모 노드에서 다수의 행동을 컨트롤
  • 컴포짓 노드 (Composite Node)
    • Selector: 여러 행동 중 하나의 행동을 지정
    • Sequence: 여러 행동을 모두 수행
    • Parallel: 여러 행동을 함께 수행
    • 행동에 대한 다양한 결과
      • Succeeded: 행동의 성공
      • Failed: 행동의 실패
      • Aborted: 외부 요인으로 인한 행동의 실패
      • InProgress: 행동 결과를 홀딩
    • 컴포짓 노드마다 다른 행동 결과 처리
      • Selector - 성공한 노드가 나오면 종료
      • Sequence - 실패한 노드가 나올 때까지 진행
  • 컴포짓 노드에 부착하는 다양한 추가 기능
    • Decorator: 컴포짓 노드가 실행되는 조건을 지정
    • Service: 컴포짓 노드가 활성화될 때 주기적으로 실행하는 부가 명령
    • Observer Aborts: 데코레이터 조건에 부합되면 컴포짓 내 활동을 모두 중단
  • 행동 트리 모델의 구현 예시
    전형적인 RPG 게임 플레이어에 대한 행동 트리 모델 예시
  • 플레이어 캐릭터는 PlayerController로 조종, NPC는 AIController 빙의
    • Auto 자동 빙의: 폰의 생성 및 AI 컨트롤러에 의한 빙의 시기 결정
    • AI 컨트롤러 클래스: 폰이 AI에 의해 컨트롤될 때 기본으로 사용할 AIController 클래스

실습코드

https://github.com/dnjfs/ArenaBattle/commit/221e59c01810f1f32bc5edb775882b0ba72ab2e4

  • AIModule 추가
    BehaviorTree와 BlackBoard와 같은 AI 기능을 사용하려면 uproject의 Modules에 "AIModule"을 추가해야함
  • BT 실행/중지
    • 실행: AAIController::RunBehaviorTree(UBehaviorTree*)
    • 중지: UBehaviorTreeComponent::StopTree()
profile
주니어 언리얼 프로그래머

0개의 댓글