게임 AI - Behavior Tree

Behavior Tree의 개념에 대하여
GameAIGameBehaviorTree행동트리행동패턴FSMStatePatternState
avatar
2025.03.20
·
12 min read

안녕하세요!
오늘은 게임 클로닝 프로젝트를 설명하기 전에, 개념적 설명이 있는 포스팅이 필요하다고 생각해서, 개념 포스팅을 작성해보려 합니다.

게임 캐릭터나, 몬스터, 하물며 RTS 게임 같은 경우는 스타크래프트의 성큰이나 포톤캐논 등이 AI를 가가지고 알아서 동작하는 것이 필요합니다.
보통 이럴 때, 작성한 대로 움직여 주는 AI를 심어주어야 합니다.

AI 를 구현하는 데에는 여러 방식이 필요합니다만, 오늘은 BehaviorTree(이하, BT) 에 대해서 설명을 조금 해보려고 합니다.

Behavior Tree란 무엇일까?


BT 이전에, 사용하기 더욱 사용하기 쉬운 도구들은 얼마든지 있습니다.
FSM, HFSM, State Pattern 등이 있을 것 같네요.
이것들에 대해선 다음에 알아보도록 하겠습니다.

기본 개념은 "게임에서 Behavior(행동)을 Tree 구조로 만들어서 AI 행동을 제어하는 것" 입니다.
설명을 보면 어려울 수 있겠지만, 그렇지 않습니다.
Tree는 여기서 Node들을 가진 하나의 컨테이너, 그냥 공간이라고 생각하면 됩니다.
그리고 Node는 무엇이냐면 원시적인 자료형을 등록할 수 있고, 사용자가 정의하려고하는 모든 것들이라고 할 수 있습니다.
사용자가 정의하려고 하는 행동 함수라던지, UID 변수라던지 등을 가지고 있는 하나의 클래스나 구조체라고 생각할 수 있습니다.

그리고, 개념에 따른 BT의 기본 컨셉은 아래와 같습니다.

  • Root 노드를 시작으로 구성한 BT leaf 까지 실행하는 것이 기본 개념니다.

  • 평가를 시작한 트리 노드는 구성에 따라 최하단 leaf 까지 실행되지 않을수도 있다.

  • 트리 노드가 한 개 이상의 자식 노드가 있다면 평가 및 실행할 수 있다.

  • 실행에 대한 순서는 DFS 검색 알고리즘의 순서 기반으로 실행된다.

    • 트리 순회에서는 Pre-Order 순서, 이는 DFS의 한 종류라고 한다.

  • 노드는 반드시 평가에 대한 결과 값을 리턴한다.(Success, Failure, Running)

작동 원리는 어떻게 되는가?


작동 원리는 기본적으로 최상위 루트, 자식 중 좌측에서 우측으로, 깊이 우선으로 탐색을 진행합니다.
DFS를 떠올리시면 BT의 작동 순서를 정확하게 이해할 수 있습니다.

원리는 간단하여 아래 첨부 이미지를 보시면 이해가 빠를 것으로 생각됩니다.

4203

이 이미지는 로봇의 탐색 계획을 BT모델로 구성한 것입니다.

보면 Retrieved 가 검색됨이라는 의미를 가지고 있어, 검색하지 않았다면,
1) Search on the Floor : 바닥을 찾아볼 것이고
2) Search in the Drawers : 서랍장을 찾아볼 것이고
3) Search in the Closet : 옷장을 찾아볼 것이다
라는 것으로 이해할 수 있습니다.

그 다음엔 뭔가 잡을려고 하는것 같습니다. 이정도만 하면 원리 이해는 된 것 같습니다.
지금 로봇의 탐색 계획을 정확하게 파악할 필요는 없습니다.

어떤 노드가 존재하는가?


기본적으로 트리를 노드들의 역할을 주어져 있습니다.

  • Composite Task (복합 태스크)

    • Sequence : 자식 노드가 Failure를 반환할 때 까지, 자식 노드를 실행하는 순차적 실행을 지향합니다. Failure 일 경우 자식들을 실행하지 않는다.

    • Selector : 자식 노드가 True를 반환할 때 까지, 자식노드를 실행하고, True 일 경우 하위 자식들을 실행하지 않는다.

  • Decoration Task (조건 태스크)

    • Decoration Task는 하나의 자식만을 가질 수 있는데, 조건을 만족하면 자식을 실행, 만족하지 못하면 False를 반환합니다.

    • 자주 사용하는 것들에는 TimeOut, Delay 등으로 많이 사용합니다.

  • Action Task (행동 태스크)

    • 실제 행동을 표현하는 단말 노드입니다.

실제 사용 사례를 통한 예시


4202

저는 자동으로 타겟을 향하고, 공격을 하기 위한 AI를 작성할 때, 이런식으로 구상했습니다.
S.O.S 프로젝트를 할때 Entity를 대략 이런식으로 구현했습니다.
(내부적으로는 A* 이동이라던지 하는 부분은 당연히 추가되었습니다.)

여기서 어떻게 수행되는지 확인을 해보면 감지 범위 밖에 있는지에 대한 Condition Node가 True 가되면 Action Node인 순찰함수가 호출됩니다.

여기서 True 가 반환 값으로 주어지면, 순찰하는 상태로 순찰 함수만 호출하게 되며, False 일 경우, 공격 범위에 대한 Condition Node 를 수행하고, 여기서도 True 면 Attack, False라면 추격에 대한 노드로 전이됩니다.

구현에 대한 이야기 보다, 개념을 위한 포스팅이니 이정도만 작성하도록 하겠습니다.

참고 자료


Behavior Tree 개념 및 동작
개요 이 문서는 Beahvior Tree( 이하 BT ) 의 세부적인 구현이나 노드들에서 다루기 위해서 작성된 것이 아니라 전반적인 개념 및 흐름을 정리하기 위해서 작성되었습니다. 그러므로 BT 의 세부적인 동작 방식들에 대해 알고 싶으시다면 가마수트라의 [ Behavior trees for AI: How they work ][ 4 ] 를 읽어 보시기 바랍니다( 하지만 안타깝게도 영문입니다 ). 개념 BT 를 이야기하기 위해서는 유한 상태 기계( Finite State Machines, 이하 FSM )에 대해서 언급하지 않고 넘어 갈 수 없습니다. FSM 은 특정 유형의 로직을 제공합니다. 이는 상태( state )와 전이( transition )으로 구성됩니다. 상태는 동시에 실행되는 행동( actio..
https://lifeisforu.tistory.com/327
Behavior Tree 개념 및 동작
Behavior Tree :: Design principles
이번글에서는 BT의 Design principle에 대해서 알아보자. 사실 디자인 정책 같은 것까지 알아야할 필요가 있나 싶지만, 기본적인 내용은 숙지한 상태에서 Groot 같은 BT를 만들어주는 툴을 사용해보도록 하자. 결국 설계를 하고 들어가냐 아니냐, 혹은 큰 틀을 이해하고 진행하냐가 숙련도의 차이를 만들테니깐. BT의 기본 컨셉 Root로부터 tick이라는 시그널은 tree를 통해 마지막 leaf 노드까지 전달된다. tick 시그널을 받은 트리 노드는 callback을 실행한다. callback은 SUCCESS, FAILURE, RUNNING을 리턴한다. 트리 노드가 한개 이상의 자식노드가 있다면, tick을 전파할 수 있고 전파 기준은 자식이 얼마나 시그널을 받았는지에 따라 다르다. leaf 노..
https://ropiens.tistory.com/213
Behavior Tree :: Design principles
Behavior Tree를 알아봅시다
안녕하세요. 저는 Clova를 구성하는 시스템 가운데 NLU(Natural Language Understanding,자연어 이해)파트의 서버쪽 개발을 담당하고 있는 @overlast입니다. 얼마전에 Youichiro Miyake(三宅陽一郎)씨와 대담(일본어)을 나눌 기...
https://engineering.linecorp.com/ko/blog/behavior-tree
Behavior Tree를 알아봅시다
Behavior tree (artificial intelligence, robotics and control) - Wikipedia
https://en.wikipedia.org/wiki/Behavior_tree_(artificial_intelligence,_robotics_and_control)
Behavior tree (artificial intelligence, robotics and control) - Wikipedia
Unity Behavior Tree 시스템 개요 - 1 ( Behavior Tree 란? )
분석이 끝나고 올리지 않으려 했는데 Behavior Tree를 검색하여 접속하는 사람이 많아 간단하게 시스템을 설명해보려 한다. 튜토리얼 11개 + 커스터마이징을 하였기 때문에 한 포스트에 다 설명하진 못할 것이다. 하지만 조금이라도 시스템을 파악할 수 있다면 많은 독자들에게 도움이 되리라 생각해 이를 올려볼 생각이다. 일단 Behavior Tree가 무엇인지부터 살펴보자. Behavior Tree 란? 게임에서 Behavior Tree란 Behavior( 행동 ) 을 Tree 구조로 만들어 AI 의 행동을 이용해 제어하는 것이다. 행동을 트리로...? 약간 이해되지 않을 수 있다. 하지만 이렇게 생각해보자. Tree는 Node를 저장하는 하나의 컨테이너이다. 근데 자료구조를 공부하며 배운 Node란 과..
https://defs-program.tistory.com/entry/Unity-Behavior-Tree-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B0%9C%EC%9A%94-1-Behavior-Tree-%EB%9E%80
Unity Behavior Tree 시스템 개요 - 1 ( Behavior Tree 란? )







- 컬렉션 아티클