Questa guida descrive come ridurre le dimensioni di un gioco. Al momento dell'installazione, un gioco più piccolo richiede meno tempo per il download e meno dati. Entrambi generano più conversioni di installazione. Da una ricerca di Google è emerso che un aumento di 6 MB delle dimensioni degli APK pubblicati comporta una diminuzione dell'1% della percentuale di installazione. Molti sviluppatori spostano gli asset dall'APK alla rete CDN (Content Delivery Network), ma poi devono sostenere dei costi sia per l'hosting della rete CDN sia per lo sviluppo e la manutenzione del sistema di gestione degli asset.
Per ridurre le dimensioni di un gioco, svolgi i seguenti passaggi:
- Utilizza metodi di pubblicazione ottimizzati come App Bundle e Play Asset Delivery.
- Determinare la dimensione di base del gioco e comprenderne la struttura.
- Cerca asset e altri file che possono essere ridotti.
- Esamina le texture grafiche e identifica opportunità di ottimizzazione.
- Segui i consigli generali per gli asset.
Utilizza metodi di pubblicazione ottimizzati, come Android App Bundle e Play Asset Delivery
Prendi in considerazione i seguenti metodi di pubblicazione:
Sebbene i progetti legacy di solito generino un APK per la pubblicazione, i giochi pubblicati su Google Play dovrebbero utilizzare un Android App Bundle. Gli app bundle forniscono APK ottimizzati personalizzati in base alla configurazione del dispositivo di ciascun utente. In media, gli app bundle riducono le dimensioni dell'app del 20%.
Per pubblicare risorse di gioco tramite Google Play e superare il limite di 200 MB per le dimensioni di download per app bundle fino a più GB, utilizza Play Asset Delivery (PAD). Non è necessaria una rete CDN esterna. PAD supporta tre diversi metodi di pubblicazione, ognuno dei quali può essere utilizzato in un singolo gioco:
- Tempi di installazione: scarica gli asset al momento dell'installazione. Gli asset sono pacchettizzati in pacchetti di asset, che sostituiscono i file OBB (Opaque Binary Blob).
- Rapida risposta: scarica gli asset dopo l'installazione.
- On demand: il gioco avvia il download delle risorse in base alle esigenze.
PAD richiede il pacchetto dei giochi nel formato App Bundle. Il PAD può anche ridurre la quantità di dati utilizzati dalla CDN di uno sviluppatore (se ne ha ancora bisogno).
Google Play utilizza Android App Bundle per generare e pubblicare APK ottimizzati per la configurazione del dispositivo di ogni utente. Questi APK ottimizzati includono un singolo insieme di asset texture, formattati con il formato di compressione ottimale per il dispositivo. Configura il tuo app bundle in modo che supporti diversi formati di compressione delle texture al fine di supportare la più ampia gamma di dispositivi.
Determinare la dimensione di base del gioco e comprenderne la struttura
Per acquisire familiarità con il gioco, determina la quantità di lavoro richiesta per una determinata ottimizzazione e determina se il gioco scarica asset aggiuntivi, svolgi i passaggi che seguono:
- Utilizza una build di produzione (non di debug) dello sviluppatore o dell'APK pubblicato.
- Registra la dimensione del file binario come pubblicato dallo sviluppatore o, se il gioco è stato pubblicato, nella pagina del Play Store del gioco. Per quanto riguarda le dimensioni degli APK, il fattore più importante è la quantità di dati che un utente deve scaricare per poter eseguire il gioco effettivo.
- Installa il gioco su un dispositivo ed eseguilo sul menu iniziale del gioco. A questo punto, controlla le dimensioni di installazione del gioco segnalate da Android (in Impostazioni > Spazio di archiviazione). Alcuni giochi hanno dimensioni di installazione iniziali ridotte, poiché questo è il numero chiave da ottimizzare, ma scaricano dati aggiuntivi dopo l'installazione. Alcuni giochi scaricano diversi gigabyte di dati dopo l'installazione.
- Per alcuni giochi, i dati vengono scaricati soltanto dopo che hai iniziato a giocare. Dovresti giocare un po' per determinare la quantità di dati aggiuntivi scaricata dal gioco per un utente tipico che usa il gioco per la prima volta.
Cerca asset e altri file che possono essere ridotti
Questa sezione descrive come ridurre le dimensioni dei file in un APK. Puoi utilizzare lo strumento Explorer per app bundle per scaricare APK specifici per dispositivo.
Per ridurre le dimensioni dei file pacchettizzati direttamente nell'APK, procedi nel seguente modo:
- Utilizza lo Strumento di analisi APK di Android Studio. In Android Studio, seleziona File > Profilo o APK di debug, quindi seleziona il tuo APK.
- Seleziona la cartella Asset. Per ogni file vengono indicate le dimensioni del file non elaborato e la percentuale della dimensione totale di download.
Controlla la cartella Risorse per stabilire dove si trova la maggior parte dei dati del gioco. Determina se ci sono asset che occupano una quantità eccessiva di spazio, ovvero maggiore dell'1% del totale. In particolare, verifica quanto segue:
- File immagine e video di grandi dimensioni (ad esempio file PNG, JPEG e mp4): questi file vengono generalmente utilizzati in schermate iniziali, sfondi e loghi. Questi file vengono utilizzati raramente nella maggior parte dei giochi e possono essere compressi ulteriormente senza influire sull'esperienza utente. I file PNG senza perdita di dati sono particolarmente grandi e sono ottimi candidati per la compressione.
- File di caratteri di grandi dimensioni (ad esempio, file TTF): se aggiungi il supporto per emoji, le dimensioni del file del carattere possono aumentare notevolmente. Se un file dei caratteri supera alcune centinaia di kilobyte, prova a ridurne le dimensioni.
- Versioni o formati di file audio duplicati che puoi combinare.
Se nell'APK sono incluse più Application Binary Interfaces (ABI), passa agli App Bundle o crea più APK.
Determina la dimensione dei file di oggetti condivisi binari (.so). Per ispezionare i file binari e verificare se ci sono elementi che potrebbero non essere inclusi, ad esempio i file di log, puoi utilizzare lo strumento Bloaty McBloatface. Per ulteriori informazioni su come ottimizzare i file binari, consulta la pagina relativa alla compilazione di flag e opzioni.
Esamina il file manifest di Android per conoscere i formati grafici supportati. Determina se sono presenti più tag
<supports-gl-texture>
nell'APK. Se il gioco supporta formati per più GPU in un unico APK, valuta la possibilità di utilizzare Base Universal di Binomial. Questo sistema di compressione delle texture GPU crea file di texture in un formato intermedio che può essere rapidamente transcodificato nella GPU.
Esaminare le texture grafiche e identificare opportunità di ottimizzazione
Questa sezione descrive gli strumenti e i metodi necessari per determinare se le texture grafiche utilizzate nel gioco possono essere ottimizzate.
Per ispezionare le texture nel gioco, utilizza Android GPU Inspector (AGI), RenderDoc o, solo per le GPU Qualcomm Snapdragon, Snapdragon Profiler.
Cerca quanto segue:
- Texture che possono essere ridimensionate a una risoluzione più piccola, ad esempio una texture di grandi dimensioni per un elemento visualizzato solo in dimensioni ridotte nel gioco. Il downgrade delle texture richiede costo di calcolo.
- Utilizzo di più texture piccole che possono essere combinate in un'unica mappa di texture.
- Texture che possono utilizzare meno bit nei canali di colore. I buoni candidati sono texture con alcune texture solide. I gradienti e le sfumature di colore richiedono più bit di risoluzione e quindi non sono buoni candidati.
- Esplora gli algoritmi di compressione delle texture migliori, da ETC1 a ETC2 e ASTC.
Elimina il livello della mipmap superiore quando carichi le texture su dispositivi di fascia inferiore per risparmiare memoria. Il sistema di streaming Texture di Unity può farlo.
Se non l'hai ancora fatto, esamina il file manifest Android per conoscere i formati grafici supportati. Determina se ci sono più tag
<supports-gl-texture>
nell'APK. Se il gioco supporta formati per più GPU in un unico APK, valuta l'utilizzo di Base Universal di Binomial. Questo sistema di compressione delle texture GPU crea file di texture in un formato intermedio che può essere rapidamente transcodificato nella GPU.
Consigli generali per gli asset
Segui questi consigli per gli asset di un APK:
- Asset immagine, audio e video (non texture GPU): consente di determinare se gli asset possono essere ridimensionati o compressi ulteriormente. Proporzioni di compressione più elevate sono generalmente accettabili per i giochi. I file PNG senza perdita di dati sono particolarmente grandi e sono quindi ottimi candidati per la compressione.
- Asset immagine (non texture GPU): valuta la possibilità di utilizzare WEBP, un formato di compressione delle immagini per la compressione con e senza perdita di dati. Il WEBP senza perdita di dati comprime le immagini dal 25% al 34% in più rispetto al formato JPG.
- Ridurre la risoluzione delle texture: una texture molto più grande del numero di pixel relativi allo schermo rappresenta un uso inefficiente dello spazio e delle risorse GPU. Per modificare una texture e vedere come appare in un frame senza la necessità di ricreare il gioco, utilizza AGI.
- Modifica i formati di texture delle immagini: utilizza formati di texture che utilizzano meno bit per canale. Ad esempio, utilizza un formato di texture a 16 bit come RGB565 anziché un formato di texture a 32 bit come ARGB. Per ulteriori informazioni, consulta quanto segue:
Risorse aggiuntive
- Recenti miglioramenti dell'Android App Bundle e tempistiche per le nuove app su Google Play
- Ridurre le dimensioni degli APK nei giochi istantanei Android
- Texture supercompresse decodificabili con GPU (documento di ricerca)