Unreal StateTree로 NPC 대기와 순찰 AI 구현하기

2026. 6. 8. 22:03·Unreal Project/Unreal Study

State Tree란? 

-  State Tree는 Unreal Engine에서 제공하는 AI 및 게임플레이 로직 구성 도구로, 캐릭터나 NPC의 행동을 상태 단위로 나누어
   관리할 수 있게 해주는 시스템입니다.
    

   기존에는 AI 행동을 구현할 때 Behavior Tree, Blueprint, FSM 등을 주로 사용했지만, State Tree는 이들의 장점을 섞어 
   상태 기반 흐름을 더 직관적으로 구성할 수 있도록 만들어진 구조입니다. 

 

 

구현 결과

State Tree를 사용하는 이유 

-  State Tree를 사용하면 NPC의 행동 흐름을 상태 단위로 명확하게 분리할 수 있습니다.

   예를 들어 NPC가 다음과 같은 행동을 한다고 가정할 수 있습니다. 

   
   (대기, 순찰, 플레이어 발견, 추적, 공격, 복귀) 

   이러한 행동들은 하나의 Blueprint 안에서 모두 처리하면 조건문이 많아지고 로직이 복잡해질 수 있습니다. 
   하지만, State Tree를 사용하면 각각의 행동을 별도의 State로 나누어 관리할 수 있습니다. 

 

 

 

State Tree의 기본 구성 요소 

  • State 

    State는 NPC나 캐릭터의 현재 행동 상태를 의미합니다.
    예를 들어 다음과 같은 상태들이 있을 수 있습니다. ( Wait, Wander, Chase, Attack, Dead ) 
    각 State 안에는 해당 상태에서 실행할 작업을 넣을 수 있습니다. 

    예를 들어 Wait 상태에서 일정 시간 대기하고, Wander 상태에서는 랜덤 위치로 이동하는 Task를 실행할 수 있습니다. 


  • Task 

    Task는 State 안에서 실제로 실행되는 행동입니다. 
    예를 들어 다음과 같은 작접이 Task가 될 수 있습니다. 

    - 일정 시간 대기하기
    - 랜덤 위치로 이동하기
    - 플레이어를 향해 이동하기 
    - 공격 애니메이션 재생하기 

    즉, State가 "현재 어떤 상태인가"를 나타낸다면, Task는 "그 상태에서 무엇을 할 것인가"를 담당합니다. 

    예를 들어 Wait State 안에는 Delay Task를 넣고, Wander State 안에는 Move to Random Location Task를 
    넣을 수 있습니다. 

  • Transition

    Transition은 한 State에서 다른 State로 이동하는 흐름을 의미합니다. 
    예를 들어 Wait 상태가 끝나면 Wander 상태로 이동하고, Wander 상태가 끝나면 다시 Wait 상태로 돌아가는 식입니다. 

    Wait -> Wander
    Wander -> Wait 

    Transition에는 조건을 넣을 수도 있습니다. 
    예를 들어 플레이어를 발견했을 때만 Chase 상태로 전환하도록 만들 수 있습니다. 

    Wander -> Chase  ( 조건 : 플레이어를 발견했을 때만 ) 

condition 설정 관련

 

 

 

State Tree 동작 구현 

State Tree

 

 

해당 State Tree는 NPC가 일정 시간 대기한 뒤, 임의의 위치로 이동하고 다시 Idle 상태로 전환되는 간단한 상태 기반 AI 구조이다.

현재 구조는 크게 Wait 상태와 Wander 상태로 구성되어 있으며, 

NPC는 두 상태를 반복하면서 기본적인 배회 행동을 수행한다. 

동작 흐름은 다음과 같다. 

1. State Tree는 Root State 에서 시작되며, 하위 State인 Wait와 Wander를 순서대로 검사한다. 

2. Wait 상태에 진입하면 일정 시간 동안 대기한다. 
    현재 예제에서는 Delay 5.0이 설정되어 있으므로, NPC는 약 5초 동안 Idle 상태로 머무른다. 
    ( 여기서 Delay Task는 5초가 지나야 Success를 반환 5초가 안지났을땐 아무것도 반환을 안한다.) 

3. 대기 시간이 끝나면 Wait 상태의 Transition 조건이 성공하게 되고, 다음 상태인 Wander로 전환된다. 

4. Wander 상태에서는 NPC가 이동할 임의의 위치를 계산한 뒤, AI Move To를 통해 해당 위치까지 비동기 이동을 시작한다.

5. NPC가 목표 위치에 도착하면 Wander 상태의 Task가 완료되고, Transition이 발생하여 다시 Wait 상태로 돌아간다. 

 

State Tree 주의할 점. 

State Tree 조건 검사

 

간단히 정리하면 다음과 같다. 

구조 예시

 

다음과 같은 구조가 있다고 한다면, 

 

NPC AI의 Task을 먼저 실행하는게 아닌 Condition을 확인 하여 어느 자식 State로 들어갈 지를 결정하고 만약 

세 자식의 State가 모두 Condition 조건에 부합하지 않는다면, 이 경우는 더 이상 아래로 내려가지 못하므로 다시 NPC_AI로 돌아와 부모 State인 NPC_AI에 Task가 있다면 그 Task가 실행될 수 있습니다. 

'Unreal Project > Unreal Study' 카테고리의 다른 글

Unreal Engine Listen Server _ 04 ( 커스텀 이동 구현(Teleport) )  (0) 2026.06.10
Unreal Engine Listen Server _ 03 ( 캐릭터 공격 구현 )  (0) 2026.06.08
언리얼 팀프로젝트 회고  (0) 2026.06.07
Data_Asset 및 Quater View, Shoulder View 구현  (0) 2026.02.26
Unreal Collision에 관하여  (0) 2025.10.31
'Unreal Project/Unreal Study' 카테고리의 다른 글
  • Unreal Engine Listen Server _ 04 ( 커스텀 이동 구현(Teleport) )
  • Unreal Engine Listen Server _ 03 ( 캐릭터 공격 구현 )
  • 언리얼 팀프로젝트 회고
  • Data_Asset 및 Quater View, Shoulder View 구현
seonhwan2547
seonhwan2547
seonhwan2547 님의 블로그 입니다.
  • seonhwan2547
    seonhwan2547 님의 블로그
    seonhwan2547
  • 전체
    오늘
    어제
    • 분류 전체보기 (102) N
      • Unreal Project (37) N
        • Khazan 모작 프로젝트 (4)
        • Unreal Study (14) N
        • Blueprint (6)
        • C++ (6)
        • Shader (0)
        • GAS (2)
        • 이환 모작 포토폴리오 개발일지 (4)
        • Listen Server (1)
      • Directx11 Project (11)
        • Thymesia 팀 프로젝트 (8)
        • Kaku Ancient Seal 개인 프로젝트 (2)
        • Thymesia Animation Tool 개발 (0)
      • Algorithm (6)
        • Binary_Search (2)
        • Greedy (1)
        • Dynamic Programming (1)
        • A-star (1)
      • Coding Test (31)
        • Brutal Force (2)
        • Sort (5)
        • DFS (3)
        • Binary_Search (4)
        • BFS (6)
        • Hash (2)
        • Dynamic Programming (6)
        • Greedy (1)
        • BackTracking (1)
        • Binary_Tree (1)
      • STL Container (1)
        • unorded_set (0)
        • priority_queue (1)
      • C++ 공부 및 몰랐던점 (8)
        • Smart pointer (1)
      • Visual Studio 설정관련 공부 (1)
      • Console Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 블로그 소개
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    UnrealEnigne
    hash
    UI
    server
    Unreal Engine
    Game Programming
    blueprint
    Unreal
    GameProgramming
    CodingTest
    C++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
seonhwan2547
Unreal StateTree로 NPC 대기와 순찰 AI 구현하기