Version: 2023.1
언어: 한국어
에셋 번들 압축 및 캐싱
문제 해결

에셋 번들로 패치

에셋 번들 패치는 새 에셋 번들을 다운로드하고 기존의 에셋 번들을 교체하는 것만큼 간단합니다. 애플리케이션의 캐싱된 에셋 번들을 관리하기 위해 UnityWebRequestAssetBundle.GetAssetBundle을 사용하는 경우, 다른 버전이나 해시 파라미터를 전달하면 새 에셋 번들이 다운로드됩니다.

패치 시스템에서 더 해결하기 어려운 문제는 대체할 에셋 번들을 탐지하는 것입니다. 패치 시스템은 다음 두 가지 정보 리스트를 요구합니다.

  • 현재 다운로드된 에셋 번들과 각각의 버전 정보 리스트
  • 서버에 있는 에셋 번들과 각각의 버전 정보 리스트

패치를 하기 위해서는 서버 측 에셋 번들 리스트를 다운로드하고 에셋 번들 리스트를 비교해야 합니다. 누락된 에셋 번들이나 버전 정보가 변경된 에셋 번들은 다시 다운로드해야 합니다.

Unity는 차등 패치를 위한 빌트인 메커니즘을 제공하지 않으며, 빌트인 캐싱 시스템을 사용할 때 UnityWebRequestAssetBundle.GetAssetBundle은 차등 패치를 수행하지 않습니다. 대신 항상 새 에셋 번들 파일 전체를 다운로드합니다. 차등 패치가 필요한 경우 커스텀 다운로더를 작성해야 합니다. Unity는 결정론적 방식으로 정렬된 데이터를 사용하여 에셋 번들을 빌드하므로, 다시 빌드된 에셋 번들에 대한 파일 패치는 전체 파일보다 훨씬 작을 수 있습니다. 비압축 또는 청크 기반 압축(LZ4)은 기본 전체 파일 압축(LZMA)보다 더 원활하게 패치됩니다. 자신만의 시스템을 직접 작성하는 개발자는 대부분 자신의 에셋 번들 파일 리스트에 JSON 같은 산업 표준 데이터 포맷을 사용하고, 파일 콘텐츠 해시 컴퓨팅에 MD5 같은 표준 C# 클래스를 사용합니다. 파일 콘텐츠 해시는 에셋 번들 버전으로 사용할 수도 있고, 빌드 시스템에서 생성된 기존 버전 번호를 사용할 수도 있습니다.

에셋 번들 압축 및 캐싱
문제 해결