[UE5] Behavior Tree

Jaeyoung Ko·2025년 2월 7일

Behavior Tree


BT는 NPC가 해야할 행동을 분석하고, 우선순위가 높은 행동부터 NPC가 실행할 수 있도록 트리 구조로 설계하는 기법이다.

앞서 설명해온 Behavior Tree에 관해 세부 사항을 정리해보았다.

BT에 대해서 알아야하는 주요한 내용은, BTTaskNode, BTService, BTDecorator 와 같은 클래스가 있다.





1. BTTaskNode (Behavior Tree Task Node)

BTTaskNode는 AI가 실제로 수행해야 하는 행동(Task)을 정의하는 노드입니다.
예를 들어, AI가 이동, 공격, 도망, 대기, 상호작용 등의 작업을 수행할 때 사용됩니다.

✔ BTTaskNode 특징
Behavior Tree에서 실제 행동을 수행하는 역할
ExecuteTask() 메서드를 통해 작업 실행
FinishLatentTask()를 사용하여 비동기 작업 완료 가능
작업이 끝나면 성공(Succeeded), 실패(Failed), 진행 중(InProgress) 등의 결과를 반환

1. BTTaskNode (Behavior Tree Task Node)

BTTaskNode는 AI가 실제로 수행해야 하는 행동인 Task을 정의하는 노드로, 이동/공격/추적/도망/대기 등의 작업을 수행할 때 사용한다.

✔ BTTaskNode 특징
Behavior Tree에서 실제 행동을 수행하는 역할
ExecuteTask() 메서드를 통해 작업 실행
FinishLatentTask()를 사용하여 비동기 작업 완료 가능
작업이 끝나면 성공(Succeeded), 실패(Failed), 진행 중(InProgress) 등의 결과를 반환

2. BTService (Behavior Tree Service)

BTService는 AI가 행동을 주기적으로 체크하면서 특정 로직을 수행할 수 있도록 도와주는 노드로 주로 AI의 상태를 지속적으로 업데이트하는 데 사용된다.

✔ BTService 특징
특정 주기마다 실행됨 (TickNode())
Blackboard의 값을 갱신하거나 AI의 상태를 감시
AI가 특정 상황에서 전략을 변경하도록 유도 가능
✔ BTService 기본 구조

✅ 주기적으로 Blackboard 값을 업데이트하여 AI의 전략을 실시간으로 변경할 수 있음
✅ 예를 들어, 적이 범위 안에 들어오면 공격 모드로 전환하거나, 적이 사라지면 순찰을 시작하는 등의 로직을 구현할 수 있음.

3. BTDecorator (Behavior Tree Decorator)

BTDecorator는 조건을 검사하는 역할을 하는 노드로 특정 행동이 실행되기 전, 조건을 만족하는지 판단하는 용도로 사용된다.

✔ BTDecorator 특징
ConditionCheck() 메서드를 통해 특정 조건을 검사
행동이 실행될지 여부를 결정
Blackboard 값에 따라 분기 가능

✅ AI가 적이 가까이 있을 때만 공격하도록 제한할 수 있음
✅ 특정 조건이 충족되지 않으면 Behavior Tree의 다른 분기를 실행하도록 유도 가능.

ex. Behavior Tree 전체 구조 예제

아래와 같은 구조로 Behavior Tree를 설계할 수 있.
[Root]
├── [Sequence]
│ ├── [BTService_CheckEnemy] // 주기적으로 적 탐색
│ ├── [BTDecorator_IsEnemyNear] // 적이 근처에 있는지 검사
│ ├── [BTTask_Attack] // 적이 근처에 있다면 공격
│ ├── [BTTask_MoveToTarget] // 적이 멀리 있으면 이동
✔ 실행 흐름

BTService_CheckEnemy가 주기적으로 실행되어 Blackboard에 적을 저장
BTDecorator_IsEnemyNear가 적의 거리를 확인
적이 가까우면 BTTask_Attack 실행 (공격)
적이 멀면 BTTask_MoveToTarget 실행 (이동)

recap: BT의 주요 구성 요소 정리

  • BTTaskNode : 실제 수행하는 특정 행동 지시
  • BTService : BB의 데이터 기반하여 주기적으로 실행되어 상태 갱신
  • BTDecorator : 행동 실행 여부를 결정하는 조건 검사
  1. 결론
    ✅ BTTaskNode: AI가 실제로 수행하는 작업을 정의 (ex. 이동, 공격)
    ✅ BTService: AI의 상태를 지속적으로 갱신 (ex. 적 탐색)
    ✅ BTDecorator: 특정 조건을 만족할 때만 동작 수행 (ex. 근처에 적이 있을 때만 공격)
profile
안녕하세요, 고재영입니다. 언제나 즐겁게 살려고 노력합니다.

0개의 댓글