내일배움캠프_언리얼9기

내일배움캠프 48일차 TIL 2026/06/30

begin-play 2026. 6. 30. 21:06

[TIL] Unreal Engine: 비헤이비어 트리(Behavior Tree) 개념 및 사용법

1. 비헤이비어 트리(Behavior Tree)란?

비헤이비어 트리는 AI의 의사결정 과정을 트리 구조(Tree Structure)로 시각화하여 관리하는 툴입니다. 기존의 FSM(유한 상태 머신)보다 확장성이 뛰어나며, 복잡한 조건을 계층적으로 처리하기에 유리합니다.

  • 실행 방향: 왼쪽에서 오른쪽(Left-to-Right), 위에서 아래(Top-to-Bottom)로 실행됩니다.
  • 반환 값: 각 노드는 실행 후 Success(성공), Failure(실패), Running(실행 중) 중 하나의 상태를 부모 노드에 반환합니다.

2. 핵심 구성 요소

비헤이비어 트리는 크게 트리(Tree) 본체와 데이터 저장소인 블랙보드(Blackboard)로 나뉩니다.

2.1 블랙보드 (Blackboard)

  • 역할: AI의 '기억 장치' 또는 '데이터 에셋'입니다.
  • 특징: 타깃 인지 여부, 현재 체력, 순찰 지점(Vector) 등 AI가 의사결정을 내릴 때 필요한 변수들을 저장합니다. 비헤이비어 트리는 이 블랙보드의 값들을 읽고 쓰며 행동합니다.

2.2 노드(Node) 종류

비헤이비어 트리를 구성하는 노드는 크게 4가지로 분류됩니다.

노드 타입 종류 설명
Composite (합성) Selector 자식 노드 중 하나라도 성공하면 즉시 실행을 중단하고 성공을 반환합니다. (우선순위 처리에 유용)
  Sequence 자식 노드들이 모두 성공할 때까지 차례대로 실행합니다. 하나라도 실패하면 즉시 중단하고 실패를 반환합니다.
Task (작업) Move To, Wait 등 실제 행동을 수행하는 잎(Leaf) 노드입니다. 이동, 공격, 대기 등의 구체적인 명령을 내립니다.
Decorator (조건) Blackboard 등 조건문(If) 역할을 합니다. 노드의 상단에 부착되어 해당 노드의 실행 여부를 결정합니다.
Service (서비스) Distance Check 등 주기적으로 실행되는 노드입니다. 복합/작업 노드에 부착되어 주로 블랙보드의 데이터를 업데이트할 때 사용합니다.

3. 비헤이비어 트리 기본 사용법 (Workflow)

AI를 실제로 구동하기 위한 일반적인 단계는 다음과 같습니다.

Step 1: 에셋 생성 및 연결

  1. 콘텐츠 브라우저에서 인공지능(Artificial Intelligence) -> 비헤이비어 트리와 블랙보드를 각각 생성합니다.
  2. 비헤이비어 트리 에셋을 열고, 우측 Details(디테일) 패널에서 사용할 블랙보드 에셋을 연동합니다.

Step 2: AI 컨트롤러(AI Controller) 설정

  1. C++ 또는 블루프린트로 AI Controller를 상속받는 클래스를 생성합니다.
  2. OnPossess(또는 블루프린트의 BeginPlay) 이벤트에서 Run Behavior Tree 노드를 호출하고, 방금 만든 비헤이비어 트리를 지정합니다.
  3. 캐릭터(Pawn) 블루프린트의 디테일 패널에서 AI Controller Class를 방금 만든 컨트롤러로 설정합니다.

Step 3: 트리 로직 설계

  1. Root 노드 아래에 Selector 또는 Sequence를 연결합니다.
  2. 데이터를 기반으로 조건별 분기를 태우고 싶다면 노드 우클릭 후 Add Decorator -> Blackboard를 추가하여 조건을 설정합니다.
  3. 주기적인 타깃 탐색이 필요하다면 Add Service를 통해 주기적으로 블랙보드 값을 갱신하는 로직을 붙여줍니다.