Wuthering Waves è un gioco di ruolo d'azione ad alta fedeltà sviluppato da Kuro Games. L'ottimizzazione del consumo energetico è molto importante per offrire un'esperienza utente premium in modo sostenibile per sessioni di gioco lunghe.
Android Studio ha introdotto Power Profiler di Hedgehog (2023.1.1) che può aiutare gli sviluppatori a comprendere i dati sul consumo energetico in base a On Device Power Rails Monitor (ODPM).
Con le funzionalità di profilazione energetica di Android Studio, puoi anche eseguire test A/B efficaci sul consumo energetico delle funzionalità della tua app per Android (come mostrato di seguito).
Cosa è stato fatto
Kuro Games ha iniziato a utilizzare Power Profiler di Android Studio per capire in che modo il comportamento dei giochi influisce sul consumo energetico del dispositivo. Questa esperienza li ha portati a sviluppare uno strumento personalizzato basato su Perfetto e ODPM, che include i seguenti miglioramenti:
- Visualizzazioni personalizzate: lo sviluppatore può filtrare le linee di potenza e preimpostare intervalli di tempo flessibili.
- Migliore manutenzione: lo sviluppatore può caricare i dati sul consumo di energia nel proprio sistema di QA personalizzato e confrontarli tra le varie versioni del gioco.
Elabora i dati ODPM
Per accedere ai dati ODPM, Kuro Games ha utilizzato
l'API Metric di Perfetto Trace Processor (Python)
per elaborare avg_used_power_mw data
di sessioni di 30 secondi dalla
metrica android_powerrails
, definita come AndroidPowerRails
in
proto di metriche Perfetto,
nel seguente formato:
Power Rail | Qualità grafica | FPS | Luminosità | Consumo energetico medio | Percentuale(per binario / totale) |
---|---|---|---|---|---|
power.rail.cpu.big | Alto | 30 | Bassa | 474,158 mW | 14,70% |
power.rail.cpu.mid | Alto | 30 | Bassa | 470,916 mW | 14,60% |
power.rail.cpu.little | Alto | 30 | Bassa | 438,662 mW | 13,60% |
power.rail.gpu | Alto | 30 | Bassa | 346,761 mW | 10,70% |
… | ... | ... | ... | ... | … |
Identifica le linee di alimentazione con un consumo elevato
Non esiste un valore standard per ogni rail di alimentazione. Per identificare le linee di alimentazione con un elevato consumo di energia, Kuro Games ha creato test A/B utilizzando diversi casi di test, tra cui inattività, esecuzione e combattimento. È possibile identificare linee di alimentazione specifiche con valori chiaramente elevati confrontando i valori delle stesse linee di alimentazione. Confrontando le differenze di comportamento tra vari casi di test, la causa principale del problema di consumo di energia verrà individuata gradualmente.
Ottimizzazioni
Con i dati ODPM, Kuro Games può misurare il miglioramento di ogni scenario di ottimizzazione:
- Modifica della strategia di pianificazione dei core della CPU e regolazione della priorità di diversi thread per ridurre il carico di lavoro dei core grandi
- Precompilazione dell'oggetto PSO (Pipeline State Object) per ridurre il carico di lavoro di compilazione dello shader di runtime della CPU
- Implementazione del culling PVS (Potentially Visible Sets) per ridurre il carico di lavoro di rendering della GPU
- Baking offline shadow occlusion culling per ridurre il carico di lavoro di rendering della GPU
Per confrontare i risultati dei test in condizioni identiche e riproducibili, Kuro Games ha recuperato i dati ODPM in un caso di test utilizzando la stessa scena 3D e la stessa prospettiva della fotocamera con la stessa durata.
Risultati
Sfruttando i dati di ODPM e del profiling della potenza, Kuro Games ha ridotto il consumo di energia totale del 9,68%, da 3233 mW nella release di settembre (versione 0904) a 2920 mW nella release di novembre (versione 1.4 finale). La figura seguente illustra questa riduzione di potenza con impostazioni FPS e grafiche coerenti.
I dati ODPM sono attualmente disponibili solo per i dispositivi Pixel 6 e versioni successive, ma i miglioramenti possono essere visualizzati su tutti i dispositivi Android tramite altre metriche, tra cui Utilizzo CPU, Utilizzo GPU e Batterystats. Ad esempio, Kuro Games ha registrato anche una riduzione complessiva dell'utilizzo della GPU del 9,6% nella stessa scena per Oppo Reno 5.
Inizia
Per i casi d'uso avanzati, puoi iniziare da Power Profiler o dai dati di Perfetto Power Rails.
I nomi delle barre di alimentazione ODPM sono specifici del dispositivo. Un nome della barra potrebbe essere "S2S_VDD_G3D". Per interpretare i dati del monitor della potenza corrispondenti, è necessaria una conoscenza specifica dell'hardware del dispositivo. A partire dal livello API Android 35, puoi utilizzare PowerMonitor
da getSupportedPowerMonitors
.
Con PowerMonitor, puoi recuperare la mappatura tra le etichette di facile lettura
e i nomi delle linee di alimentazione non elaborate impostati da ciascun OEM.
Per verificare il miglioramento sui dispositivi senza ODPM, puoi utilizzare le stime della frequenza della CPU, della frequenza della GPU e della larghezza di banda della memoria come sostituti del consumo energetico.
Risorse aggiuntive
Ottimizzare l'efficienza energetica