어드레서블(Addressables) 시스템 스터디 노트 12화는 "호스팅과 캐싱". Unity 에디터의 로컬 호스팅 서비스에서 주소 지정이 가능한 에셋을 제공하는 방법을 알아봅니다. 또한 원격 카탈로그, 카탈로그 캐시, 에셋 번들 캐시에 대해서도 알아봅니다.
이 과정을 마치면 아래 내용들을 학습할 수 있음
-개발 중에 웹 서버를 사용하지 않고 로컬에서 콘텐츠를 호스팅
-원격 또는 로컬로 호스팅할 어드레서블 에셋 할당
-어드레서블 호스팅 서비스를 설정하여 원격 호스팅 시뮬레이션
-다운로드한 에셋 번들 및 콘텐츠 카탈로그가 캐시되는 방법
유니티 Addressables 학습 코스 링크
개요
어드레서블 콘텐츠의 경우 에셋의 로딩과 언로딩을 테스트하기 위해 CDN에서 원격 콘텐츠를 호스팅해야.. 선택한 플랫폼에 빌드하고 원격 에셋을 테스트할 때마다 CDN을 도입하면 시간 비용이 증가하는 등 프로젝트 개발이 복잡해질 수 있는데, 어드레서블 시스템은 Unity 에디터에 통합된 콘텐츠 서버 역할을 하는 Addressables Hosting(어드레서블 호스팅) 창을 제공해서 해결.
Addressables Hosting 창 기능을 통해 어드레서블 시스템은 적절한 CDN과 동일한 방식으로 빌드 Output을 호스팅하며, Unity Editor 플레이 모드 세션 또는 Unity 플레이어 빌드를 에셋 번들(AssetBundles)을 검색하기 위해 연결할 수 있는 클라이언트로 취급할 수 있음. 이 클라이언트는 프로젝트와 동일한 머신에 존재하거나 로컬 및 원격 네트워크의 다른 머신에 존재할 수 있음.
Addressables Hosting 을 사용하면 콘텐츠를 테스트할 때 반복 시간을 개선하고 애플리케이션이 원격 서버에 어떻게 연결되는지 명확하게 파악할 수 있음.
원격 에셋 구성 (Configure remote assets)
Window > Asset Management > Addressables > Settings 메뉴 선택. Project 폴더에서 AddressableAssetsData/AddressableAssetSettings 선택 시 Inspector 상태와 동일.
설정의 Content Update 섹션 아래에 Build Remote Catalog 를 체크.
이 옵션을 선택하면 빌드 콘텐츠가 호스팅된 모든 에셋을 찾는 데 중요한 catalog.json이라는 이름의 빌드 출력 디렉터리에 매니페스트 파일을 생성할 수 있음.
유니티 에디터 호스트로 프로필 원격 경로 설정
해당 클라이언트와 호환되는 번들을 빌드할 수 있도록 빌드 플랫폼을 일치하도록 설정. Addressables Profiles 창의 Remote 드롭다운 박스에서 Editor Hosted 확인.
이렇게 하면 어드레서블 콘텐츠가 빌드될 때 애플리케이션이 Unity 에디터가 호스팅하는 위치로 원격 콘텐츠를 빌드하고 게임이 Unity 에디터에 모의(Mock) CDN으로 요청.
Edit > Project Settings > Player > Other Settings 하위에 아래 그림과 같이 "Allow downloads over HTTP" 체크박스가 있어야 하는데... 2021 버전 기준으로는 iOS 탭에선 보이는데 WIndows, Android 에서는 보이지 않음. 더 상위 버전으로 테스트 해볼 필요가 있음.
Unity Editor 에서 새 Local Hosting 서비스 만들고 시작하기
아래 메뉴로 Addressables Hosting 창 열기.
Window > Asset Management > Addressables > Hosting
창이 열리면 좌측 상단에서 Create > Local Hosting 클릭해서 생성.
Enalbe 을 클릭해서 서비스를 시작. 에디터에서 MainMenu 씬으로 플레이 모드 진입. 로딩 씬을 거쳐 게임에 진입하면, Addressables Hosting 창 port list 이벤트가 들어오는 것을 확인.
에셋 번들 캐시 (AssetBundle cache)
에셋 번들을 조기에 캐싱하면 작업의 일부로 번들을 다운로드해야 하는 Addressables.LoadAssetAsync와 같은 모든 초기 호출의 성능이 향상.
타겟 플랫폼에 적용될 수 있는 캐싱 제한 사항을 확인해야. 모바일 플랫폼에서는 다운로드한 콘텐츠에 대해 Unity의 AssetBundle 캐시를 활용할 수 있지만, PlayStation 4, Nintendo Switch, WebGL과 같은 특정 플랫폼에서는 이 기능이 Unity 엔진 수준에서 기본적으로 비활성화 돼있음. CDN에서 원격 콘텐츠를 전송하는 대신 해당 플랫폼의 새 콘텐츠로 기본 게임을 업데이트하는 등, 해당 플랫폼의 서비스 약관을 준수해야.
캐싱을 보다 세밀하게 제어하려면 캐싱 API(Caching API)를 사용하여 AssetBundle 캐시를 직접 조작할 수 있음.
(Caching API 레퍼런스 : https://docs.unity3d.com/ScriptReference/Caching.html)
유의 : 캐싱 API에 대한 모든 호출을 ENABLE_CACHING 정의로 래핑해야 함.
마치며
유니티 엔진 어드레서블 시스템에 학습 과정을 모두 마쳤습니다. 유니티 엔진을 활용해 게임을 개발할 때, 여러 리소스를 어떻게 관리하고 불러오거나 정리하는지에 대한 솔루션이라 큰 도움이 되었습니다. 다음 미니 게임 프로젝트를 진행할 때 활용해봐야겠다는 생각.
어드레서블 시스템 스터디 노트는 여기서 마치고, 한 번 간략하게 요약하거나 하는 기획도 검토 해보겠습니다. 정말로 끝!
유니티 Addressables 학습 코스 링크
Unity 2021 버전, 유니티 교과서
https://link.coupang.com/a/ZgsN8
Unity Asset Store
https://prf.hn/click/camref:1011lvz7h/pubref:store/destination:https%3A%2F%2Fassetstore.unity.com%2F
(본문 링크로 유니티 교과서/에셋 구입 시, 일정액의 수수료를 제공받습니다. 감사합니다.)
'유니티 엔진 (Unity Engine)' 카테고리의 다른 글
성능을 고려한 파이프라인, Universal Render Pipeline 스크랩, 핵심 내용들 메모 및 타임라인 기록 (0) | 2023.06.16 |
---|---|
Unity Network Library "Mirror & Mirage" 자료 스크랩 (0) | 2023.06.09 |
Unity FPS Microgame 튜토리얼 둘러보기 (0) | 2023.06.07 |
어드레서블 시작하기(Get started with Addressables) 스터디 노트 11화 "에셋 레이블(Assets Labels)" (0) | 2023.06.03 |
어드레서블 시작하기(Get started with Addressables) 스터디 노트 10화 "에셋 그룹 템플릿" (0) | 2023.06.02 |
어드레서블 시작하기(Get started with Addressables) 스터디 노트 9화 "그룹 스키마" (1) | 2023.05.31 |
어드레서블 시작하기(Get started with Addressables) 스터디 노트 8화 "프로파일" (0) | 2023.05.31 |