Réduire la taille d'un jeu

Ce guide explique comment réduire la taille d'un jeu. Lors de l'installation, un jeu plus petit nécessite moins de temps de téléchargement et moins de données. Ces deux points permettent d'augmenter les conversions entraînant une installation. Une étude Google montre qu'une augmentation de 6 Mo de la taille des APK diffusés entraîne une diminution de 1% du taux d'installation. De nombreux développeurs déplacent des éléments de l'APK vers un réseau de diffusion de contenu (CDN), mais cela entraîne pour eux des coûts à la fois pour l'hébergement du CDN et pour le développement et la maintenance du système de gestion des éléments.

Pour réduire la taille d'un jeu, procédez comme suit :

  1. Utilisez des modes de diffusion optimisés, comme les app bundles et Play Asset Delivery.
  2. Déterminez la taille de base du jeu et comprenez sa structure.
  3. Recherchez des éléments et d'autres fichiers dont la taille peut être réduite.
  4. Inspectez les textures graphiques et identifiez les opportunités d'optimisation.
  5. Suivez les recommandations générales concernant les éléments.

Utiliser des modes de diffusion optimisés, comme les Android App Bundles et Play Asset Delivery

Prenons l'exemple des modes de diffusion suivants :

  • Bien que les anciens projets génèrent généralement un APK pour la publication, les jeux publiés sur Google Play devraient utiliser un Android App Bundle. Les app bundles fournissent des APK optimisés en fonction de la configuration de l'appareil de chaque utilisateur. En moyenne, les app bundles réduisent la taille de l'application de 20 %.

  • Pour diffuser des éléments de jeu via Google Play et dépasser la taille de téléchargement maximale de 200 Mo pour les app bundles jusqu'à plusieurs Go, utilisez Play Asset Delivery (PAD). Aucun CDN externe n'est requis. PAD accepte trois modes de diffusion distincts, chacun pouvant être utilisé dans un seul et unique jeu :

    • Install-time (lors de l'installation) : les éléments sont téléchargés lors de l'installation. Les éléments sont empaquetés dans des packs d'éléments, qui remplacent les fichiers OBB (Opaque Binary Blob).
    • Fast-follow (diffusion rapide) : téléchargez les éléments après l'installation.
    • Fast-follow (à la demande) : le jeu lance le téléchargement des éléments si nécessaire.

    PAD nécessite que les jeux soient empaquetés au format App Bundle. PAD peut également réduire la quantité de données utilisées par le CDN d'un développeur (le cas échéant).

  • Google Play utilise des Android App Bundles pour générer et diffuser des APK optimisés pour la configuration d'appareil de chaque utilisateur. Ces APK optimisés incluent un seul ensemble d'éléments de texture, au format de compression optimal pour l'appareil. Configurez votre app bundle de sorte qu'il accepte différents formats de compression de texture afin que votre application soit compatible avec le plus grand nombre d'appareils.

Déterminer la taille de base du jeu et comprendre sa structure

Pour vous familiariser avec le jeu, identifier la quantité de travail nécessaire pour chaque optimisation et déterminer si le jeu télécharge des éléments supplémentaires, procédez comme suit :

  1. Utilisez une version de production (et non une version de débogage) du développeur ou l'APK publié.
  2. Notez la taille du fichier binaire fourni par le développeur ou, si le jeu a été publié, sur la page Play Store du jeu. Pour la taille de l'APK, le facteur le plus important est la quantité de données qu'un utilisateur doit télécharger pour exécuter le jeu.
  3. Installez le jeu sur un appareil et exécutez-le jusqu'au menu initial. À ce stade, vérifiez la taille d'installation du jeu indiquée par Android (sous Paramètres > Stockage). Certains jeux ont une petite taille d'installation initiale, car il s'agit du principal chiffre à optimiser, mais ils téléchargent des données supplémentaires après l'installation. Certains jeux téléchargent plusieurs gigaoctets de données après l'installation.
  4. Certains jeux ne téléchargent des données que lorsque vous commencez à y jouer. Vous devez jouer un peu pour déterminer la quantité de données supplémentaires qu'un utilisateur type télécharge lorsqu'il joue au jeu pour la première fois.

Rechercher des éléments et d'autres fichiers dont la taille peut être réduite

Cette section explique comment réduire la taille des fichiers dans un APK. Vous pouvez utiliser l'explorateur d'app bundle pour télécharger des APK propres à un appareil.

Pour réduire la taille des fichiers empaquetés directement dans l'APK, procédez comme suit :

  1. Utilisez l'analyseur d'APK d'Android Studio. Dans Android Studio, sélectionnez Fichier > Profil ou APK de débogage et sélectionnez votre APK.
  2. Sélectionnez le dossier Éléments. Pour chaque fichier, la taille brute et le pourcentage de la taille totale de téléchargement sont indiqués.
  3. Examinez le dossier Éléments et déterminez l'emplacement de la majeure partie des données du jeu. Déterminez si certains éléments occupent un espace excessif (c'est-à-dire plus de 1 % du total). Recherchez en particulier les éléments suivants :

    • Fichiers image et vidéo volumineux (par exemple, PNG, JPEG et mp4) : ces fichiers sont généralement utilisés dans les écrans d'accueil, les arrière-plans et les logos. Ces fichiers sont rarement utilisés dans la plupart des jeux et peuvent être compressés davantage sans affecter l'expérience utilisateur. Les fichiers PNG sans perte sont particulièrement volumineux et sont d'excellents candidats pour la compression.
    • Fichiers de police volumineux (par exemple, fichiers TTF) : l'ajout d'emoji peut augmenter considérablement la taille du fichier de polices. Si la taille d'un fichier de police est supérieure à quelques centaines de kilo-octets, envisagez d'en réduire la taille.
    • Versions ou formats de fichiers audio en double que vous pouvez combiner.
  4. Si plusieurs Interfaces binaires d'application (ABI) sont incluses dans l'APK, déplacez-les dans des App bundles ou créez plusieurs fichiers APK.

  5. Déterminez la taille des fichiers d'objets partagés binaires (.so). Pour inspecter des fichiers binaires et vérifier s'ils contiennent des éléments qui n'ont pas besoin d'être inclus, par exemple des fichiers journaux, vous pouvez utiliser l'outil Bloaty McBloatface. Pour savoir comment optimiser les fichiers binaires, reportez-vous à la section Indicateurs et options de compilation.

  6. Examinez le fichier manifeste Android pour connaître les formats graphiques acceptés. Déterminez si l'APK contient plusieurs balises <supports-gl-texture>. Si le jeu accepte les formats de plusieurs GPU dans un seul APK, envisagez d'utiliser le système Basis Universal de Binomial. Ce système de compression de texture GPU crée des fichiers de texture dans un format intermédiaire pouvant être rapidement transcodé vers le GPU.

Inspecter les textures graphiques et identifier les opportunités d'optimisation

Cette section décrit les outils et les méthodes requis pour déterminer si les textures graphiques utilisées dans le jeu peuvent être optimisées.

Pour inspecter les textures dans le jeu, utilisez Android GPU Inspector (AGI), RenderDoc ou, pour les GPU Qualcomm Snapdragon uniquement, Snapdragon Profiler.

Recherchez les éléments suivants :

  • Textures qui peuvent être redimensionnées avec une résolution plus faible, comme une grande texture pour un élément qui n'est affiché qu'en petite taille dans le jeu. Le sous-échantillonnage des textures est un processus gourmand en ressources de calcul.
  • Utilisation de plusieurs petites textures pouvant être combinées dans un seul map de texture.
  • Textures qui peuvent utiliser moins de bits dans les canaux de couleur. Il s'agit en particulier des textures contenant seulement quelques textures solides. Les dégradés et les nuances de couleur nécessitent davantage de bits de résolution et ne sont donc pas de bons candidats.
  • Explorez de meilleurs algorithmes de compression des textures, de ETC1 à ETC2 et ASTC.
  • Supprimez le niveau mipmap supérieur lors du chargement des textures sur les appareils bas de gamme pour économiser de la mémoire. Le système de streaming de texture d'Unity permet d'effectuer cette opération.

  • Si vous ne l'avez pas déjà fait, consultez le fichier manifeste Android pour connaître les formats graphiques acceptés. Déterminez si l'APK contient plusieurs balises <supports-gl-texture>. Si le jeu accepte les formats de plusieurs GPU dans un seul APK, envisagez d'utiliser le système Basis Universal de Binomial. Ce système de compression de texture GPU crée des fichiers de texture dans un format intermédiaire pouvant être rapidement transcodé vers le GPU.

Recommandations générales pour les éléments

Suivez ces recommandations pour les éléments d'un APK :

  • Éléments image, audio et vidéo (hors textures GPU) : déterminez si les éléments peuvent être redimensionnés ou compressés davantage. Les taux de compression plus élevés sont généralement acceptables pour les jeux. Les fichiers PNG sans perte sont particulièrement volumineux et sont donc d'excellents candidats pour la compression.
  • Éléments d'image (hors textures GPU) : envisagez d'utiliser WEBP, un format de compression d'image pour la compression avec et sans perte. Le format WEBP avec pertes compresse les images entre 25 et 34 % de plus que le format JPG.
  • Réduisez la résolution des textures : une texture beaucoup plus grande que le nombre de pixels qui s'affichent à l'écran est une utilisation inefficace de l'espace de stockage et des ressources GPU. Pour modifier une texture et voir à quoi elle ressemble dans une image sans avoir à recompiler le jeu, utilisez AGI.
  • Modifiez les formats de texture des graphiques : utilisez des formats de texture qui utilisent moins de bits par canal. Par exemple, utilisez un format de texture 16 bits (RVB565, par exemple) au lieu d'un format de texture 32 bits (ARVB, par exemple). Pour en savoir plus, consultez les sections suivantes :

Ressources supplémentaires