Post

UE - Asset과 Lyra로 Primary Data Asset 사용법 분석

UnrealEngine

UE - Asset과 Lyra로 Primary Data Asset 사용법 분석

어제 말한대로 Primary Data Asset에 대해 공부하려 했는데, 애초에 ‘Asset’이 뭔지 몰라 Asset에 대해 공부했다.

Asset

에셋은 디지털 콘텐츠 제작에서 사용되는 재사용 가능한 데이터 또는 리소스들을 말한다.

우리가 사용하는 메시, 머티리얼, 사운드 파일, 텍스처 등이 모두 에셋이다.

에셋은 항상 콘텐츠 브라우저를 통해 관리해야한다.

에셋의 로드/언로드

로드(Load): 에셋 데이터를 메모리로 불러오는 과정. 게임에서 사용하려는 에셋을 디스크에서 읽어와 RAM에 올려야 해당 에셋을 사용 가능하다.

언로드(UnLoad): 사용이 끝난 에셋을 메모리(RAM)에서 해제하는 과정이다.

여기서 말하는 디스크는 게임 개발을 하고 있는 컴퓨터 혹은 개발 환경의 하드디스크나 SSD 등을 뜻한다.

하드디스크는 비휘발성 메모리지만, 속도가 느리다는 단점이 있다.

때문에 레벨에서 사용하는 에셋들은 속도가 느린 디스크 대신 속도가 빠른 메모리로 옮겨 사용하는데, 메모리에 데이터를 올리는 과정을 로드라고 생각하면 된다.

에셋 로드와 언로드를 자동으로 처리하는 시스템이 있기에, 레벨을 불러올 때 해당 레벨에서 사용되는 에셋이 자동으로 로드된다.

반대로 레벨을 떠날 때, 더 이상 사용되지 않는 에셋은 자동으로 언로드된다.

예를 들자면, 레벨 A에서 특정 3D 모델과 텍스처를 사용했다면, 레벨 A가 로드될 때 이 에셋이 자동으로 메모리에 올라온다.

이제 레벨 B로 이동하면 A에서 사용된 에셋은 자동으로 메모리에서 해제된다.

이걸 Garbage Collection이 처리하는데, 에셋이 더 이상 사용되지 않으면 엔진이 이를 감지하고 메모리에서 제거한다.

Asset Registry

위에서 에셋의 로드와 언로드를 자동으로 처리해주는 시스템이 있다고 말했는데, Asset Registry가 그 시스템이다.

Content Browser에서 에셋을 생성하면, 에셋이 엔진의 Asset Registry에 등록된다.

이 레지스트리를 통해 엔진은 어떤 에셋이 필요한지 추적하고, 로드/언로드를 적절히 처리한다.

에셋은 다른 오브젝트나 클래스에서 참조될 때도 로드된다.

참조가 없어지면, 엔진은 해당 에셋을 언로드할 수 있다.

Streaming Level -> 매우 큰 월드를 최적화 할 때는 일부 레벨만 필요할 때 로드하고 나머지를 언로드해야 최적화에 좋기에 수동 로드/언로드를 사용한다.

Explicit Asset Loading : 런타임 중 특정 에셋을 미리 로드하거나 지연 로드하고 싶을 때 LoadObject또는 StreamableManager를 사용 가능하다.

에셋 발견(Asset Discovery) 는 언리얼 엔진이 프로젝트 디렉토리에 있는 에셋 파일을 자동으로 스캔하고 인식하는 과정을 말한다.

이 과정은 Asset Registry가 담당하는데, 위에서 말했듯 .uasset 파일들을 찾아서 레지스트리에 등록한다.

언리얼 엔진은 프로젝트 디렉토리에 저장된 .uasset 파일을 검색한다음, 이를 감지해 Content Broswer에 반영한다.

파일을 직접 복사하거나 삭제해도, 엔진이 감지 가능하다.

하지만 에셋 발견? 로드 검사 시기와 방법을 커스터마이징 하고 싶을 때 에셋 매니저를 사용 가능하다.

에셋 매니저는 기본적으로 에셋을 관리하는 기능만 제공한다. 때문에 프로젝트 규모에 맞게 에셋 매니저도 커스터마이징이 가능하다.

This post is licensed under CC BY 4.0 by the author.