클라우드 애셋 전송 구현

앱을 크기 요구사항에 맞게 축소할 때는 먼저 표준 APK 크기 최적화 기법을 사용해 보세요. 크기를 더 줄여야 하는 경우에는 클라우드 애셋 전송을 사용해야 할 수도 있습니다. 이 문서에서는 클라우드 전송을 위한 애셋 준비 방법과 다양한 게임 엔진의 지원 옵션을 설명합니다. 이 문서에서는 게임을 집중적으로 안내하지만 그 원리는 대규모 애셋이 포함된 모든 앱에 적용됩니다.

준비

APK를 분할하여 클라우드 애셋을 전송할 생각이라면 사용자에게 애셋을 제공해야 할 시점에 따라 앱 파일을 섹션으로 어떻게 나눌 수 있을지 고려해 보세요. 대개 이 시점은 항상 필요함, 출시 시 필요함, 나중에 필요함이라는 세 가지 카테고리로 구분됩니다.

항상 필요함

작은 블록으로 분리하기 어렵거나 기본 APK에 번들로 묶어야 하는 애셋이 있습니다. 그 예로는 게임 코드, 라이브러리 또는 엔진 종속 항목 등이 있습니다. Google Play Core는 코드용 App Bundle을 지원하는 반면 대다수 엔진은 나중에 다운로드된 코드를 지원하지 않습니다.

출시 시 필요함

게임이 시작되면 사용자는 즉시 게임을 할 수 있어야 합니다. Google Play 인스턴트에서는 사용자가 LTE 또는 4G 연결을 통해 15초 이내에 게임을 시작할 수 있어야 합니다(Google Play 인스턴트 체크리스트 참조). 따라서 초기 환경을 지원하는 데 필요한 만큼만 용량을 유지하도록 출시 후에는 추가 다운로드를 제한합니다. 예를 들어, 출시 직후의 패스트 팔로우 다운로드에는 최초 게임 레벨 및 위치 애셋 또는 게임 플레이를 처음 몇 분 실행하는 데 필요한 코드 등이 포함될 수도 있습니다.

나중에 필요함

필요에 따라 나중에 백그라운드로 다운로드할 수 있는 모든 항목이 이 카테고리에 속합니다. 장시간 플레이하는 게임의 대다수 애셋이 이 카테고리에 해당합니다. 나중에 이러한 애셋을 다운로드하는 것이 앱 크기를 최소화하는 데 도움이 됩니다.

엔진 지원

클라우드 애셋 전송은 게임에서 인스턴트 게임의 15MB 제한을 초과할 수 있는 기본적 방법입니다. 애셋 다운로드 지원은 게임 엔진에 따라 다릅니다. 애셋 호스팅 옵션과 함께 아래에서 가장 일반적인 사례를 확인하세요.

실행 시 필요한 애셋이 적을수록 사용자가 게임에 더 빠르게 참여할 수 있으므로 초기 실행 시의 이탈률이 낮아지고 플레이어 보존율이 향상됩니다.

(App Bundle을 통한) 동적 애셋 모듈

앱을 App Bundle로 게시(선호되는 방법임)하면 동적 애셋 모듈을 사용하여 기본 APK 이외의 추가 리소스를 가져올 수 있습니다. 인스턴트 앱의 경우 각 동적 애셋 모듈의 매니페스트에서 dist:instant="true"를 설정해야 합니다. dist:on-demand 속성은 사용해서는 안 됩니다. 설치된 APK의 주문형 모듈에 주로 사용됩니다. 또한 모듈의 코드 포함 여부에 관계없이 각 동적 애셋 모듈은 인스턴트 APK 제한인 15MB 이하여야 합니다. 각 모듈을 이 제한 아래로 유지하지 않으면 알파 또는 출시 트랙에 게시할 수 없게 됩니다. 적절히 구성되었으면 PlayCore 라이브러리를 사용하여 런타임 시 동적 모듈을 가져올 수 있습니다.

Cocos 크리에이터

Cocos는 버전 v2.0.4부터 클라우드 애셋 전송을 지원했습니다. Cocos는 요청 시 자산을 다운로드하고, 자산이 제때 다운로드되지 않으면 자리표시자를 렌더링합니다. Cocos는 자체 온라인 서비스를 제공하지 않으므로 일부 온라인 서비스에서 호스팅해야 하는 애셋 파일을 생성합니다.

Unity

클라우드 전송은 Unity 버전 5.6, 2017.4 또는 2018.2용 Unity Google Play 인스턴트 플러그인에서 지원됩니다. 최신 버전의 Unity가 엔진 스트리핑을 위한 더 많은 이점을 제공하므로 더 많은 공간 확보를 위해 이전하는 것이 좋습니다. Unity 클라우드 애셋은 Unity에서 자동으로 생성되는 AssetBundle 파일에 호스팅됩니다. Unity가 애셋 번들 다운로드를 기본적으로 지원하므로, 애셋을 클라우드 서버에 업로드하면 클라우드 애셋 전송이 가능합니다.

기타 엔진

사용자설정 엔진을 사용하든 네이티브 라이브러리 모음을 사용하든 클라우드에서 즉시 애셋을 다운로드할 수 있습니다. 클라우드에서 다운로드해야 하는 애셋이 많으면 요청 시 게임의 애셋을 다운로드할 수 있는 방법을 통합하거나 코드로 지정해야 합니다. 처음에는 Firebase 호스팅 또는 Firebase Cloud Storage API를 사용하는 것이 좋습니다. 간단한 HTTPS 파일 가져오기 기능을 제공하는 엔진이 있으며 이 기능만으로 필요한 부분을 충분히 해결할 수도 있습니다.

애셋 호스팅

Google Play App Bundle을 사용하여 Play를 통해 애셋을 다운로드하지 않는 경우 다른 곳에서 애셋을 호스팅해야 합니다. 적합한 글로벌 배포 기능과 가용성이 확보된 서비스라면 원하는 어떤 서비스를 이용하여 애셋을 호스팅할 수 있습니다. Google Play 게임 앱 사용자가 전 세계에서 플레이하므로, 클라우드에서 호스트되는 애셋을 위치에 상관없이 사용자에게 신속히 제공해야 합니다.