World Partition 통합
Partitioned Generation, Data Layer, HLOD 통합으로 대규모 오픈 월드에서 PCG를 운용합니다.
Partitioned Generation
그리드 기반 분할 생성으로 대규모 월드 지원
Partitioned Generation은 PCG 생성 결과를 사용자 정의 그리드로 분할합니다. 각 셀이 독립적인 Actor를 생성하므로, World Partition의 스트리밍 시스템과 자연스럽게 통합됩니다.
설정 방법
| 설정 위치 | 프로퍼티 | 설명 |
|---|---|---|
| PCG Component | Is Partitioned |
true로 설정하여 파티셔닝 활성화 |
| PCGWorldActor | Partition Grid Size |
기본 그리드 셀 크기 (cm). 기본값 25600 (256m) |
// Non-Partitioned (기본값)
[PCG Volume] 2km x 2km
→ 모든 메시가 하나의 Actor에 포함
→ 메모리 과다, 스트리밍 불가
→ 대규모에서 사용 금지
// Partitioned (Is Partitioned = true)
[PCG Volume] 2km x 2km
[PCGWorldActor] Partition Grid Size: 25600 (256m)
→ 약 64개 (8x8) 독립 셀로 분할
→ 각 셀 = 독립 Actor = World Partition 셀에 매핑
→ 거리 기반 자동 스트리밍
// 그리드 크기 가이드라인:
// 12800 (128m) - 밀집 도시, 많은 오브젝트
// 25600 (256m) - 일반적인 자연 환경 (권장)
// 51200 (512m) - 희소한 사막/평원
PCGWorldActor는 파티셔닝 활성화 시 자동으로 레벨에 생성됩니다. 이 Actor의 Partition Grid Size 설정이 전체 PCG의 그리드 크기를 결정합니다. World Partition의 Grid Size와 반드시 일치하거나 배수 관계여야 최적의 스트리밍이 됩니다.
Hierarchical Generation
다중 그리드 크기로 콘텐츠 계층화
Hierarchical Generation은 다른 콘텐츠에 다른 그리드 크기를 적용하여 큰 오브젝트는 넓은 그리드에서, 작은 디테일은 좁은 그리드에서 관리합니다.
| 콘텐츠 계층 | Grid Size | 스트리밍 거리 | 대상 |
|---|---|---|---|
| Unbounded | 전체 | 항상 로드 | 지형 특성 분석, 전역 데이터 |
| Large (대규모) | 51200 (512m) | 원거리 | 대형 랜드마크, HLOD용 나무 |
| Medium (중규모) | 25600 (256m) | 중거리 | 일반 식생, 바위, 구조물 |
| Small (소규모) | 12800 (128m) | 근거리 | 풀, 꽃, 소형 장식 |
// Grid Size 노드로 계층별 그리드 크기 지정
[Get Landscape Data]
↓
[Grid Size: Unbounded] // 전체 범위에서 1회 실행
→ [Surface Sampler] (낮은 밀도)
→ [Spatial Noise]
→ Attribute 계산 // 전역 밀도맵 생성
↓
[Grid Size: 51200] // 대규모 그리드
→ [Density Filter] (높은 밀도만)
→ [Spawner: 대형 나무]
↓
[Grid Size: 25600] // 중규모 그리드
→ [Density Filter] (중간 밀도)
→ [Spawner: 중형 식생]
↓
[Grid Size: 12800] // 소규모 그리드 (근거리만)
→ [Density Filter] (전체)
→ [Spawner: 풀/꽃]
// 핵심: 큰 그리드의 데이터는 작은 그리드로 전파됨
// 작은 그리드의 데이터는 큰 그리드로 전파되지 않음
Hierarchical Generation에서 큰 그리드 → 작은 그리드로 데이터가 전파되지만, 반대 방향은 불가합니다. 따라서 전역적으로 필요한 계산(밀도맵, Biome 분류 등)은 반드시 Unbounded 또는 가장 큰 그리드에서 수행해야 합니다.
Data Layer와 HLOD
PCG 콘텐츠의 Data Layer 할당과 HLOD 통합
PCG로 생성된 Actor는 자동으로 World Partition의 Data Layer에 할당됩니다. HLOD(Hierarchical Level of Detail)와 연동하면 원거리에서 경량화된 표현으로 자동 전환됩니다.
| 기능 | 설명 | 설정 |
|---|---|---|
| Data Layer 자동 할당 | PCG Actor가 해당 파티션 셀의 Data Layer에 자동 배치 | Is Partitioned = true면 자동 |
| HLOD 자동 생성 | PCG Actor가 HLOD 빌드에 포함되어 원거리 LOD 자동 생성 | HLOD Layer 설정 |
| Streaming Distance | 셀 로드/언로드 거리 설정 | World Partition 설정 |
PCG로 생성된 수천 개의 나무가 HLOD로 병합되면 원거리에서 몇 개의 메시로 렌더링됩니다. Hierarchical Generation의 대규모 그리드에 배치된 콘텐츠는 HLOD의 상위 레벨에 포함되어 매우 먼 거리에서도 올바르게 표현됩니다.
대규모 월드 실전 전략
수십 km2 오픈 월드에서의 PCG 운용 가이드
분할 정복
월드를 지역(Region)으로 나누고, 각 지역마다 별도의 PCG Volume을 사용합니다. 하나의 거대한 Volume보다 여러 중간 크기 Volume이 관리에 유리합니다.
계층적 밀도
Hierarchical Generation으로 콘텐츠를 3~4단계로 나눕니다. 가장 큰 그리드에는 랜드마크만, 가장 작은 그리드에 디테일을 배치합니다.
에디터 성능
Generate On Demand 모드를 사용하여 필요할 때만 생성합니다. 수정 중에는 작업 영역만 선택적으로 Generate합니다.
버전 관리
PCG Graph 에셋은 소스 컨트롤에 포함하되, 생성된 Actor는 파티셔닝 시 자동 관리됩니다. One File Per Actor 설정을 활용하세요.
// 대규모 오픈 월드 PCG 운용 가이드
[필수 설정]
✓ World Partition 활성화
✓ PCG Component: Is Partitioned = true
✓ PCGWorldActor: Partition Grid Size 조정
✓ Hierarchical Generation 사용
[권장 사항]
✓ Generate On Demand 모드 (개발 중)
✓ HLOD Layer 설정
✓ 그리드 크기는 World Partition Grid의 배수로
✓ Unbounded에서 전역 데이터 사전 계산
✓ 소규모 디테일은 Runtime Generation 고려
[주의 사항]
✗ 비파티셔닝으로 대규모 Volume 사용 금지
✗ 작은 그리드 → 큰 그리드 데이터 참조 불가
✗ 에디터에서 전체 월드 동시 Generate 지양
핵심 요약
- Partitioned Generation은 PCG 결과를 그리드로 분할하여 World Partition 스트리밍과 자동 통합된다
- PCGWorldActor의 Partition Grid Size가 전체 PCG 그리드 크기를 결정한다
- Hierarchical Generation은 Grid Size 노드로 콘텐츠별 다른 그리드 크기를 적용한다
- 큰 그리드 → 작은 그리드로 데이터가 전파되며, 반대는 불가하다
- PCG Actor는 자동으로 Data Layer에 할당되고 HLOD 빌드에 포함된다
- 대규모 월드에서는 분할 정복, 계층적 밀도, On Demand 생성 전략을 사용한다
도전 과제
배운 내용을 직접 실습해보세요
World Partition 활성화 레벨에서 PCG Volume을 배치하고, Is Partitioned를 활성화하세요. 그리드 셀별로 독립 생성되는지 확인하고, 스트리밍에 따른 로드/언로드를 관찰하세요.
인접한 두 파티션 셀 경계에서 에셋이 잘리거나 중복 배치되지 않도록 설정하세요. Grid Size와 PCG Volume 크기의 관계를 이해하고, 경계의 시각적 연속성을 확인하세요.
16km x 16km 규모의 오픈 월드에서 PCG를 효율적으로 운영하는 아키텍처를 설계하세요. Hierarchical Generation, 거리별 LOD PCG, 비동기 생성을 조합한 프로덕션 시스템을 구현하세요.