[Unreal Engine] State Tree 개요

이매·2026년 1월 19일

Unreal State Tree

목록 보기
1/2
post-thumbnail

State Tree란?

State Tree는 언리얼 엔진에서 제공하는 상태 기반(States) 로직 작성 시스템이다.
AI 행동, 게임플레이 로직 등 “현재 상태에 따라 무엇을 할지”를 구조적으로 구성할 수 있게 해준다.

  • 전통적인 FSM(Finite State Machine) 의 장점(명확한 상태 전이, 직관적인 흐름)을 유지한다.
  • 동시에 복잡한 게임 로직에서 자주 필요한 계층 구조(상태 중첩), 조건 기반 선택, 태스크 기반 실행을 자연스럽게 지원한다.

State Tree를 사용하는 이유

게임/AI 로직은 보통 다음 문제를 만나기 쉽다.

  • 상태가 늘어나면서 전이가 복잡해진다.
  • “특정 조건일 때만 실행” 같은 분기 로직이 산재한다.
  • 같은 행동(이동, 타겟 탐색 등)을 여러 상태에서 재사용하기 어렵다.
  • 디버깅 시 “지금 왜 이 행동을 하고 있지?”를 추적하기 어렵다.

State Tree는 이런 문제를 줄이기 위해 다음 방식을 제공한다.

  • 상태(States) 를 계층적으로 구성한다.
  • 상태에 들어가면 수행할 태스크(Tasks) 를 명시한다.
  • 전이(Transitions) 및 선택(Selection)을 조건(Conditions) 으로 제어한다.

Behavior Tree와의 차이점

특징Behavior Tree (BT)State Tree (ST)
핵심 철학질문 기반: “지금 내가 뭘 해야 하지?” (매번 루트부터 검색)상태 기반: “지금 난 이 상태야, 다음 상태로 갈까?” (전이 조건 감시)
흐름 제어Selector, Sequence 노드에 의한 우선순위State 간의 Direct Transition(전기/전이)
데이터 접근Blackboard(중앙 집중형 데이터 저장소)Schema 기반 파라미터 및 프로퍼티 바인딩
복잡도 관리데코레이터와 서비스가 많아지면 실행 순서 파악이 어려움상태가 중첩(Nested)되어 있어 상위 수준 로직 상속이 명확함
최적화 강점개별 에이전트의 복잡한 의사 결정Mass Entity 기반의 대규모 군중 및 상태 중심 로직

State Tree의 Element

번호구성 요소설명
1루트(Root)StateTree 실행 시작 시 선택되는 첫 번째 스테이트이다.
2셀렉터 스테이트(Selector State)자손 스테이트가 있는 스테이트를 뜻한다. 이 스테이트는 직접 선택되지 않으며, 선택되면 자손 스테이트 중 하나에게로 선택이 이어진다.
3스테이트 진입 조건(State Enter Condition)스테이트 선택 가능 여부를 결정하는 조건 목록을 말한다.
4태스크(Task)스테이트에 속하면서 스테이트 활성화 시 실행되는 액션 세트를 뜻한다.
5트랜지션(Transition)스테이트 선택 프로세스를 트리거하는 조건을 정의한다. 트랜��션은 태스크가 완료, 성공 또는 실패하거나 모니터링되는 조건이 성공하면 트리거된다.

State

State Tree의 기본 단위이다.

  • 루트에서 시작해 하위 상태로 내려가는 계층 구조를 가진다.
  • “현재 활성 상태(Active State)” 개념이 존재한다.
  • 상위 상태/하위 상태가 함께 활성화될 수 있는 구조를 가진다(계층형 FSM에 가깝다).

Conditions

상태 선택 또는 전이 판단에 사용된다.

  • “체력이 30% 이하인가?”를 판단한다.
  • “타겟이 시야에 들어왔는가?”를 판단한다.
  • “목표 지점에 도착했는가?”를 판단한다.

조건은 전이 및 선택 논리의 기반이 된다.

Task

상태가 활성화되었을 때 수행할 “행동 단위”이다.

예시는 다음과 같다.

  • 특정 위치로 이동한다.
  • 애니메이션을 재생한다.
  • 타겟을 탐색한다.
  • 공격을 실행한다.

태스크는 상태에 붙어서 실행되며, 성공/실패/진행 중 같은 결과를 통해 다음 흐름에 영향을 준다.

Transitions

어떤 상태에서 다른 상태로 넘어가는 규칙이다.

  • 조건이 만족되면 특정 상태로 전이한다.
  • 여러 전이 후보가 있으면 우선순위/평가 방식에 따라 결정된다.

Schema

State Tree가 참조/사용할 수 있는 컨텍스트 타입과 데이터 접근 방식의 기준을 정한다.

Context

선택된 State Tree Schema를 기반으로 자동 제공되는 사전 정의 데이터이다.

State Tree가 지금 어떤 주체와 환경에서 동작 중인지 알려주는 기본 정보이다.

State Tree Parameters

State Tree 실행 중 외부에서 전달받아 참조할 수 있는 입력 파라미터

동일한 State Tree를 상황에 따라 재사용할 수 있도록 함.

Evaluators

파라미터/컨텍스트만으로는 노출하기 어려운 데이터를 트리에 제공하기 위한 방식이다.
런타임에 실행 가능한 별도의 클래스이며, 변수를 보유할 수 있고 다음 타이밍에 커스텀 코드를 수행할 수 있다.

  • 트리 시작 시
  • 트리 중지 시
  • 매 틱마다

이벨류에이터의 프로퍼티는 다음 대상에 바인딩될 수 있다.

  • 파라미터
  • 컨텍스트 데이터
  • 다른 이벨류에이터가 제공하는 값

Global Tasks

트리 시작부터 종료까지 항상 활성화되는 StateTree 태스크이다.

루트 스테이트보다 먼저 실행되며, 스테이트 선택에 필요한 값처럼, 트리 전반에서 유지되는 영구 데이터를 마련할 때 유용하다.

Weight

Weight는 보통 State Tree에서 “여러 후보 중 무엇을 선택할지”가 필요한 상황에서, 특정 선택지(상태/전이/아이템 등)에 가중치(우선도)를 부여하는 개념으로 쓰인다.

profile
언리얼 엔진 주니어(신입) 개발자 | 소설 쓰는 취준 개발자

0개의 댓글