애셋번들 사용패턴 (AssetBundle usage patterns) 4- 번역

애셋번들 사용패턴 (AssetBundle usage patterns) – 번역

원문 링크

 

이전글 – 애샛 분배 전략

4.4 애셋번들로 패치하기 (Patching with AssetBundles)

애셋번들 패치(Patch)는 새 애셋번들을 다운로드하고 기존의 애셋번들을 교체하는 것만큼 간단합니다.
WWW.LoadFromCacheOrDownload 또는 UnityWebRequest를 이용해서 어플리케이션에 캐시된 애셋번들을 관리하고, 선택한 API에 다른 버전을 매개변수로 전달하는 것만큼 간단한 방법입니다. (이에 대한 더 자세한 내용은 위의 스크립팅 레퍼런스를 참고하시기 바랍니다.)

패치 시스템에서 해결해야하는 좀 더 어려운 문제는 교체할 애셋번들을 탐색하는 작업입니다. 패치 시스템에서 요구되는 두 가지 정보는 다음과 같습니다:

  • 현재 다운로드된 애셋번들의 목록 및 이들의 버전 정보
  • 서버 측의 애셋번들 목록 및 이들의 버전 정보

패치 프로그램(Patcher)은 서버측 애셋번들의 목록을 다운로드하고 애셋번들 목록과 비교해야 합니다.
누락된 애셋번들 또는 버전 정보가 변경된 애셋번들은 다시 다운로드합니다.

유니티 5의 애셋번들 시스템은 빌드가 완료되면, 애셋번들 하나를 추가적으로 생성합니다.
이 애셋번들에는 AssetBundleManifest 오브젝트가 포함되어 있습니다.
이 매니페스트(Manifest) 오브젝트는 애셋번들의 목록 및 해시(hash) 목록이 포함되어 있으며, 사용 가능한 애셋번들 및 버전 정보를 클라이언트에 전달하는데 활용할 수 있습니다. 애셋번들 매니페스트 번들에 대한 자세한 내용은 유니티 메뉴얼을 참고하시기 바랍니다.

애셋번들에 대한 변경을 탐색하는데 사용할, 자체 시스템(Custom System)을 제작할 수도 있습니다.

자체 시스템을 제작하는 대부분의 개발자는 애셋번들의 목록에 JSON과 같은 산업-표준(industry-standard) 데이터 포맷을 사용하고, MD5와 같은 checksum을 계산하기 위해서 표준 C# 클래스를 선택합니다.

 

4.4.1 차동 패치 (Differential patching)

유니티 5부터, 결정론적인(deterministic) 방법으로 데이터를 정렬해서 애셋번들을 빌드할 수 있습니다.
이를 통해서, 커스텀 다운로더를 사용하는 어플리케이션에서 차동 패치(differential patching)를 구현할 수 있습니다.
결정론적 레이아웃을 적용하여 애셋번들을 빌드하기 위해서는, BuildAssetBundles API를 호출할 때 BuildAssetBundleOptions.DeterministicAssetBundle 플래그(Flag)를 전달해야합니다.
(더 자세한 내용은 스크립팅 레퍼런스를 확인하시기 바랍니다.)

유니티는 차동 패치(differential patching)를 위한 내장 메커니즘(mechanism)을 제공하지 않으며, WWW.LoadFromCacheOrDownload 와 UnityWebRequest 모두 내장 캐싱 시스템을 이용할때, 차동 패치(differential patching)를 수행하지 않습니다.
차동 패치(differential patching)가 필요한 경우, 커스텀 다운로드를 제작해야 합니다.

 

4.4.2 iOS On-Demand Resources

On-Demand Resources는 iOS와 TVOS 장치에 콘텐츠를 제공하기 위한 애플(Apple) API 입니다. 이 API는 iOS 9 장치에서 사용가능합니다. On-Demand Resources는 현재 앱 스토어(App Store)에 앱을 런칭하기 위한 필수 사항은 아니지만, TVOS 앱에는 요구되는 사항입니다.

애플의 On-Demand Resources 시스템에 대한 대략적인 내용은 애플 개발자 사이트에서 확인할 수 있습니다.

유니티 5.2.1 부터 App Slicing 및 On-Demand Resources를 지원합니다. 이 App Slicing 과 On-Demand Resources는 또 다른 애플 시스템인 Asset Catalogs를 기반으로 빌드됩니다. 유니티 에디터에서 콜백(callback)을 등록하면, iOS 어플리케이션의 빌드 파이프라인에서 특정 파일 세트를 보고하는 것이 가능합니다. 이 파일 세트는 자동으로 Asset Catalogs에 배치되며, 지정한 On-Demand Resources에 할당됩니다.

새 UnityEngine.iOS.OnDemandResources API는 런타임에서 On-Demand Resources 파일을 캐싱하고, 검색할 수 있는 기능을 지원합니다. ODR을 통해서 리소스가 검색되면, 표준 AssetBundle.LoadFromFile API를 통해서 검색된 리소스를 유니티로 로드할 수 있습니다.

자세한 내용 및 예제 프로젝트는 유니티 포럼 게시글을 참고하시기 바랍니다.

 

내용 끝까지 읽어주셔서 감사합니다.
배너 클릭은 저에게 많은 힘이 됩니다.
감사합니다 🙂

 

다음글 – 애샛번들 사용시 발생할 수 있는 문제점

RonnieJ

프리랜서 IT강사로 활동하고 있습니다. 게임 개발, C++/C#, 1인 기업에 관심이 많습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Please turn AdBlock off

Notice for AdBlock users

Please turn AdBlock off