1291.30 Unreal Engine에서의 행동 트리 채택

1. Unreal Engine의 AI 시스템 발전 맥락

Epic Games가 개발·배포하는 Unreal Engine은 세계적으로 가장 널리 사용되는 상용 게임 엔진 중 하나로서, 대규모 AAA 타이틀에서 독립 개발 프로젝트에 이르기까지 광범위한 게임 개발에 활용된다. Unreal Engine이 행동 트리(Behavior Tree, BT)를 엔진의 공식 AI 시스템으로 내장한 것은 BT 기법의 산업적 표준화에 있어 결정적 이정표로 평가된다.

Unreal Engine 3(UE3)까지의 AI 시스템은 UnrealScript 기반의 FSM(Finite State Machine)과 스크립팅 구조에 의존하였다. UE3에서 NPC의 행동 제어는 AIController 클래스 내부에 상태(state)와 전이 논리를 직접 구현하는 방식으로 이루어졌으며, 행동의 복잡도가 증가할수록 코드의 유지보수성과 확장성이 저하되는 문제가 반복적으로 발생하였다.

2. Unreal Engine 4에서의 행동 트리 도입

2.1 도입 배경과 설계 동기

Unreal Engine 4(UE4)는 2012년에 공개되었으며, AI 시스템의 근본적 재설계를 포함하였다. Epic Games의 AI 팀은 게임 산업에서 축적된 BT의 성공 사례—특히 Halo 시리즈와 다수의 AAA 타이틀에서의 산업적 검증—를 반영하여, BT를 UE4의 공식 AI 행동 제어 기법으로 채택하였다.

이 결정의 배경에는 다음의 산업적 요구사항이 작용하였다:

  1. 범용 엔진의 범용 AI 기법 필요성: 다양한 장르와 규모의 게임에 적용 가능한 유연한 행동 제어 프레임워크가 필요하였다
  2. 시각적 편집 환경의 요구: 프로그래머와 게임 디자이너의 협업을 위하여, 행동 논리의 시각적 편집가 필수적으로 요구되었다
  3. FSM 대비 확장성 이점: 대규모 프로젝트에서 FSM의 상태 폭발 문제가 반복적으로 보고되었으며, 이를 구조적으로 완화하는 기법이 필요하였다

2.2 Unreal Engine BT 아키텍처의 구성 요소

UE4에서 구현된 BT 아키텍처는 다음의 핵심 구성 요소로 이루어진다.

행동 트리 에셋(Behavior Tree Asset). BT는 에디터 내에서 시각적으로 편집 가능한 독립 에셋(asset)으로 정의된다. 트리 구조가 노드-간선(node-edge) 그래프로 시각화되며, 드래그 앤 드롭(drag-and-drop) 인터페이스를 통하여 노드의 추가·삭제·이동이 수행된다.

블랙보드(Blackboard). BT와 결합되는 키-값(key-value) 저장소로서, NPC의 인식 정보, 목표 위치, 전투 대상 등 행동 의사 결정에 필요한 데이터를 중앙화하여 관리한다. 블랙보드의 키는 타입이 지정되며(Boolean, Float, Vector, Object, Enum, Class 등), BT의 노드들이 블랙보드에서 데이터를 읽고 쓰는 방식으로 노드 간 정보 공유가 이루어진다.

AI 컨트롤러(AI Controller). BT의 인스턴스를 소유하고 실행을 관리하는 컨트롤러 클래스이다. AI 컨트롤러는 BT의 tick 실행을 구동하며, 인식 시스템(AI Perception System)으로부터 센서 데이터를 수신하여 블랙보드에 갱신한다.

인식 시스템(AI Perception System). 시각(sight), 청각(hearing), 피해(damage), 예측(prediction) 등 NPC의 감각 채널을 모델링하는 시스템이다. 인식 시스템이 감지한 자극(stimulus)이 블랙보드에 기록되며, BT의 조건 노드가 이 정보를 평가하여 행동을 조정한다.

3. Unreal Engine BT의 노드 체계

3.1 복합 노드(Composite Node)

UE4의 BT는 다음의 복합 노드를 제공한다:

  • Selector: 자식 노드를 좌측에서 우측으로 순차 평가하여, 성공을 반환하는 첫 자식을 선택한다. BT 표준의 Fallback 노드에 해당한다.
  • Sequence: 자식 노드를 좌측에서 우측으로 순차 실행하여, 모든 자식이 성공하면 성공을 반환한다. 하나라도 실패하면 즉시 실패를 반환한다.
  • Simple Parallel: 하나의 주 태스크(main task)와 하나의 배경 트리(background tree)를 동시에 실행하는 병렬 노드이다.

3.2 태스크 노드(Task Node)

태스크 노드는 BT의 리프(leaf) 노드로서, NPC의 구체적 행동을 실행한다. UE4는 다음의 내장 태스크를 제공하며, 개발자가 C++ 또는 Blueprint로 사용자 정의 태스크를 구현할 수 있다:

  • Move To: AI 컨트롤러에 의하여 네비게이션 메시(navigation mesh) 상의 목표 위치로 이동
  • Wait: 지정된 시간 동안 대기
  • Set Blackboard Value: 블랙보드의 특정 키에 값을 설정
  • Run Behavior: 다른 BT 에셋을 서브트리로 실행(서브트리 참조)

3.3 데코레이터(Decorator)

데코레이터는 부착된 노드의 실행 조건을 정의하거나 실행 결과를 변형하는 부가적 노드이다. UE4의 데코레이터는 다음의 기능을 제공한다:

  • Blackboard Decorator: 블랙보드 키의 값에 기반한 조건 평가(키가 설정되어 있는지, 특정 값과 같은지 등)
  • Cooldown: 해당 노드의 재실행까지 최소 대기 시간을 강제
  • Time Limit: 해당 노드의 실행 시간에 상한을 설정
  • Loop: 해당 노드의 반복 실행

데코레이터의 중요한 특징은 관찰자 중단(Observer Aborts) 기능이다. 데코레이터의 조건이 변경되면, 현재 실행 중인 하위 트리의 실행을 중단하고 트리의 재평가를 트리거할 수 있다. 이 기능은 반응적 행동 전환을 구현하는 데 핵심적 역할을 수행하며, BT 표준의 Reactive 노드 변형과 유사한 기능을 제공한다.

3.4 서비스(Service)

서비스는 복합 노드에 부착되어, 해당 복합 노드가 활성 상태인 동안 설정된 주기(interval)로 반복 실행되는 갱신 논리이다. 서비스는 블랙보드의 값을 주기적으로 갱신하는 데 활용되며, 이에 의하여 BT의 의사 결정에 필요한 실시간 정보가 지속적으로 유지된다.

4. Unreal Engine BT의 시각적 편집기

4.1 에디터 인터페이스

UE4의 BT 에디터는 그래프 기반 시각적 편집 환경을 제공한다. 트리의 노드가 2차원 캔버스 위에 배치되며, 노드 간 부모-자식 관계가 간선으로 시각화된다. 편집기의 주요 기능은 다음과 같다:

  • 실시간 디버깅 시각화: 게임 실행 중에 BT 에디터에서 현재 활성 노드, 실행 경로, 각 노드의 반환 상태를 실시간으로 시각화
  • 블랙보드 값 모니터링: 디버깅 중에 블랙보드의 모든 키-값 쌍을 실시간으로 확인
  • 브레이크포인트: 특정 노드에 브레이크포인트를 설정하여 해당 노드 진입 시 실행을 일시 정지

이 시각적 편집기는 행동 논리의 설계, 수정, 디버깅 과정을 통합된 환경에서 수행할 수 있게 하며, FSM 기반 방식에서 코드 텍스트로만 수행 가능하였던 작업을 시각적으로 전환하였다.

4.2 디자이너-프로그래머 협업 모델

UE4의 BT 아키텍처는 프로그래머와 게임 디자이너 간의 역할 분담을 구조적으로 지원한다. 프로그래머는 C++로 사용자 정의 태스크 노드, 데코레이터, 서비스를 구현하고, 게임 디자이너는 시각적 에디터에서 이 노드들을 조합하여 BT를 구성한다. 이 분업 모델은 행동 논리의 구현과 구성을 분리함으로써, 대규모 팀 개발에서의 병렬 작업을 가능하게 한다.

5. Unreal Engine BT의 실행 모델

5.1 이벤트 구동 실행

UE4의 BT 실행 모델은 순수한 매 프레임 tick 방식이 아닌, 이벤트 구동(event-driven) 방식을 채택하였다. 블랙보드 값의 변경, 데코레이터 조건의 변이, 태스크의 완료 등 이벤트가 발생할 때만 트리의 재평가가 트리거된다. 이는 매 프레임 전체 트리를 탐색하는 방식 대비 계산 비용을 대폭 절감시키며, 다수의 NPC가 동시에 BT를 실행하는 대규모 게임에서 성능 최적화에 기여한다.

5.2 관찰자 중단의 동작 방식

데코레이터의 관찰자 중단은 두 가지 모드를 지원한다:

  • Self: 자신이 부착된 노드의 하위 트리에서 실행 중인 태스크를 중단
  • Lower Priority: 자신보다 우측(낮은 우선순위)에 위치한 노드에서 실행 중인 태스크를 중단

이 메커니즘에 의하여, 새로운 감각 정보가 도착하면 현재 낮은 우선순위의 행동을 중단하고 높은 우선순위의 행동을 즉시 실행하는 반응적 전환이 구현된다.

6. Unreal Engine BT 채택의 산업적 파급 효과

6.1 BT 기법의 사실상 표준화

세계 최대 규모의 상용 게임 엔진이 BT를 공식 AI 시스템으로 내장한 것은, BT가 게임 AI의 사실상 표준(de facto standard) 행동 제어 기법으로 확립되는 데 결정적으로 기여하였다. UE4를 사용하는 모든 개발 팀이 BT를 기본 AI 기법으로 접하게 되었으며, 이에 의하여 BT에 대한 산업적 인지도와 경험이 급속히 누적되었다.

6.2 개발자 교육과 지식 확산

Epic Games가 제공하는 공식 문서, 튜토리얼, 예제 프로젝트가 BT의 교육 자원으로 기능함으로써, 게임 개발자 커뮤니티 전체의 BT 이해도가 향상되었다. 이는 BT 기법이 학술 논문이나 전문 서적을 통해서만 접근 가능하였던 지식에서, 게임 엔진의 공식 문서를 통하여 접근 가능한 실용 지식으로 전환된 것을 의미한다.

6.3 로봇공학으로의 기술 이전 촉진

Unreal Engine의 BT 구현은 BT의 구성 요소와 실행 모델을 산업 수준에서 표준화함으로써, 로봇공학 분야에서의 BT 채택에도 간접적 영향을 미쳤다. ROS2의 BehaviorTree.CPP 라이브러리는 Unreal Engine의 BT 구성 요소(Blackboard, Decorator, Service 개념)와 구조적 유사성을 공유하며, Unreal Engine에서 형성된 산업적 설계 관례가 로봇공학 BT 구현에 참조점을 제공하였다. 또한, Unreal Engine 자체가 로봇 시뮬레이션 환경으로 활용되면서, 게임 AI와 로봇 AI의 기술적 경계가 더욱 모호해지는 추세이다.

7. 참고 문헌

  • Epic Games. (2023). “Behavior Trees.” Unreal Engine Documentation. https://docs.unrealengine.com
  • Colledanchise, M., & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • Millington, I., & Funge, J. (2009). Artificial Intelligence for Games (2nd ed.). Morgan Kaufmann.
  • Champandard, A. J. (2007). “Understanding Behavior Trees.” AiGameDev.com.

v0.2.0