Unity 개발일지

[Unity] Behaviour Tree 이론편 본문

Unity 개발

[Unity] Behaviour Tree 이론편

아머르 2024. 7. 29. 15:03

[Behaviour Tree란?]

간단히 말하면 Behaviour(행동)을 Tree 구조로 만들어 AI의 행동을 제어하는 것이다. BT라고 줄여서 쓰기도 한다.

 

Tree는 Node를 저장하는 하나의 컨테이너로

Node는 int, float, string, char 등의 기본적인 타입을 저장하는 공간이라고 생각하는 경우가 많은데,

Node는 사용자가 정의할 수 있는, 혹은 미리 정의된 모든 타입이 저장될 수 있다.

 

즉, Behaviour Tree의 Node 내부에 저장되는 것은 행동이라 말하는 코드조각들을 저장하는 것이다.

 

<탐색 순서>

Behaviour Tree에는 Tree의 Root역할을 하는 Task가 존재하며, 깊이 우선 순위(DFS)로 작업을 실행

작업의 순서는 왼쪽에서 시작하여 -> 오른쪽 순서로 진행

 

 

<구성 요소>

1. 루트(root) - 현재 상태를 정해주는 역할

 

2. 흐름 제어 노드 (flow-control node)

자식 노드들을 왼쪽에서 오른쪽 순으로 진행

먼저 진행해야 할 자식 노드가 왼쪽에 위치해야 한다.

자식 노드들 중에서 실패(Failure)한 노드가 있을 때까지 진행

여러 행동을 순서대로 진행해야 할 때 사용하기 좋다.

 

 - Sequence node : and 역할을 하는 노드

 

 

 - Selector node : or 역할을 하는 노드

 

3. 리프 노드(leaf node, action node 라고도 함) : 실제 행동이 들어가 있는 노드

 

 

 

 

루트에서 여러 흐름제어 노드를 타고 내려가 최종적으로 리프 노드에 도달하는 형태

때문에 트리의 리프 노드는 항상 Action을 담고 있어야 하고 루트와 리프를 제외하고는 전부 흐름 제어 노드들이 차지한다.

 

 

<노드 상태>

각 노드는 3가지 상태중 하나를 가질 수 있으며 어떻게 구성했냐에 따라 다르겠지만 대부분 아래 3가지로 구분한다.

 - Success 

 - Failure

 - Running

 

 

 

<다양한 AI 행동패턴 설계방법 참고>

 

FSM - HFSM - BT 구조

오늘 친구들과 이야기를 하면서 FSM과 BT(Behavior Tree)에 대해 이야기를 나누었습니다. 생각난 김에 해당 구조들에 대해 글을 작성해 보려고 합니다. 각 구조들은 AI 행동 패턴을 설계하는등 다양한

neulsang-day.tistory.com

 

[기타 참고]

 

유니티 Behaviour Designer란?

Behaviour Tree, 줄여서 BT라고 불리는 이 용어는 예전부터 들어왔었습니다. 하지만 BT의 실용성에 대해 그닥 느끼지 못했기에 지금까지 사용하지 않았지만 FSM Pattern을 직접 제작해보고 난 이후 BT의

wlsdn629.tistory.com

 

 

[Unity] Behaviour Tree에 관한 간단한 이야기

개요 지금까지는 FSM를 통해서 간단한 AI들만 만들어 왔습니다. 다만 FSM은 확실히 한계가 있고 유지보수에 있어서 코드를 보는 게 많이 힘들었습니다. 그래서 BT라는 게 있다! 는 걸 알고는 있었는

husk321.tistory.com

 

[Unity] Behavior Tree(BT) 만들어보기

1. Behavior Tree

leekangw.github.io

 

반응형