Ajouter la prise en charge de l'accès instantané

La procédure de configuration des applications à exécuter sur Google Play Instant, comme expliqué dans la section Créer votre première appli instantanée, s'applique également aux jeux. Ce guide décrit quelques étapes de configuration spécifiques à cet environnement.

Vous pouvez développer des jeux pour Google Play Instant à l'aide d'Unity (avec ou sans le plug-in Google Play Instant Unity), de Cocos2D, d'Android Studio ou de votre propre moteur personnalisé.

Dans ce guide, nous partons du principe que vous connaissez déjà le type de jeux vidéo que vous souhaitez fournir. Si vous avez besoin d'inspiration et de recommandations pour créer des jeux de haute qualité, consultez les bonnes pratiques concernant l'expérience utilisateur pour les jeux avec Google Play Instant.

Enfin, avant de publier un jeu avec Google Play Instant, nous vous recommandons de consulter la checklist des exigences techniques.

Une activité qui inclut le filtre d'intent suivant devient le point d'entrée de l'expérience Google Play Instant :

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

Cette activité est lancée lorsqu'un utilisateur appuie sur le bouton Essayer sur le Play Store ou sur le bouton Jouer instantanément dans l'application Google Play Jeux. Vous pouvez également lancer cette activité directement à l'aide de l'API de lien profond.

Définir les codes de version appropriés

Le code de version de l'expérience instantanée de votre jeu doit être inférieur au code de version du jeu installable. Cette méthode permet aux joueurs de passer de l'expérience instantanée Google Play au téléchargement et à l'installation du jeu sur leur appareil. Le framework Android considère cette transition comme une mise à jour d'application.

Pour vous assurer de respecter le schéma de gestion des versions recommandé, suivez l'une des stratégies suivantes :

  • Redémarrez les codes de version pour l'expérience Google Play Instant à partir de 1.
  • Augmentez le code de version de l'appli à installer avec un nombre élevé (1 000, par exemple) pour vous assurer que le numéro de version de l'expérience instantanée ait suffisamment de marge pour pouvoir évoluer.

Vous pouvez développer le jeu instantané et le jeu installable dans deux projets Android Studio distincts. Dans ce cas, vous devrez toutefois suivre les étapes ci-dessous pour pouvoir publier votre jeu sur Google Play :

  1. Utilisez le même nom de package dans les deux projets Android Studio.
  2. Dans la Google Play Console, importez les deux variantes dans la même application.

Pour en savoir plus sur la configuration de la version de votre jeu, consultez la section Gérer les versions de votre application.

Prendre en charge l'environnement d'exécution

Comme d'autres applications, les jeux sur Google Play Instant s'exécutent dans un bac à sable limité sur l'appareil. Pour utiliser cet environnement d'exécution, suivez la procédure décrite dans les sections ci-dessous.

Désactiver le trafic en texte clair

Les jeux sur Google Play Instant ne sont pas compatibles avec le trafic HTTP. Si votre jeu cible Android 9 (niveau d'API 28) ou version ultérieure, Android désactive par défaut la prise en charge du texte clair dans votre jeu.

Toutefois, si votre jeu cible Android 8.1 (niveau d'API 27) ou version antérieure, vous devez créer un fichier Network Security Config. Dans ce fichier, définissez cleartextTrafficPermitted sur false, comme indiqué dans l'extrait de code suivant :

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

Mettre à jour la version du bac à sable cible

Mettez à jour le fichier AndroidManifest.xml de votre jeu instantané afin qu'il cible l'environnement de bac à sable compatible avec Google Play Instant. Pour terminer cette mise à jour, ajoutez l'attribut android:targetSandboxVersion à l'élément <manifest> de votre jeu, comme indiqué dans l'extrait de code suivant :

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Pour en savoir plus, consultez la documentation concernant l'attribut targetSandboxVersion.

Ne pas compter sur la présence d'un cache ou de données d'application

Votre expérience instantanée reste téléchargée sur l'appareil de l'utilisateur jusqu'à ce que son cache soit vidé, ce qui se produit dans les situations suivantes :

  • Le cache de l'expérience instantanée est soumis à une récupération de mémoire, car l'appareil manque de mémoire disponible.
  • L'utilisateur redémarre son appareil.

Si l'un de ces processus a lieu, l'utilisateur devra télécharger à nouveau votre expérience instantanée pour pouvoir interagir avec elle.

Si le système manque d'espace de stockage, il est possible que les données utilisateur de votre expérience instantanée soient supprimées de la mémoire de stockage interne. Par conséquent, nous vous recommandons de synchroniser régulièrement les données utilisateur avec le serveur de votre jeu afin de préserver la progression de l'utilisateur.

Réduire la taille de votre application

Contrairement à d'autres types d'applications, la taille limite de téléchargement des jeux sur Google Play Instant est de 15 Mo. Pour créer un jeu de cette taille, vous devrez peut-être en refactoriser la logique. Cette section décrit certains outils et certaines techniques permettant d'optimiser la taille de votre jeu.

Outils

La liste suivante d'outils contribue à déterminer la taille de chaque élément de votre jeu par rapport à sa taille totale :

  • Analyseur d'APK : fournit un aperçu global du contenu d'un fichier APK compilé. Cette vue vous permet de déterminer le nombre d'octets de chaque élément par rapport à la taille globale. Cet outil vous permet de vérifier rapidement la taille des ressources, des éléments, de la logique et des bibliothèques natives de votre jeu.
  • Bloaty McBloatface : affiche le profil de taille des fichiers binaires.
  • Android GPU Inspector : permet de déterminer l'effet de la réduction de la taille des textures sur la taille du fichier, sans avoir à recompiler le jeu.

Techniques

Voici une liste de techniques que vous pouvez appliquer pour réduire la taille de votre jeu :

  • Placez une partie de la logique de votre jeu dans un ou plusieurs modules de fonctionnalités. Ceux-ci ne sont pas comptabilisés dans la limite de taille.
  • Réduisez la résolution des textures du jeu.
  • Pensez à utiliser le format WebP, en particulier si vous utilisez des textures non compressées sur le GPU. Le format WebP crée des images de la même qualité que les images JPEG, mais qui sont 15 à 30 % plus petites. Bien que la décompression des images WebP dure plus longtemps, sa durée reste beaucoup plus courte que le temps de téléchargement des textures de votre jeu. Google a également intégré ce format dans un moteur de jeu Open Source.
  • Compressez ou réutilisez les sons et la musique.
  • Utilisez différents indicateurs de compilation pour réduire la taille du fichier binaire :
    • -fvisibility=hidden : indicateur clé. Dans cmake, vous pouvez la spécifier comme suit :
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz : cet indicateur joue également un rôle majeur pour réduire la taille. Si vous effectuez la compilation à l'aide de gcc, utilisez plutôt -Os.
    • -flto : diminue parfois la taille du fichier.
    • Indicateurs Linker : utilisez --gc-sections conjointement avec des indicateurs de compilation, tels que -ffunction-sections et -fdata-sections.
  • Utilisez ProGuard pour réduire le code et les ressources.
  • Utilisez Gradle 4.4 ou une version ultérieure pour générer des fichiers DEX plus petits.
  • Mettez en œuvre la diffusion d'éléments dans le cloud.

Diviser un jeu volumineux en plusieurs fichiers APK

Il peut être difficile à la fois d'optimiser l'expérience instantanée Google Play et d'intégrer votre jeu dans un fichier APK limité à 15 Mo, même après avoir suivi les recommandations visant à réduire la taille de l'APK. Pour relever ce défi, vous pouvez diviser votre jeu en plusieurs fichiers APK. Les joueurs commencent par télécharger l'APK principal de base. Pendant leur partie, les APK divisés restants sont mis à la disposition du jeu en arrière-plan.

Par exemple, l'APK de base peut contenir le moteur de jeu principal et les éléments requis pour afficher un écran de chargement. Au lancement de l'APK de base, l'écran de chargement s'affiche, et un APK divisé supplémentaire contenant les données de jeu et de niveau est immédiatement demandé. Une fois l'APK divisé disponible, il peut charger ses éléments dans le moteur de jeu et fournir au joueur le contenu dont il a besoin pour commencer sa partie.

Appliquer les bonnes pratiques concernant l'expérience utilisateur

Une fois que vous avez configuré votre jeu pour qu'il soit compatible avec les expériences instantanées, ajoutez la logique illustrée dans les sections suivantes afin d'offrir une expérience utilisateur de qualité.

Assurer la compatibilité avec les architectures 64 bits

Les applications publiées sur Google Play doivent être compatibles avec les architectures 64 bits. L'ajout d'une version 64 bits de votre application améliore les performances et vous permet de prendre en charge des appareils avec du matériel 64 bits uniquement. En savoir plus sur la compatibilité avec les architectures 64 bits

Vérifier si le jeu fonctionne dans l'expérience instantanée

Si la logique de votre jeu dépend d'interactions de l'utilisateur dans l'expérience instantanée, appelez la méthode isInstantApp(). Cette méthode renvoie true si le processus en cours d'exécution est une expérience instantanée.

En procédant à cette vérification, vous pouvez déterminer si votre application doit s'exécuter dans un environnement d'exécution limité ou si elle peut exploiter des fonctionnalités de la plate-forme.

Afficher une invite d'installation

Si vous avez créé une expérience Google Play Instant pour donner au joueur un avant-goût de votre jeu, vous devez inviter le joueur à installer la version complète sur son appareil. Pour ce faire, utilisez la méthode showInstallPrompt() disponible dans les API Google pour Android.

Pour découvrir quand et comment inviter le joueur à installer le jeu, consultez les bonnes pratiques relatives à l'expérience utilisateur pour les jeux sur Google Play Instant.

Transférer les données vers une expérience installée

Si un joueur apprécie l'expérience instantanée préliminaire, il peut décider d'installer la version complète de votre jeu. Pour assurer une expérience utilisateur de qualité, il est important que la progression du joueur passe de l'expérience instantanée à la version complète du jeu.

Si votre jeu spécifie la targetSandboxVersion 2, la progression du joueur sera automatiquement transférée vers la version complète du jeu. Dans le cas contraire, vous devrez transférer manuellement les données liées à la progression du joueur. Pour ce faire, utilisez l'API Cookie (application exemple)

Ressources supplémentaires

Pour en savoir plus sur Google Play Instant, consultez ces ressources supplémentaires :

Atelier de programmation : Créer votre première appli instantanée
Proposez Google Play Instant dans une application existante.
Atelier de programmation : Créer une appli instantanée multifonction
Modularisez une application multifonction.