Cómo reducir el tamaño de un juego

En esta guía, se describe cómo reducir el tamaño de un juego. Después de la instalación, un juego más pequeño requerirá menos tiempo de descarga y menos datos. Ambos generan conversiones de instalación más altas. Google Research muestra que un aumento de 6 MB en el tamaño del APK entregado da como resultado una disminución del 1% en la tasa de instalación. Muchos desarrolladores mueven recursos del APK a una red de distribución de contenidos (CDN), pero luego incurren en costos relacionados con el hosting de la CDN y el desarrollo y mantenimiento del sistema de administración de esos recursos.

Si deseas reducir el tamaño de un juego, sigue estos pasos:

  1. Usa métodos de entrega optimizados, como Android App Bundles y Play Asset Delivery.
  2. Determina el tamaño del modelo de referencia del juego y comprende su estructura.
  3. Busca recursos y otros archivos cuyo tamaño pueda reducirse.
  4. Revisa las texturas de los gráficos e identifica oportunidades de optimización.
  5. Sigue las recomendaciones generales sobre los recursos.

Usa métodos de entrega optimizados, como Android App Bundles y Play Asset Delivery

Considera los siguientes métodos de entrega:

  • Si bien los proyectos heredados normalmente generan un APK para publicación, los juegos publicados en Google Play deberían usar un Android App Bundle. Los paquetes de aplicaciones entregan APK optimizados y personalizados para cada configuración de los dispositivos de los usuarios. En promedio, los paquetes de aplicaciones reducen el tamaño de las apps en un 20%.

  • A fin de entregar recursos de juegos mediante Google Play y superar el límite de tamaño de descarga de 150 MB para paquetes de aplicaciones de hasta varios GB, usa Play Asset Delivery (PAD). No se necesita una CDN externa. PAD admite tres métodos de entrega distintos, cada uno de los cuales se puede usar en un solo juego:

    • Durante la instalación: Descarga los recursos al momento de la instalación. Los recursos se reúnen en paquetes, que reemplazan los archivos Opaque Binary BLOB (OBB).
    • Entrega rápida: Descarga los recursos después de la instalación.
    • A pedido: El juego iniciará la descarga de los recursos según sea necesario.

    PAD requiere que los juegos se empaqueten mediante el formato de paquete de aplicación. PAD también puede reducir la cantidad de datos que usa la CDN del desarrollador (si aún resulta necesaria).

  • Google Play usa Android App Bundles a fin de generar y entregar APK optimizados para cada configuración de los dispositivos de los usuarios. Estos APK optimizados incluyen un solo conjunto de recursos de textura, con el formato de compresión óptimo para el dispositivo. Configura tu paquete de aplicación de modo que sea compatible con diferentes formatos de compresión de textura y con la gama más amplia de dispositivos.

Determina el tamaño del modelo de referencia del juego y comprende su estructura

A fin de familiarizarte con el juego, definir la cantidad de trabajo necesario para cualquier optimización y determinar si el juego descargará recursos adicionales, realiza los siguientes pasos:

  1. Usa una compilación de producción (no depurable) del desarrollador o del APK publicado.
  2. Registra el tamaño del archivo binario tal como lo entregó el desarrollador o, si ya se publicó el juego, tal como figura en la página de Play Store del juego. En relación con el tamaño del APK, el factor más importante es la cantidad de datos que un usuario debe descargar a fin de ejecutar el juego.
  3. Instala el juego en un dispositivo y ejecútalo hasta llegar al menú inicial. En este punto, comprueba el tamaño de instalación del juego según lo que informa Android (en Configuración > Almacenamiento). Algunos juegos tienen un tamaño de instalación inicial pequeño, ya que este es el número de clave que se optimizará, pero se descargarán datos adicionales después de la instalación. Algunos juegos descargan varios gigabytes de datos luego de su instalación.
  4. Algunos juegos descargan datos después de que empiezas a jugarlos. Debes jugar un poco a fin de determinar la cantidad de datos adicionales que se descargarán para un usuario típico que juega por primera vez.

Busca recursos y otros archivos cuyo tamaño pueda reducirse

En esta sección, se describe cómo reducir el tamaño de los archivos de un APK. Puedes usar el explorador de paquete de aplicación a los efectos de descargar APK específicos del dispositivo.

Si deseas reducir el tamaño de los archivos empaquetados directamente en el APK, sigue estos pasos:

  1. Usa el Analizador de APK de Android Studio. En Android Studio, selecciona File > Profile or debug APK y selecciona el APK.
  2. Selecciona la carpeta Assets. Para cada archivo, se muestran el tamaño del archivo sin procesar y el porcentaje del tamaño de descarga total.
  3. Revisa la carpeta Assets y determina dónde se encuentra la mayor parte de los datos del juego. Determina si algún recurso ocupa una cantidad excesiva de espacio (es decir, si supera el 1% del total). En particular, busca lo siguiente:

    • Archivos de imagen y video grandes (por ejemplo, archivos PNG, JPEG y mp4): En general, estos archivos se usan en pantallas de presentación, en segundo plano y en logotipos. Estos archivos no son frecuentes en la mayoría de los juegos y se pueden comprimir aún más sin afectar la experiencia del usuario. Los archivos PNG sin pérdida son especialmente grandes y excelentes candidatos para la compresión
    • Archivos de fuente grandes (por ejemplo, archivos TTF): Si agregas compatibilidad con emojis, esto puede aumentar de forma significativa el tamaño del archivo de fuente. Si un archivo de fuente pesa más de algunos cientos de kilobytes, analiza maneras de reducir su tamaño
    • Formatos de archivo de audio duplicados o versiones que puedes combinar
  4. Si se incluyen varias interfaces binarias de la aplicación (ABI) en el APK, avanza a los paquetes de aplicaciones o compila varios APK.

  5. Determina el tamaño de los archivos de objetos compartidos binarios (archivos .so). Si deseas inspeccionar archivos binarios a fin de comprobar si hay cosas que no necesitan incluirse, como los archivos de registro, puedes usar la herramienta Bloaty McBloatface. Obtén más información para optimizar los archivos binarios: consulta cómo compilar marcas y opciones

  6. Revisa el archivo de manifiesto de Android para conocer los formatos de gráficos compatibles. Determina si hay varias etiquetas <supports-gl-texture> en el APK. Si el juego admite formatos para varias GPU en un solo APK, considera usar el formato Basis Universal de Binomial. Este sistema de compresión de texturas de GPU crea archivos de textura en un formato intermedio que se puede transcodificar rápidamente a la GPU

Revisa las texturas de los gráficos e identifica oportunidades de optimización

En esta sección, se describen las herramientas y los métodos necesarios para determinar si las texturas gráficas utilizadas en el juego pueden optimizarse.

A fin de revisar las texturas del juego, usa el Inspector de GPU de Android (AGI), el RenderDoc o, para las GPU Qualcomm Snapdragon, el Generador de perfiles de Snapdragon.

Busca lo siguiente:

  • Texturas cuyo tamaño pueda ajustarse a una resolución más pequeña, como una textura grande para algo que solo se procesa en un tamaño pequeño en el juego. La reducción de muestreo de texturas son costosas en términos de procesamiento
  • Uso de varias texturas pequeñas que se pueden combinar en un solo mapa de texturas
  • Texturas que pueden usar menos bits en los canales de color. Aquellas que tengan algunas pocas texturas sólidas son buenas candidatas. Los gradientes y los matices de color requieren más bits de resolución y, por lo tanto, no son buenos candidatos
  • Explora mejores algoritmos de compresión de texturas, desde ETC1 hasta ETC2 y ASTC
  • Descarta el nivel de mipmap superior cuando se carguen las texturas en dispositivos de gama inferior a los efectos de ahorrar memoria. El sistema de transmisión de texturas de Unity puede hacer esto

  • Si aún no lo hiciste, revisa el archivo de manifiesto de Android para conocer los formatos de gráficos compatibles. Determina si hay varias etiquetas <supports-gl-texture> en el APK. Si el juego admite formatos para varias GPU en un solo APK, considera usar el formato Basis Universal de Binomial. Este sistema de compresión de texturas de GPU crea archivos de textura en un formato intermedio que se puede transcodificar rápidamente a la GPU

Recomendaciones generales para los recursos

Sigue estas recomendaciones en materia de recursos de un APK:

  • Recursos de imagen, audio y video (no texturas de GPU): Determina si los recursos se pueden cambiar de tamaño o comprimir aún más. Por lo general, las tasas de compresión más altas son aceptables para los juegos. Los archivos PNG sin pérdida son especialmente grandes y, por lo tanto, resultan excelentes candidatos para la compresión.
  • Elementos de imagen (no texturas de GPU): Considera usar WEBP, un formato de compresión de imágenes utilizado para la compresión con pérdida y sin ella. El formato WEBP con pérdida comprime imágenes del 25% al 34% más que el formato JPG.
  • Reduce la resolución de texturas: Una textura mucho más grande que la cantidad de píxeles que se renderizan en la pantalla es un uso ineficiente del espacio y de los recursos de GPU. Si deseas cambiar una textura y ver su aspecto en un marco sin necesidad de volver a compilar el juego, usa AGI.
  • Cambia los formatos de textura de los gráficos: Usa formatos de textura que usen menos bits por canal. Por ejemplo, usa un formato de textura de 16 bits como RGB565, en lugar de uno de 32 bits como ARGB. Para obtener más información, consulta las siguientes referencias:

Recursos adicionales