Convertire un gioco esistente in un gioco istantaneo

Avviso:Google Play Instant non sarà più disponibile. A partire da dicembre 2025, le app istantanee non potranno essere pubblicate tramite Google Play e tutte le API istantanee di Google Play Services non funzioneranno più. Gli utenti non riceveranno più app istantanee da Play utilizzando alcun meccanismo.

Stiamo apportando questa modifica in base al feedback degli sviluppatori e ai nostri continui investimenti per migliorare l'ecosistema dall'introduzione di Google Play Instant.

Per continuare a ottimizzare per la crescita degli utenti, invitiamo gli sviluppatori a indirizzare gli utenti alla loro app o al loro gioco normale utilizzando i deep link per reindirizzarli a percorsi o funzionalità specifici, se pertinenti.

I passaggi per configurare le app da eseguire su Google Play Instant, come spiegato in Crea la tua prima app istantanea, si applicano anche ai giochi. Questa guida mette in evidenza alcuni passaggi di configurazione specifici per i 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 sappia già il tipo di esperienza di gioco che vuoi offrire. Se vuoi trovare idee e best practice per creare giochi di alta qualità, leggi le best practice per l'UX dei giochi su Google Play Instant.

Inoltre, prima di pubblicare un gioco che può essere eseguito su Google Play Instant, devi esaminare 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 per i link diretti.

Definisci i codici versione corretti

Il codice di versione dell'esperienza istantanea del gioco deve essere inferiore a quello del gioco installabile. Il controllo delle versioni dell'app in questo modo 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 versione per l'esperienza Google Play Instant a 1.
  • Aumenta il codice 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'esperienza istantanea.

È possibile sviluppare il gioco istantaneo e il gioco installabile in due progetti Android Studio separati. Se lo fai, tuttavia, devi fare quanto segue per pubblicare il tuo gioco su Google Play:

  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.

Supportare l'ambiente di esecuzione

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

Disattivare il traffico in 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, Android disattiva il supporto cleartext nel tuo gioco per impostazione predefinita.

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 nello snippet di codice seguente:

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 della sandbox di destinazione

Aggiorna il file AndroidManifest.xml del tuo 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> del tuo gioco, come mostrato nello snippet di codice seguente:

<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 delle app

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

  • La cache dell'app istantanea viene sottoposta a garbage collection perché la memoria disponibile sul dispositivo è in esaurimento.
  • L'utente riavvia il dispositivo.

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

Se lo spazio di archiviazione del sistema è quasi esaurito, è possibile che i dati utente dell'esperienza istantanea vengano rimossi dalla memoria interna. Pertanto, è consigliabile sincronizzare periodicamente i dati utente con il server del gioco in modo che i progressi dell'utente vengano conservati.

Riduci le dimensioni dell'app

A differenza di altri tipi di app, i giochi su Google Play Instant hanno un limite di dimensioni di download di 15 MB. Per creare un gioco di queste dimensioni, potresti dover eseguire il refactoring della logica del gioco. Questa sezione descrive alcuni strumenti e tecniche per ottimizzare le dimensioni del gioco.

Strumenti

Il seguente elenco di strumenti può aiutarti a determinare i fattori che contribuiscono 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 che ogni elemento contribuisce alle dimensioni complessive. Utilizza questo strumento per controllare rapidamente le dimensioni di risorse, asset, logica e librerie native che il tuo gioco sta utilizzando.
  • Bloaty McBloatface: mostra il profilo delle dimensioni dei file binari.
  • Android GPU Inspector: visualizza l'effetto delle dimensioni del file della riduzione delle dimensioni delle texture senza dover ricompilare il gioco.

Tecniche

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

  • Estrai parte della logica del 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.
  • Prendi in considerazione l'utilizzo del formato WebP, soprattutto se utilizzi texture non compresse sulla GPU. Il formato WebP crea immagini della stessa qualità delle immagini JPEG, ma più piccole del 15% al 30%. Sebbene la decompressione delle immagini WebP richieda più tempo, questo è comunque significativamente inferiore al tempo di download delle texture del gioco. Google ha anche integrato il formato in un motore di gioco open source.
  • Comprimere o riutilizzare suoni e musica.
  • Utilizza flag di compilazione diversi per ridurre le dimensioni del file binario:
    • -fvisibility=hidden: il più importante. In cmake, puoi specificarlo nel seguente modo:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz: importante anche per ridurre le dimensioni. Se compili utilizzando gcc, utilizza -Os.
    • -flto: a volte riduce le dimensioni del file.
    • Flag del linker: utilizza --gc-sections insieme ai flag del compilatore, ad esempio -ffunction-sections e -fdata-sections.
  • Utilizza Proguard per ridurre le dimensioni del codice e delle risorse.
  • Utilizza Gradle 4.4 o versioni successive per generare file DEX più piccoli.
  • Implementa la distribuzione cloud degli asset.

Dividere un gioco di grandi dimensioni in più APK

Può essere difficile ottimizzare l'esperienza Google Play Instant per fare in modo che il gioco rientri in un singolo APK da 15 MB, anche dopo aver applicato i consigli per ridurre le dimensioni dell'APK. Per risolvere questo problema, puoi dividere il gioco in più APK. I giocatori iniziano scaricando l'APK di base principale; mentre giocano, gli APK divisi rimanenti vengono resi disponibili al gioco in background.

Ad esempio, l'APK di base può contenere il motore di gioco principale e le risorse necessarie per visualizzare una schermata di caricamento. Quando viene avviato l'APK di base, viene visualizzata la schermata di caricamento e viene immediatamente richiesto un APK split aggiuntivo che contiene i dati del gioco e del livello. Una volta disponibile, l'APK suddiviso può caricare le risorse nel motore di gioco e fornire al giocatore i contenuti necessari per iniziare la partita.

Adotta le best practice per l'esperienza utente

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

Supportare 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 ti prepara per i dispositivi con hardware solo a 64 bit. Scopri di più sul supporto a 64 bit.

Controllare se il gioco esegue l'esperienza istantanea

Se parte della logica del gioco dipende dal fatto che l'utente sia coinvolto nella tua esperienza istantanea, chiama il metodo isInstantApp(). Questo metodo restituisce true se il processo attualmente in esecuzione è un'esperienza istantanea.

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

Visualizzare una richiesta di installazione

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

Per scoprire di più su come e quando chiedere al giocatore di installare l'app, consulta Best practice UX per i giochi su Google Play Instant.

Trasferire i dati a 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'esperienza istantanea alla versione completa del gioco.

Se il tuo gioco specifica un targetSandboxVersion di 2, i progressi del giocatore vengono trasferiti automaticamente alla versione completa del gioco. In caso contrario, devi trasferire manualmente i dati relativi ai progressi del giocatore. Per farlo, utilizza l'API Cookie - app di esempio

Risorse aggiuntive

Scopri di più su Google Play Instant con queste risorse aggiuntive:

Codelab: crea la tua prima app istantanea
Aggiungi il supporto per Google Play Instant in un'app esistente.
Codelab: creare un'app istantanea con più funzionalità
Modularizza un'app con più funzionalità.