유니티 엔진 (Unity Engine)

어드레서블 시작하기(Get started with Addressables) 스터디 노트 2화 "어드레서블을 써야만 하는 이유"

원소랑 2023. 5. 26. 16:36

이 전 노트에서 유니티 엔진의 에셋 관리 방식들에 대한 정리까지 진행했고 이어서 진행합니다.

2023.05.25 - [유니티 엔진 (Unity Engine)] - 어드레서블 시작하기(Get started with Addressables) 스터디 노트 1화

 

게임을 개발할 때 필연적으로 다양한 에셋, 리소스들이 필요하고 이를 로드하고 언로드하는 등의 관리가 필요한데, 어드레서블 시스템은 이 리소스 관리 수준을 한층 높여주는 유니티 엔진의 시스템이기 때문에 학습 코스를 통해 스터디를 진행하고 있습니다.

 

Addressable 학습 코스 링크
https://prf.hn/click/camref:1011lvz7h/pubref:study_addr/destination:https%3A%2F%2Flearn.unity.com%2Ftutorial%2Fwhy-use-addressables%3FcourseId%3D64255c01edbc2a268fb0b800%23

 

Why use Addressables? - Unity Learn

The Addressables system is Unity's dynamic asset management system. Addressables builds on Unity's AssetBundles technology, and also provides tools inside the Unity Editor to help you prepare your assets for on-demand loading, whether your content is on-de

learn.unity.com

 

유니티 엔진이 제공하거나 과거에 제공했던 에셋 관리에 대한 다양한 접근 방식
직접 참조 (Direct References)
리소스 폴더 (Resources Folder)
에셋 번들 (AssetBundle System)
어드레서블 (Addressables)

 


직접 참조 (Direct References)
(이 전 글 참조)

2023.05.25 - [유니티 엔진 (Unity Engine)] - 어드레서블 시작하기(Get started with Addressables) 스터디 노트 1화

 


리소스 폴더 (Resources Folder)
리소스 폴더 에셋 관리는, 간단하고 직관적이면서 전통적인 방법.

API를 사용하여 Resources 폴더에 있는 에셋을 로드하고 언로드하는 스크립트를 작성

빌드 프로세스 중에 에디터는 Resources 폴더에서 에셋을 찾아 메타데이터 및 인덱싱 정보와 함께 애플리케이션과 함께 패키징되는 직렬화된 파일로 번들링

시작 시간이 느려지고 빌드된 애플리케이션의 크기가 커질 수 있음

메모리 관리에 대한 세분화된 접근 방식을 허용하지 않음

CDN을 통한 콘텐츠 전송을 지원하지 않음.

 

 

에셋 번들 시스템 (AssetBundle System)

에셋들(Assets)을 에셋번들(AssetBundle)이라는 컨테이너로 구성.

리소스 폴더(Resources)와 마찬가지로 에셋번들 시스템은 에셋들을 별도의 파일로 만듬.

리소스 폴더와 달리 에셋번들은 로컬로 저장하거나 클라우드에 원격으로 저장할 수 있음.

 

API를 통해 네트워크 및 시스템 리소스에 미치는 영향을 최소화

필요에 따라 번들을 다운로드할 수 있도록 하여 DLC와 출시 후 콘텐츠 업데이트를 추가할 수 있도록 함.

번들이 다운로드되면 AssetBundles API는 번들에서 에셋을 로드 및 언로드할 수 있는 방법을 제공

 

에셋번들은 유연한 컨텐츠 관리를 위한 시스템이지만 자체 솔루션을 구현해야

에셋번들 시스템 API 는 스크립트에서만 사용할 수 있음.

Unity 에디터에서 에셋 번들을 정의할 수 있는 사용자 인터페이스는 제한적

에셋 번들을 빌드하려면 스크립팅이 필요

 

에셋 번들 API는 에셋 번들 간의 에셋 종속성을 추적하지 않음.

가령, 에셋 번들 A에서 프리팹을 로드하려면 다른 에셋 번들에 있을 수 있는 메시, 머티리얼, 텍스처 등 종속성을 찾아서 런타임에 해당 종속 에셋 번들이 로드되었는지 확인한 후에 프리팹을 로드해야.

 

메모리 할당 및 해제는 수동. 다른 코드가 해당 에셋에 종속되어 있는 상태에서 에셋 번들에서 에셋을 언로드하면 콘텐츠 누락 문제나 메모리 누수가 발생할 수 있음.

 

에셋번들 런타임 API는 빌드한 번들을 로컬에 배치했는지 원격에 배치했는지 인식하지 못함.


어드레서블 (Addressables)

어드레서블 시스템은 에셋번들 API를 기반으로 구축.

Unity 에디터에서 사용자 인터페이스를 제공

에셋번들은 스크립트에서 수동으로만 관리할 수 있었던 프로세스를, 어드레서블은 자동화할 수 있음.

Unity 에디터에서 에셋을 구성하고 종속성, 에셋 위치, 메모리 할당 및 할당을 시스템에서 처리하도록 할 수 있음

 

어드레서블을 사용해야 하는 이유

파일 이름이나 번들 위치가 아닌 스크립트에서 참조할 수 있는 주소로 접근.

주소를 사용하면 어드레서블 시스템에서 많은 세부 사항을 자동화할 수 있음.

 

유연성 (Flexibility)

에셋이 호스팅되는 위치를 유연하게 지정할 수 있음. 에셋이 로컬 디스크에 존재하도록 하거나 원격 웹 서버에서 필요할 때 다운로드할 수 있음. 

 

종속성 관리 (Dependency management)

로드하는 모든 에셋의 모든 종속성을 자동으로 로드하여 요청한 에셋이 로드되기 전에 모든 메시, 셰이더, 애니메이션 및 기타 종속 에셋이 로드되도록 함.

가령, 캐릭터 로드를 요청하면 시스템은 캐릭터와 관련된 모든 에셋들을 자동으로 로드.

 

메모리 관리 (Memory management)

메모리 관리의 번거로운 작업 대부분을 자동화. 스크립트에서 에셋을 게임에 로드하고 언로드할 때 시스템이 메모리 할당을 추적하고, 프로파일러 활용도도 상승.

 

효율적인 콘텐츠 패킹 (Efficient content packing)

어드레서블 시스템은 복잡한 종속성 체인을 매핑. 에셋을 이동하거나 이름을 변경하는 경우에도 에셋을 효율적으로 패킹할 수 있음.

에셋을 개별적으로 패킹하거나 그룹으로 패킹하는 등 에셋을 얼마나 세분화할지 선택할 수 있으며, 온디맨드 또는 다운로드 가능한 콘텐츠(DLC)를 지원하기 위해 로컬 및 원격 배포를 위해 에셋을 쉽게 준비할 수 있으므로 애플리케이션 크기를 줄일 수 있음.

 

클라우드 빌드 및 콘텐츠 전송 (Cloud build and content delivery)

클라우드 콘텐츠 전송과 클라우드 빌드 등 Unity 게임 서비스(UGS)에 통합되어 실시간 게임 업데이트와 클라우드에서 애플리케이션을 빌드할 수 있는 엔드투엔드 서비스 제공

 

스크립터블 빌드 파이프라인 (Scriptable Build Pipeline)

어드레서블 시스템(Addressable system)은 에셋번들 빌드 파이프라인보다 더 강력한 스크립터블 빌드 파이프라인(SBP)을 사용.

사전 정의된 빌드 플로우(pre-defined build flows)를 사용하거나 더 고급 방법을 사용하려면 분할된 API(divided-up API)를 사용하여 직접 빌드 플로우를 생성할 수 있음.

 

현지화 (Localization)

Unity의 로컬라이제이션 패키지와 통합.

 

 

실습 요소들

1. 어드레서블 시스템 사용자 인터페이스의 기본 사항 .
2. 에셋을 어드레서블로 만들고 스크립트에 로드하는 다양한 방법 .
3. Unity에서 어드레서블 에셋으로 애플리케이션을 빌드하는 방법과 이러한 빌드를 효과적으로 준비하기 위해 프로젝트를 구성하는 방법.
4. 어드레서블 에셋을 호스팅하여 시스템에서 필요한 이점을 얻을 수 있는 옵션.

 

 

실습에 사용될 샘플 프로젝트인 <Loady Dungeons> 는 직접 참조와 레거시 리소스 시스템을 사용하고 있는데, 이를 어드레서블로 교체해보는 내용.

 

게임 프로젝트가 작거나 크거나 모바일이거나 관계없이, 어드레서블 시스템은 많은 런타임 에셋 관리 작업을 자동화하면서 게임을 더 간결하고 빠르게 제작할 수 있도록 도와줌.


다음 스터디 노트 3화에서는 Addressable 패키지를 설치하고 에셋을 Addressable 로 인식할 수 있도록 하는 방법들을 진행합니다.

 

Addressable 학습 코스 링크
https://prf.hn/click/camref:1011lvz7h/pubref:study_addr/destination:https%3A%2F%2Flearn.unity.com%2Ftutorial%2Fwhy-use-addressables%3FcourseId%3D64255c01edbc2a268fb0b800%23

 

Why use Addressables? - Unity Learn

The Addressables system is Unity's dynamic asset management system. Addressables builds on Unity's AssetBundles technology, and also provides tools inside the Unity Editor to help you prepare your assets for on-demand loading, whether your content is on-de

learn.unity.com

Unity 2021 버전, 유니티 교과서

https://link.coupang.com/a/ZgsN8

 

2021 버전 완벽 대응 유니티 교과서 개정5판

COUPANG

www.coupang.com

(본문 링크로 유니티 교과서 구입 시, 일정액의 수수료를 제공받습니다. 감사합니다.)

728x90
반응형