Cuando reduzcas tu app para que se adapte a los requisitos de tamaño, primero prueba las técnicas estándar de optimización del tamaño del APK. Si necesitas reducir aún más el tamaño, es posible que debas implementar la entrega de elementos en la nube. En este documento, se describe cómo preparar elementos para la entrega en la nube y las opciones de compatibilidad con diversos motores para juegos. Si bien la guía de esta página se centra en los juegos, los principios se aplican a cualquier app que contenga elementos grandes.
Preparación
Cuando pienses en dividir tu app para la entrega de elementos en la nube, considera cómo puedes dividir los archivos de tu app en secciones según cuándo deben estar disponibles para el usuario. Estos requisitos de disponibilidad suelen clasificarse en las siguientes tres categorías: requisitos permanentes, requisitos para el lanzamiento y requisitos posteriores.
Requisitos permanentes
Algunos elementos son difíciles de separar en bloques más pequeños, o bien deben agruparse en el APK base, como el código del juego y las dependencias de su biblioteca o motor. Si bien Google Play Core admite paquetes de aplicación en códigos, muchos motores no admiten códigos de descarga posterior.
Requisitos para el lanzamiento
Una vez que el juego se inicia, el usuario debe poder jugar inmediatamente. Google Play Instant exige que los usuarios puedan comenzar a jugar en menos de 15 segundos con una conexión LTE o 4G (consulta la lista de verificación de Google Play Instant). Por lo tanto, el tamaño de cualquier descarga secundaria posterior al inicio no debe exceder el necesario para admitir la experiencia inicial. Por ejemplo, una descarga de seguimiento rápida inmediatamente posterior al inicio puede incluir el primer nivel del juego y los elementos del entorno, o bien el código necesario para ejecutar los primeros minutos de juego.
Requisitos posteriores
Todo lo que pueda descargarse más tarde, en segundo plano según corresponda, recae en esta categoría, que incluye el mayor porcentaje de elementos en el caso de los juegos extensos. La descarga posterior de estos elementos ayudará a reducir el tamaño de la app al mínimo posible.
Compatibilidad con motores
La entrega de elementos en la nube es la principal forma de habilitar un juego que supere el límite de 15 MB para juegos instantáneos. La compatibilidad con la descarga de elementos variará en función del motor de juego. Consulta los casos más comunes a continuación, así como las opciones de hosting de elementos.
Ten en cuenta que, si son menos los elementos que se necesitan para el lanzamiento, el usuario podrá empezar el juego más rápido, lo que reducirá la cantidad de usuarios que abandonen y, al mismo tiempo, incrementará la retención de jugadores para ese primer inicio.
Entrega de funciones en Play (mediante paquetes de aplicaciones)
Si publicas tu app como un paquete de aplicación (método preferido), puedes usar módulos de función para obtener recursos adicionales más allá del APK base. Para tu app instantánea, cada módulo de funciones debe establecer dist:instant="true"
en el manifiesto. No se debe usar la propiedad dist:on-demand
, ya que sirve principalmente para módulos a pedido en APK instalados. Además, el tamaño de cada módulo de funciones debe ser inferior al límite de APK instantáneo de 15 MB, sin importar si el módulo contiene código o no. Si no se mantiene cada módulo por debajo de este límite, se impedirá la publicación en los segmentos Alfa y de lanzamiento. Una vez que se configure correctamente, puedes recuperar módulos de funciones en el entorno de ejecución mediante la biblioteca de PlayCore.
Cocos Creator
Cocos es compatible con la entrega de recursos en la nube desde la versión v2.0.4. Cocos descarga los elementos a pedido y procesa los marcadores de posición si los elementos no se descargaron a tiempo. Cocos genera archivos de elementos que deben estar alojados con algún servicio en línea, ya que no cuenta con uno propio.
Unity
La entrega de elementos en la nube es compatible con el complemento Google Play Instant de Unity para las versiones 5.6, 2017.4 o 2018.2 de Unity. Las versiones posteriores de Unity ofrecen más beneficios para la eliminación de motores, por lo que es recomendable migrarlos a fin de liberar más espacio. Los elementos en la nube de Unity se alojan en archivos AssetBundle
que Unity crea para ti. Subirlos a un servidor en la nube permite la entrega de elementos en la nube, ya que Unity es compatible con la descarga de conjuntos de elementos.
Otros motores
Independientemente de que uses un motor personalizado o una colección de bibliotecas nativas, tu elección podría admitir la descarga de recursos en la nube. Si tienes una cantidad considerable de elementos que deben descargarse de la nube, deberás codificar o integrar un método de descarga de elementos a pedido para tu juego. Las API de Firebase Hosting y Firebase Cloud Storage son buenos puntos de partida. Algunos motores ofrecen una recuperación de archivos HTTPS simple que también podría ser suficiente para satisfacer tus necesidades.
Hosting de elementos
A menos que uses paquetes de aplicaciones de Google Play para descargar tus elementos a través de Play, deberás alojarlos en otro lugar. Puedes alojarlos en el servicio que quieras, siempre que tenga una distribución razonable y esté disponible mundialmente. Como hay usuarios de la app de Google Play Juegos en todo el mundo, los elementos almacenados en la nube deben entregarse rápidamente en cualquier ubicación.