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를 여러 머신에서 분산 빌드하는 시스템을 구축하세요. 월드를 영역별로 분할하고, 각 빌드 머신에 작업을 분배하며, 결과물을 병합하는 파이프라인을 구현합니다.