PART 4 - 강의 4/5

HLOD 빌드 자동화

WorldPartitionHLODsBuilder 커맨드렛 활용

01

HLOD Builder Commandlet

커맨드라인 HLOD 빌드

HLOD는 에디터에서 수동으로 빌드할 수도 있지만, 자동화 파이프라인을 위해 Commandlet을 사용하는 것이 권장됩니다.

Bash - 기본 사용법 # Windows UnrealEditor-Cmd.exe "C:/Projects/MyProject/MyProject.uproject" ^ "/Game/Maps/MyLevel" ^ -run=WorldPartitionBuilderCommandlet ^ -AllowCommandletRendering ^ -Builder=WorldPartitionHLODsBuilder # Linux/Mac ./UnrealEditor-Cmd "MyProject.uproject" \ "/Game/Maps/MyLevel" \ -run=WorldPartitionBuilderCommandlet \ -AllowCommandletRendering \ -Builder=WorldPartitionHLODsBuilder
02

Commandlet 옵션

HLOD 빌드 세부 제어

옵션 설명
-SetupHLODs HLOD 액터 설정만 (지오메트리 빌드 안 함)
-BuildHLODs 기존 HLOD 액터의 지오메트리 빌드
-DeleteHLODs 모든 HLOD 액터 삭제
-SCCProvider=None 소스 컨트롤 비활성화
-AllowCommandletRendering 머티리얼 베이킹에 필요
-Verbose 상세 로깅
03

전체 HLOD 리빌드

삭제 - 설정 - 빌드 순서

Bash - 전체 리빌드 # 1단계: 기존 HLOD 삭제 UnrealEditor-Cmd.exe "MyProject.uproject" "/Game/Maps/MyLevel" ^ -run=WorldPartitionBuilderCommandlet ^ -Builder=WorldPartitionHLODsBuilder ^ -DeleteHLODs ^ -SCCProvider=None # 2단계: HLOD 설정 (액터 생성) UnrealEditor-Cmd.exe "MyProject.uproject" "/Game/Maps/MyLevel" ^ -run=WorldPartitionBuilderCommandlet ^ -Builder=WorldPartitionHLODsBuilder ^ -SetupHLODs ^ -SCCProvider=None # 3단계: HLOD 빌드 (지오메트리 생성) UnrealEditor-Cmd.exe "MyProject.uproject" "/Game/Maps/MyLevel" ^ -run=WorldPartitionBuilderCommandlet ^ -AllowCommandletRendering ^ -Builder=WorldPartitionHLODsBuilder ^ -BuildHLODs ^ -SCCProvider=None
빌드 최적화

대규모 월드에서는 빌드 시간이 수 시간 걸릴 수 있습니다. 개발 중에는 변경된 영역만 빌드하고, 최종 빌드 시에만 전체 리빌드를 수행하세요.

04

NavMesh 빌드

World Partition 네비게이션 데이터

Bash - NavMesh 빌드 # NavMesh 빌드 (HLOD와 별도) UnrealEditor-Cmd.exe "MyProject.uproject" "/Game/Maps/MyLevel" ^ -run=WorldPartitionBuilderCommandlet ^ -AllowCommandletRendering ^ -Builder=WorldPartitionNavigationDataBuilder ^ -SCCProvider=None # 권장 순서: # 1. HLOD 빌드 # 2. NavMesh 빌드 # NavMesh는 HLOD가 완료된 후 빌드하는 것이 좋습니다.
05

빌드 스크립트 예시

완전한 빌드 자동화 스크립트

PowerShell - build_world_partition.ps1 # World Partition 빌드 스크립트 $UE_ROOT = "C:\Program Files\Epic Games\UE_5.5" $PROJECT = "C:\Projects\MyProject\MyProject.uproject" $MAP = "/Game/Maps/MainWorld" $EDITOR_CMD = "$UE_ROOT\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" function Build-HLODs { Write-Host "=== Building HLODs ===" -ForegroundColor Cyan # HLOD 빌드 & $EDITOR_CMD $PROJECT $MAP ` -run=WorldPartitionBuilderCommandlet ` -AllowCommandletRendering ` -Builder=WorldPartitionHLODsBuilder ` -SCCProvider=None ` -Verbose if ($LASTEXITCODE -ne 0) { Write-Host "HLOD build failed!" -ForegroundColor Red exit 1 } } function Build-Navigation { Write-Host "=== Building Navigation ===" -ForegroundColor Cyan & $EDITOR_CMD $PROJECT $MAP ` -run=WorldPartitionBuilderCommandlet ` -AllowCommandletRendering ` -Builder=WorldPartitionNavigationDataBuilder ` -SCCProvider=None if ($LASTEXITCODE -ne 0) { Write-Host "Navigation build failed!" -ForegroundColor Red exit 1 } } # 실행 Build-HLODs Build-Navigation Write-Host "=== Build Complete ===" -ForegroundColor Green
SUMMARY

핵심 요약

  • WorldPartitionHLODsBuilder로 커맨드라인 HLOD 빌드
  • -AllowCommandletRendering은 머티리얼 베이킹에 필수
  • 전체 리빌드: Delete → Setup → Build 순서
  • -SCCProvider=None으로 소스 컨트롤 무시
  • HLOD 빌드 후 NavMesh 빌드 수행
PRACTICE

도전 과제

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

실습 1: 커맨드렛 기반 HLOD 빌드

WorldPartitionHLODsBuilder 커맨드렛을 사용하여 명령줄에서 HLOD를 빌드하세요. -run=WorldPartitionHLODsBuilder 파라미터와 함께 맵 경로, 빌드 옵션을 지정하는 배치 파일을 작성합니다.

실습 2: 영역별 선택적 HLOD 빌드

전체 월드가 아닌 특정 영역만 선택적으로 HLOD를 빌드하는 설정을 구현하세요. BuilderCellSize와 대상 셀 좌표를 지정하여 변경된 영역만 빠르게 재빌드하는 워크플로우를 구축합니다.

심화 과제

대규모 월드의 HLOD를 여러 머신에서 분산 빌드하는 시스템을 구축하세요. 월드를 영역별로 분할하고, 각 빌드 머신에 작업을 분배하며, 결과물을 병합하는 파이프라인을 구현합니다.