Behavior Tree

감사콩·2025년 11월 19일

유니티

목록 보기
20/29

시작 전에


개인 프로젝트 준비를 위해 당분간 TIL 작성은 간결하게 진행하겠다.
대신 이번 프로젝트도 마찬가지로 제작일지를 동시에 작성 예정.

기본적으로 코드로 복습 예정인데
예시 코드는 기존과 같이 비공개로 업로드 예정.



서론


Behavior Tree에 대해 알아보고
유니티에서 지원하는 Unity Behavior - Behavior Graph에 대해 알아보자.



Behavior Tree


나무 모양의 계층적 구조를 가지며, 루트 노드(Root Node) 에서 시작하여 자식 노드들을 순회하며 실행


왜 쓰냐?

유한 상태 머신 FSM의 문제점

  • 상태나 행동이 복잡해질수록 관리가 어려워지고, 대화하기 위한 자료로써의 도식화도 어려움

따라서 대규모 시나리오 관리 등의 복잡한 사례에서 FSM의 대안으로 활용됨.


기본 구조와 동작 원리


A. Tick 시스템

트리의 루트 노드부터 시작하여 로직을 한 번 순회하도록 지시하는 주기적인 신호
주로 Update 루프에 맞춰 프레임마다 발생.


B. 반환 상태(Return Status)

Success, Failure, Running


C. 행동 트리의 핵심 노드 유형


BT의 노드는 크게 세 가지 범주로 나뉘며, 이들이 결합하여 복잡한 행동을 구현.

1. Composite Node

자식 노드의 실행 순서와 규칙을 정의하는 제어 노드.
아래 나열된 3가지 이외에 데코레이터 노드 등이 존재.

1) Sequence

자식 노드들을 순서대로 실행, 하나라도 Failure를 반환하면 Failure를 반환하고 중단

2) Selector

자식 노드들을 순서대로 실행, 하나라도 Success를 반환하면 Success를 반환하고 중단

3) Parallel

여러 자식 노드를 동시에 실행, 성공/실패 임계값(Threshold)을 설정하여
일정 수 이상의 자식이 성공/실패하면 자신도 해당 결과를 반환.


2. Action Node


트리의 가장 아래(리프 노드)에 위치하며, AI가 실제로 수행하는 단일 행동을 정의

  • 실제 함수 호출을 담당
  • 행동을 완료하면 SuccessFailure를 반환, 처리 중이면 Running을 반환

3. Decorator Nodes

추후에 더 배울 예정.


동작 그래프(Behavior Graph)


유니티 6에 추가된 BT 구조 가시화 그래프

패키지매니저에서 Behavior 추가!

노드의 종류는 크게 2가지로 구성.


1. 제어 흐름 노드 (Control Flow Node)


로직이 그래프를 따라 어떻게 흐를지 결정

기존 BT 노드에서
Composite Nodes (Sequence, Selector)
Decorator Nodes (Conditional, Loop) 와 흡사.


2. 액션 노드 (Action Node)


실제 행동(Task)을 정의

아래 Self 로 시작하는 액션을 통해
C# 스크립트와 쉽게 상호 작용하여 그래프와 데이터를 주고받을 수 있음.

기존 BT 노드에서 Leaf/Action Nodes와 흡사.


BlackBoard

칠판!

그래프에서 사용되는 모든 변수를 중앙에서 관리하는 시스템
그래프 내의 모든 노드가 접근하거나 수정 가능


요약

이번에도 기능에 치우친 내용이라
추후 복습을 통해 반복 숙달이 필요하다.

profile
안녕하시와요

0개의 댓글