언리얼 오브젝트 관리 - 패키지

Unreal 이론|2024. 10. 1. 17:50

[이득우의 언리얼 프로그래밍 수업의 정리]

 

언리얼 오브젝트 패키지

  • 단일 언리얼 오브젝트가 가진 정보는 저장o
  • 오브젝트들이 조합되어 있다면
    • 저장된 언리얼 오브젝트 데이터를 효과적으로 찾고 관리하는 방법 필요
    • 복잡한 계층 구조 가진 언리얼 오브젝트 효과적으로 저장과 불러들일 방법 통일 필요
  • 이를 위해 언리얼은 패키지(UPackage) 단위로 언리얼 오브젝트 관리
  • 패키지의 중의적 개념
    • 언리얼 엔진은 다양한 곳에서 단어 "패키지" 사용
    • 이번에는 오브젝트를 감싼 포장 오브젝트 의미
    • 개발된 최종 컨텐츠를 정리해 프로그램으로 만드는 작업 의미하기도 함 (게임 패키징)
    • DLC와 같이 향후 확장 컨텐츠에 사용되는 별도의 데이터 묶음 의미하기도 함 (pkg 파일)
    • 구분하기 힘들면 언리얼 오브젝트 패키지로 부르는것도?

패키지와 에셋

  • 언리얼 오브젝트는 다수의 언리얼 오브젝트를 포장하는데 사용한 언리얼 오브젝트
    • 모든 언리얼 오브젝트는 패키지에 소속되어 있음 (Transient Package)
  • 언리얼 오브젝트 패키지의 서브 오브젝트들을 에셋이라고 하며 에디터에는 에셋이 노출됨
  • 구조상 패키지는 다수의 언리얼 오브젝트 소유 가능, 일반적으론 하나의 에셋만 가짐
  • 에셋은 다시 다수의 언리얼 오브젝트 소요할 수 있지만, 일반적으론 하나의 에셋만 가짐
  • 에셋은 다시 다수의 서브 오브젝트 가질 수 있으며, 모두 언리얼 오브젝트 패키지에 포함됨
    • 에디터에 노출되진 않음

언리얼 오브젝트 패키지. 에셋이 에디터에 보여지는 정보이다.

에셋 정보의 저장과 로딩 전략

  • 게임 제작 단계에서 에셋간 연결작업을 위해 직접 패키지를 불러 할당하는 작업은 부하 큼
    • 에셋 로딩 대신 패키지와 오브젝트를 지정한 문자열을 대체해 사용 -> 이것이 오브젝트 경로
    • 프로젝트 내에 오브젝트 경로값은 유일함을 보장
    • 때문에 오브젝트간 연결은 오브젝트 경로 값으로 기록 가능
    • 오브젝트 경로 통해 다양한 방법으로 에셋 로딩 가능
  • 에셋 로딩 전략
    • 프로젝트에서 에셋 반드시 필요 : 생성자 코드에서 미리 로딩
    • 런타임에서 필요한 때 바로 로딩 : 런타임 로직에서 정적 로딩
    • 런타임에서 비동기 로딩하는 경우 : 런타임 로직에서 언리얼이 제공하는 관리자 사용해 비동기 로딩

오브젝트 경로

  • 패키지 이름과 에셋 이름을 한데 묶은 문자열
  • 에셋 클래스 정보는 생략 가능
  • 패키지 내 데이터를 모두 로드하지 않고 오브젝트 경로를 사용해 필요한 에셋만 로드 가능
  • {에셋 클래스 정보}'{패키지 이름}.{에셋 이름}' or {패키지 이름}.{에셋 이름}

에셋 스트리밍 관리자 (Streamable Manager)

  • 에셋의 비동기 로딩 지원하는 관리자 객체
  • 콘텐츠 제작과 무관한 싱글턴 클래스에 FStreamableManager 선언해두면 좋음
    • GameInstance는 좋은 선택지
  • FStreamableManager를 활용해 에셋의 동기/비동기 로딩 관리
  • 다수의 오브젝트 경로 입력해 다수의 에셋 로딩하는것도 가능
  • 생성자 코드에 생성한 에셋이 존재하지 않으면 에러가 나기 때문에 에셋이 빠지지 않도록 잘 세팅해야 함

'Unreal 이론' 카테고리의 다른 글

언리얼 엔진 게임 제작 기초  (0) 2024.10.14
언리얼 빌드 시스템  (1) 2024.10.03
언리얼 오브젝트 관리 - 직렬화  (0) 2024.09.12
언리얼 엔진의 메모리 관리  (1) 2024.09.05
언리얼 네트워킹 개요  (3) 2024.09.02

댓글()