Aggiungi il supporto per l'accesso immediato

I passaggi per configurare le app da eseguire su Google Play Instant, come spiegato nella sezione Creare la tua prima app istantanea, si applicano anche ai giochi. Questa guida illustra alcuni passaggi di configurazione specifici dei giochi.

Puoi sviluppare giochi per Google Play Instant utilizzando Unity (con o senza il plug-in Google Play Instant Unity), Cocos2D, Android Studio o il tuo motore personalizzato.

Questa guida presuppone che tu conosca già il tipo di esperienza di gioco che vorresti fornire. Se vuoi conoscere idee e best practice per realizzare giochi di alta qualità, leggi le best practice relative all'esperienza utente per i giochi su Google Play Instant.

Inoltre, prima di pubblicare un gioco che può essere eseguito su Google Play Instant, ti consigliamo di consultare l'elenco di controllo dei requisiti tecnici.

Un'attività che include il seguente filtro per intent diventa il punto di ingresso per l'esperienza 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>

Questa attività viene avviata quando un utente tocca il pulsante Prova ora nel Play Store o il pulsante Gioca subito nell'app Google Play Giochi. Puoi anche avviare questa attività direttamente utilizzando l'API Deep Link.

Definisci i codici di versione corretti

Il codice di versione dell'app istantanea del tuo gioco deve essere inferiore al codice di versione del gioco installabile. Questo tipo di controllo delle versioni consente ai giocatori di passare dall'esperienza Google Play Instant al download e all'installazione del gioco sul proprio dispositivo. Il framework Android considera questa transizione come un aggiornamento dell'app.

Per assicurarti di seguire lo schema di controllo delle versioni consigliato, segui una di queste strategie:

  • Riavvia i codici di versione dell'esperienza Google Play Instant il giorno 1.
  • Aumenta il codice di versione dell'app installabile di un numero elevato, ad esempio 1000, per assicurarti che ci sia spazio sufficiente per aumentare il numero di versione dell'app istantanea.

È consentito sviluppare il gioco istantaneo e il gioco installabile in due progetti Android Studio distinti. In questo caso, tuttavia, per pubblicare il gioco su Google Play, dovrai procedere nel seguente modo:

  1. Utilizza lo stesso nome di pacchetto in entrambi i progetti Android Studio.
  2. In Google Play Console, carica entrambe le varianti nella stessa applicazione.

Per maggiori dettagli sull'impostazione della versione del gioco, vedi Eseguire il controllo della versione dell'app.

Supporta l'ambiente di esecuzione

Come altre app, i giochi su Google Play Instant vengono eseguiti in una sandbox limitata sul dispositivo. Per supportare questo ambiente di esecuzione, completa i passaggi mostrati nelle sezioni seguenti.

Disattiva il traffico con testo non crittografato

I giochi su Google Play Instant non supportano il traffico HTTP. Se il tuo gioco ha come target Android 9 (livello API 28) o versioni successive, per impostazione predefinita Android disattiva il supporto del testo in chiaro nel gioco.

Tuttavia, se il tuo gioco ha come target Android 8.1 (livello API 27) o versioni precedenti, devi creare un file Network Security Config. In questo file, imposta cleartextTrafficPermitted su false, come mostrato nel seguente snippet di codice:

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>

Aggiorna la versione sandbox di destinazione

Aggiorna il file AndroidManifest.xml del gioco istantaneo in modo che abbia come target l'ambiente sandbox supportato da Google Play Instant. Puoi completare questo aggiornamento aggiungendo l'attributo android:targetSandboxVersion all'elemento <manifest> dei tuoi giochi, come mostrato nel seguente snippet di codice:

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

Per saperne di più, consulta la documentazione relativa all'attributo targetSandboxVersion.

Non fare affidamento sulla presenza di una cache o di dati dell'app

L'app istantanea rimane scaricata sul dispositivo di un utente finché la cache dell'app istantanea non viene svuotata, in una delle seguenti situazioni:

  • La cache dell'app istantanea è garbage-collected perché la memoria disponibile sul dispositivo sta per esaurirsi.
  • L'utente riavvia il dispositivo.

Se si verifica uno dei due processi, l'utente deve scaricare di nuovo l'app istantanea per interagire con essa.

Se lo spazio di archiviazione nel sistema sta esaurendo, è possibile che i dati utente dell'app istantanea vengano rimossi dalla memoria interna. Pertanto, ti consigliamo di sincronizzare periodicamente i dati utente con il server del tuo gioco in modo che i progressi dell'utente vengano conservati.

Ridurre le dimensioni dell'app

A differenza di altri tipi di app, i giochi su Google Play Instant hanno un limite di 15 MB per le dimensioni di download. Per creare un gioco di queste dimensioni, potresti dover ridefinire la logica del gioco. In questa sezione vengono descritti alcuni strumenti e tecniche per ottimizzare le dimensioni del gioco.

Strumenti

Il seguente elenco di strumenti può aiutarti a determinare cosa contribuisce alle dimensioni del tuo gioco:

  • APK Analyzer: fornisce una visione olistica dei contenuti di un APK compilato. Utilizzando questa visualizzazione, puoi determinare il numero di byte a cui ogni elemento contribuisce alle dimensioni complessive. Utilizza questo strumento per controllare rapidamente le dimensioni delle risorse, gli asset, la logica e le librerie native utilizzate dal tuo gioco.
  • Bloaty McBloatface: mostra il profilo dimensioni dei file binari.
  • Controllo GPU Android: scopri l'effetto delle dimensioni del file che consente di ridurre le dimensioni della trama senza dover ricompilare il gioco.

Tecniche

Di seguito è riportato un elenco di tecniche che puoi utilizzare per ridurre le dimensioni del gioco:

  • Estrai parte della logica del tuo gioco e inseriscila in uno o più moduli delle funzionalità, che non vengono conteggiati ai fini del limite di dimensioni.
  • Riduci la risoluzione delle texture del gioco.
  • Potresti usare il formato WebP, soprattutto se utilizzi texture non compresse sulla GPU. Il formato WebP crea immagini con la stessa qualità delle immagini JPEG, ma più piccole dal 15% al 30%. Anche se la decompressione delle immagini WebP richiede più tempo, questo tempo di decompressione è comunque notevolmente inferiore al tempo di download delle trame del tuo gioco. Google ha anche integrato il formato in un motore di gioco open source.
  • Comprimi o riutilizza suoni e musica.
  • Utilizza diversi flag di compilazione per ridurre le dimensioni del file binario:
    • -fvisibility=hidden – Il più importante. In cmake, puoi specificarlo come segue:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz - Importante anche per ridurre le dimensioni. Se la compilazione viene eseguita utilizzando gcc, usa invece -Os.
    • -flto - A volte riduce le dimensioni del file.
    • Flag linker: utilizza --gc-sections insieme ai flag del compilatore, ad esempio -ffunction-sections e -fdata-sections.
  • Utilizza ProGuard per ridurre il codice e le risorse.
  • Utilizzare Gradle 4.4 o versioni successive per generare file DEX più piccoli.
  • Implementare la distribuzione nel cloud degli asset.

Dividere un gioco di grandi dimensioni in più APK

Può essere difficile ottimizzare l'esperienza Google Play Instant per adattare il gioco a un singolo APK da 15 MB, anche dopo aver applicato i consigli per ridurre le dimensioni degli APK. Per superare questa sfida, puoi dividere il gioco in più APK. Per iniziare, i giocatori scaricano l'APK di base principale; durante il gioco, gli APK suddivisi rimanenti vengono resi disponibili per il gioco in background.

Ad esempio, l'APK di base può contenere il motore di gioco principale e gli asset necessari per visualizzare una schermata di caricamento. Quando viene lanciato l'APK di base, viene visualizzata la schermata di caricamento e viene richiesto immediatamente un APK diviso aggiuntivo contenente i dati sul gioco e sul livello. Una volta disponibile l'APK diviso, può caricarne gli asset nel motore di gioco e fornire al giocatore i contenuti di cui ha bisogno per iniziare il gioco.

Adotta le best practice per l'UX

Dopo aver configurato il gioco in modo che supporti le esperienze istantanee, aggiungi la logica mostrata nelle sezioni seguenti per offrire un'esperienza utente positiva.

Supporto di architetture a 64 bit

Le app pubblicate su Google Play devono supportare le architetture a 64 bit. L'aggiunta di una versione a 64 bit della tua app offre miglioramenti delle prestazioni e consente la configurazione per i dispositivi con hardware solo a 64 bit. Scopri di più sul supporto del formato a 64 bit.

Controlla se per il gioco è attiva l'esperienza istantanea

Se parte della logica del tuo gioco dipende dal coinvolgimento dell'utente nell'esperienza istantanea, chiama il metodo isInstantApp(). Questo metodo restituisce true se il processo attualmente in esecuzione è un'esperienza istantanea.

Con questo controllo puoi determinare se la tua app deve essere eseguita in un ambiente di esecuzione limitato o se può sfruttare le funzionalità della piattaforma.

Visualizza una richiesta di installazione

Se hai creato un'esperienza di prova di Google Play Instant, a un certo punto il gioco dovrebbe chiedere al giocatore di installare la versione completa sul suo dispositivo. A questo scopo, utilizza il metodo showInstallPrompt() nelle API di Google per Android.

Per ulteriori informazioni su come e quando richiedere al player di eseguire l'installazione, consulta le best practice relative all'esperienza utente per i giochi su Google Play Instant.

Trasferire i dati su un'esperienza installata

Se un giocatore apprezza l'esperienza di prova, potrebbe decidere di installare la versione completa del gioco. Per offrire una buona esperienza utente, è importante che i progressi del giocatore vengano trasferiti dall'app istantanea alla versione completa del gioco.

Se il tuo gioco specifica uno targetSandboxVersion di 2, i progressi del giocatore vengono trasferiti automaticamente alla versione completa del gioco. In caso contrario, dovrai trasferire manualmente i dati relativi all'avanzamento del player. A questo scopo, utilizza l'API Cookie - app di esempio

Risorse aggiuntive

Scopri di più su Google Play Instant nelle seguenti risorse aggiuntive:

Codelab: creare la tua prima app istantanea
Aggiunta del supporto di Google Play Instant in un'app esistente.
Codelab: creare un'app istantanea con più funzionalità
Modula un'app multifunzionalità.