PART 6 - 강의 4/4

디버깅 도구 활용

World Partition 디버그 명령어와 시각화 도구

01

콘솔 명령어

World Partition 디버그 CVar

World Partition 콘솔 명령어 # 런타임 해시 시각화 wp.Runtime.ToggleDrawRuntimeHash2D # 2D 그리드 표시 wp.Runtime.ToggleDrawRuntimeHash3D # 3D 그리드 표시 # 스트리밍 디버그 wp.Runtime.EnableServerStreaming 1 # 서버 스트리밍 활성화 wp.Runtime.ShowDebugStreaming 1 # 스트리밍 디버그 정보 # HLOD 디버그 wp.Runtime.ToggleHLODDebug # HLOD 디버그 표시 # 셀 배치 wp.Runtime.RuntimeSpatialHashPlaceSmallActorsUsingLocation 1 # Data Layer 디버그 wp.DataLayers.ShowDebug 1 # Data Layer 디버그 정보 # 스트리밍 생성 로그 wp.Editor.DumpStreamingGenerationLog # Saved/Logs/WorldPartition/에 저장 # 가비지 컬렉션 LevelStreaming.ShouldReuseUnloadedButStillAroundLevels 0 # 언로드된 레벨 즉시 GC (NavMesh 등)
02

에디터 시각화 도구

View Mode와 Outliner 활용

에디터 디버그 도구 1. HLOD 시각화 View Mode > Level of Detail Coloration > Hierarchical LOD Coloration - 각 LOD 레벨이 다른 색상으로 표시 2. Data Layer Outliner Window > World Partition > Data Layer Outliner - 모든 Data Layer 목록 - 런타임 상태 확인 - 에디터 가시성 토글 3. World Partition Minimap - World Partition Minimap 액터 배치 - 전체 맵을 커버하도록 스케일 조정 - Build > Build World Partition Editor Minimap 4. 스트리밍 그리드 시각화 - 콘솔: wp.Runtime.ToggleDrawRuntimeHash2D - 셀 경계, 로드 상태 표시

LOD Coloration

HLOD 전환 포인트 확인. 색상으로 현재 LOD 레벨 식별.

Data Layer Outliner

레이어별 액터 관리. 런타임 상태 모니터링.

03

성능 프로파일링

스트리밍 성능 분석

성능 분석 명령어 # 일반 렌더링 통계 stat scenerendering # 드로우 콜, 프리미티브 수 # Nanite 통계 stat Nanite # Nanite 지오메트리 통계 # Nanite 디버그 뷰 r.Nanite.Visualize 1 # 0: Off # 1: Triangles # 2: Clusters # 3: Instances # 스트리밍 통계 stat streaming # 레벨 스트리밍 상태 # 메모리 통계 stat memory # 전체 메모리 사용량 memreport -full # 상세 메모리 리포트 # GPU 프로파일링 profilegpu # GPU 프레임 분석
프로파일링 팁

스트리밍 관련 히치(끊김)가 발생하면 stat streaming으로 로드 중인 레벨을 확인하세요. Loaded와 Visible 상태의 차이로 프리로딩 효과를 측정할 수 있습니다.

04

NavMesh 디버깅

Gameplay Debugger 활용

NavMesh 디버그 # Gameplay Debugger 활성화 ' (작은따옴표) 키 # Navigation 뷰 전환 0 키 (Gameplay Debugger 활성 상태에서) # NavMesh 표시 show navigation # 에디터에서 # 상세 NavMesh 디버그 RecastNavMesh-Default - Details > Debug Draw > 옵션 활성화 확인 항목: ├── NavMesh 타일 경계 ├── 로드된/언로드된 영역 ├── 경로 탐색 가능 영역 └── NavLink 연결 상태
05

로그 분석

스트리밍 생성 로그 활용

로그 분석 # 스트리밍 생성 로그 덤프 wp.Editor.DumpStreamingGenerationLog # 결과 위치 Saved/Logs/WorldPartition/ # 로그 내용: ├── 생성된 셀 목록 ├── 셀별 액터 수 ├── 거대 셀 경고 ├── Hard Reference 정보 └── Data Layer 할당 정보 # 분석 포인트: 1. 예상보다 큰 셀 확인 → Hard Reference 체크 2. 특정 셀에 액터 집중 → 그리드 설정 조정 고려 3. Data Layer 누락 액터 → 할당 확인
C++ - 커스텀 로깅 // 런타임 스트리밍 상태 로깅 void AMyDebugActor::LogStreamingState() { if (UWorld* World = GetWorld()) { if (UWorldPartitionSubsystem* WPSubsystem = World->GetSubsystem<UWorldPartitionSubsystem>()) { bool bComplete = WPSubsystem->IsStreamingCompleted(); UE_LOG(LogTemp, Log, TEXT("Streaming Completed: %s"), bComplete ? TEXT("Yes") : TEXT("No")); } } } // Data Layer 상태 로깅 void LogDataLayerState(UDataLayerAsset* DataLayer) { if (UWorld* World = GetWorld()) { if (UDataLayerManager* Manager = UDataLayerManager::GetDataLayerManager(World)) { EDataLayerRuntimeState State = Manager->GetDataLayerEffectiveRuntimeState(DataLayer); UE_LOG(LogTemp, Log, TEXT("DataLayer '%s' State: %d"), *DataLayer->GetName(), (int32)State); } } }
SUMMARY

핵심 요약

  • wp.Runtime.* 명령어로 그리드, HLOD, 스트리밍 시각화
  • LOD Coloration으로 HLOD 전환 확인
  • stat streaming으로 로드 상태 모니터링
  • Gameplay Debugger로 NavMesh 디버그
  • DumpStreamingGenerationLog로 셀 생성 분석
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: 콘솔 명령어 디버깅 실습

wp.Runtime.ToggleDrawRuntimeHash2D, wp.Runtime.ToggleDrawRuntimeHash3D, wp.Runtime.ToggleDrawStreamingSources 명령어를 실행하며 런타임 스트리밍 상태를 시각화하세요. 각 명령어의 출력을 분석합니다.

실습 2: World Partition 에디터 도구 활용

에디터의 World Partition 창에서 셀 필터링, 액터 검색, Data Layer 토글 기능을 활용하세요. 특정 그리드의 셀만 표시하거나, 로드되지 않은 액터를 검색하는 워크플로우를 익힙니다.

심화 과제

프로젝트 특화 World Partition 디버그 도구를 개발하세요. 런타임 셀 상태 히트맵, 스트리밍 소스 범위 3D 시각화, 셀 로드/언로드 이력 타임라인을 포함하는 에디터 유틸리티 위젯을 구현합니다.