레벨별 Preload DataAsset은 유지하되, 수집 기준을 기능 Feature 중심으로 변경했다.

기존 구조의 문제

레벨에 이미 배치된 Static Mesh는 레벨 로드 과정에서 로드되므로 Preload할 필요 없고
그 외에 Preload 해야할 목록들 수정함.

  • Inventory에서 드랍될 수 있는 Item Actor / Mesh
  • Shelf에서 런타임으로 생성될 Item
  • DamageText Pooling에 필요한 Widget / Material
  • HUD, Inventory, Quest UI
  • AI Blueprint / DataAsset
  • Weapon, GE, Item DataAsset
  • Shop, Storage, Crafting 관련 UI와 Data

새 구조

LevelPreloadDataAsset

  • 레벨별 Preload 진입점
  • Level, LevelId 보유
  • GeneratedRuntimeAssets 보유
  • 선택적으로 InventoryPreloadDataAsset 참조

InventoryPreloadDataAsset

  • Inventory Item DataAsset 전용 공용 Preload 목록
  • 여러 LevelPreloadDataAsset에서 공유 가능

GeneratedEnvironmentAssets

  • 레벨에 배치된 환경 Mesh용 필드
  • 현재는 기본적으로 사용하지 않음

GeneratedRuntimeAssets

  • Feature 기반으로 자동 수집된 런타임 에셋

AdditionalPreloadAssets

  • 사람이 직접 추가하는 예외 에셋

ExcludedAssets

  • 자동 수집에서 제외할 에셋

공통 Feature 목록을 따로 두고, Preset은 사용할 Feature 이름을 지정하는 구조로 바꿨다.
만든 Feature를 각 Preset이 자유롭게 조합해 사용할 수 있는 구조를 가지고 있다.
image-1784150510036

Runtime Feature 수집

Generator는 현재 열린 레벨 이름으로 Preset을 찾는다.

현재 레벨 이름 확인
→ LevelIds에 해당 레벨이 들어간 Preset 검색
→ Preset이 선택한 FeatureNames 확인
→ 각 Feature의 RootDirectories와 DirectAssets 수집
→ GeneratedRuntimeAssets에 저장

Dependency 확장

bExpandRuntimeDependencies 옵션이 켜져 있으면 수집된 Root Asset에서 의존 에셋을 따라가게 했음

Root Asset
→ Hard Dependency
→ Soft Dependency
→ Runtime Asset 목록에 추가

이 과정으로 참조하는 Texture, Material, Font 같은 에셋도 함께 들어온다.
모든 의존성을 무조건 포함하면 Editor Tool이나 불필요한 에셋까지 섞일 수 있으므로 필터가 들어갔다.


레벨에 배치된 Static Mesh를 수집하는 기능은 완전히 삭제하지 않았다.
다만 기본값은 꺼져 있다.

bIncludePlacedEnvironmentAssets = false

이 옵션을 켜면 예전처럼 현재 레벨의 Actor를 순회하면서 StaticMeshComponent, InstancedStaticMeshComponent, HierarchicalInstancedStaticMeshComponent를 스캔할 수 있다.

배치된 환경 Mesh보다 런타임 Feature 에셋을 Preload하는 쪽에 중점을 두었음.

런타임 로딩 흐름

GameFlowSubsystem
→ Loading Level 진입
→ LoadingGameMode 시작
→ 현재 FlowState / Target Level에 맞는 LevelPreloadDataAsset 선택
→ FTAssetManager가 PreloadLevelAssetsAsync 실행
→ 로딩 완료 후 실제 Level Open

수정할 사항

  • Load할 Data 중 다음 레벨에 필요없는 Data Load 해제
  • 메모리 최적화
  • 그 밖에 로드해올 에셋 고려하기
  • 플러그인 범용성 고려하기
반응형

'TIL' 카테고리의 다른 글

ABP → AnimInstance 전환  (0) 2026.07.20
UE Preload  (0) 2026.07.16
IK  (0) 2026.07.14
WorldContextObject  (0) 2026.07.10
Clean Code  (0) 2026.06.09