소개
스테이트 트리 디버거 는 개발자가 스테이트 트리의 잠재적인 문제를 파악하고 진단할 수 있도록 스테이트 트리 런타임 동작을 모니터링하고 기록합니다.
이 시스템은 두 가지 주요 목표를 염두에 두고 만들어졌는데, 트리의 활성 스테이트에 대한 시각 표현을 제공하는 것과 스테이트, 태스크, 조건의 런타임 값에 대한 라이브 모니터링을 제공하는 것입니다.
이 시스템은 에디터 세션(예: 에디터에서 플레이) 및 원격 세션(예: 독립형, 클라이언트, 서버)을 위한 라이브 디버깅을 제공합니다. 또한 사용자가 기록된 트레이스 파일을 저장 및 로드하여 후속 분석을 수행할 수 있습니다.
스테이트 트리 디버거는 트레이스되는 이벤트를 생성하고 분석하기 위해 언리얼 인사이트와 같은 언리얼 엔진의 TraceServices 를 사용합니다. 이 시스템은 트레이스 분석기 및 트레이스 제공자 상위 수준에서 만들어져, 주어진 스테이트 트리 에셋과 연관된 하나 또는 다수 인스턴스의 관련 이벤트를 수집합니다.
이러한 접근법을 활용하면 시스템은 단일 프로세스에서 다수의 에디터, 클라이언트, 데디케이티드 서버 프로세스를 동시에 디버깅할 수 있습니다.
전제조건
이 가이드에서는 스테이트 트리 디버거를 보여주기 위해 스테이트 트리 퀵스타트 가이드에서 생성한 스테이트 트리를 사용합니다. 이 문서의 예시를 따르려면 해당 퀵스타트를 완료해 주세요.
퀵스타트 가이드를 완료한 후에는 플레이 를 눌러 비헤이비어를 확인하세요.

스테이트 활성화 및 비활성화하기
스테이트 트리 내에서 특정한 개별 스테이트를 활성화 및 비활성화할 수 있습니다.
-
스테이트 트리 에셋 ST_ShootingTarget 을 엽니다.
-
MoveAlongSpline 스테이트를 우클릭하여 상태 활성화됨(State Enabled) 을 선택 해제합니다. 또는 스테이트를 선택하고 디테일(Details) 패널로 이동할 수도 있습니다. 디버그 옵션 버튼을 클릭하여 상태 활성화됨 을 선택 해제합니다.
-
스테이트 트리를 컴파일(Compile) 하고 저장(Save) 합니다. 비활성화된 스테이트가 창에서 어두운 색으로 표현된 것을 알 수 있습니다.
-
플레이 를 눌러 결과를 확인합니다. MoveAlongSpline 스테이트가 비활성화되었으므로 트리가 Idle 스테이트에서 Dead 스테이트로 즉시 바뀝니다.
태스크 활성화 및 비활성화하기
스테이트 내에서 개별 태스크를 활성화 및 비활성화할 수 있습니다.
-
MoveAlongSpline 스테이트를 활성화하고 디테일 패널로 이동합니다. STT_MoveAlongSpline 태스크 옆의 디버그 옵션 버튼을 클릭하여 작업 활성화됨(Task Enabled) 을 선택 해제합니다.
-
스테이트 트리를 컴파일 하고 저장 합니다. 비활성화된 태스크가 창에서 어두운 색으로 표현된 것을 알 수 있습니다.
-
플레이 를 눌러 결과를 확인합니다. MoveAlongSpline 스테이트는 활성화되었지만, STT_MoveAlongSpline 태스크는 비활성화되었습니다. 이에 따라 MoveAlongSpline 스테이트는 평가를 거치지만, 활성화된 태스크가 없으므로 트리는 Idle 스테이트를 반환합니다.
조건 디버그 옵션
테스트 목적으로 스테이트 트리에서 조건 확인의 결과를 강제로 도출할 수 있습니다.
-
이 예시에서는 Idle 스테이트를 선택하고 디테일 패널로 이동했습니다. a. 트랜지션(Transitions) 섹션을 펼친 다음 On Tick Go to State Dead 구조체를 펼칩니다. b. 마지막으로 조건(Conditions) 을 펼쳐 HitCount 와 값 5 간의 Integer Compare 조건을 확인합니다.
-
조건 디버그 버튼을 클릭하고 True 강제(Force True) 를 선택합니다. 이렇게 하면 평가 시 이 조건이 항상 true를 반환합니다.
-
플레이 를 눌러 결과를 확인합니다. 유휴 스테이트가 실행될 경우 트랜지션 이 평가됩니다. 이 경우 액터 HitCount 와 5 간의 Integer Compare가 항상 True를 반환하므로 On Tick Go to State Dead 가 True 를 반환합니다. 즉, 5회를 초과하여 히트되는 액터를 시뮬레이션하게 됩니다.
중단점
모든 스테이트 및 태스크에 들어가거나 나갈 때, 그리고 트랜지션을 실행하는 동안 중단점을 추가할 수 있습니다.
중단점은 에디터 세션 동안 임시 저장되지만 에셋을 다시 로드하면 사라집니다. 스테이트 또는 태스크 비활성화와는 달리 스테이트 트리 컴파일이 필요하지 않습니다.
-
이 예시에서는 MoveAlongSpline 스테이트를 우클릭하고 들어갈 때 중단(Break on Enter)을 선택했습니다. 이제 트리가 이 스테이트에 들어갈 때 실행이 중단됨을 나타내는 빨간색 아이콘이 스테이트에 표시된 것을 알 수 있습니다.
-
컴파일 하고 저장 합니다. 플레이 를 눌러 결과를 테스트합니다. 스테이트에 들어가자마자 실행이 중단되는 모습을 볼 수 있습니다.
-
또한 태스크 이름 옆의 태스크 디버그 옵션 버튼을 클릭하고 들어갈 때 중단(Break on Enter) 또는 나갈 때 중단(Break on Exit) 을 선택하는 방법으로 태스크에 중단점을 추가할 수도 있습니다.
디버거 탭
디버거 탭은 스테이트 트리에 대한 상세한 런타임 정보를 제공합니다. 실행을 트래킹하고 일시정지 동안 변수 데이터를 얻는 데 사용할 수 있습니다.
창(Window) > 디버거(Debugger) 를 클릭하여 탭을 열 수 있습니다.

디버거 탭 인터페이스에는 다음과 같은 영역이 있습니다.

- (1) 에디터 시뮬레이션 컨트롤: 이 버튼들은 뷰포트의 시뮬레이션을 컨트롤하며, 시뮬레이션을 시작, 일시정지 및 중지할 수 있습니다.
- (2) 트레이스 세션 레코더: 이 버튼은 나중에 검토할 수 있도록 라이브 세션을 비주얼 로거에 녹화합니다. 이 버튼을 누르면 Frame 및 StateTreeDebug 채널이 활성화된 상태로 트레이싱이 시작됩니다.
- (3) 분석 컨트롤: 이 버튼들은 녹화된 세션 재생을 컨트롤합니다. 트레이스 분석을 시작 및 중지하거나, 세션을 한 번에 한 프레임씩 단계적으로 재생하거나, 변경된 이전 또는 다음 프레임으로 점프할 수 있습니다.
- (4) 트레이스 및 실행 영역: 드롭다운에서 특정 트레이스를 선택할 수 있습니다. 녹화된 특정 실행 세션을 선택할 수도 있습니다.
- (5) 타임라인: 타임라인에는 사용 가능한 실행과 그 활성 스테이트가 표시됩니다. 수동으로 타임라인을 스크럽하여 특정 스테이트에 대한 정보를 얻을 수 있습니다.
- (6) 디테일 패널: 이 패널은 선택한 실행 세션의 활성 스테이트에 대한 실행 세부 정보를 보여줍니다. 글로벌 태스크 및 이밸류에이터, 태스크, 트랜지션과 같은 정보를 표시합니다. 스테이트에서 실행된 데이터 및 로직도 보여줍니다.
아래 예시에서는 플레이 버튼을 클릭하여 플레이 세션을 시작하고 첫 번째 실행 을 녹화했습니다. 플레이 모드를 중단한 후에는 타임라인을 스크럽하여 실행된 스테이트의 녹화 세부 정보를 확인했습니다.
