[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: 에셋 생성 및 연결
- 콘텐츠 브라우저에서 인공지능(Artificial Intelligence) -> 비헤이비어 트리와 블랙보드를 각각 생성합니다.
- 비헤이비어 트리 에셋을 열고, 우측 Details(디테일) 패널에서 사용할 블랙보드 에셋을 연동합니다.
Step 2: AI 컨트롤러(AI Controller) 설정
- C++ 또는 블루프린트로 AI Controller를 상속받는 클래스를 생성합니다.
- OnPossess(또는 블루프린트의 BeginPlay) 이벤트에서 Run Behavior Tree 노드를 호출하고, 방금 만든 비헤이비어 트리를 지정합니다.
- 캐릭터(Pawn) 블루프린트의 디테일 패널에서 AI Controller Class를 방금 만든 컨트롤러로 설정합니다.
Step 3: 트리 로직 설계
- Root 노드 아래에 Selector 또는 Sequence를 연결합니다.
- 데이터를 기반으로 조건별 분기를 태우고 싶다면 노드 우클릭 후 Add Decorator -> Blackboard를 추가하여 조건을 설정합니다.
- 주기적인 타깃 탐색이 필요하다면 Add Service를 통해 주기적으로 블랙보드 값을 갱신하는 로직을 붙여줍니다.
'내일배움캠프_언리얼9기' 카테고리의 다른 글
| 내일배움캠프 50일차 TIL 2026/07/02 (0) | 2026.07.02 |
|---|---|
| 내일배움캠프 49일차 TIL 2026/07/01 (0) | 2026.07.01 |
| 내일배움캠프 47일차 TIL 2026/06/29 (0) | 2026.06.29 |
| 내일배움캠프 46일차 TIL 2026/06/26 (0) | 2026.06.26 |
| 내일배움캠프 45일차 TIL 2026/06/25 (0) | 2026.06.25 |