Wuthering Waves adalah game RPG aksi fidelitas tinggi yang dikembangkan oleh Kuro Games. Mengoptimalkan konsumsi daya sangat penting untuk memberikan pengalaman pengguna premium secara berkelanjutan untuk sesi game yang lama.
Android Studio memperkenalkan Power Profiler dari Hedgehog (2023.1.1) yang dapat membantu developer memahami data konsumsi daya berdasarkan Monitor Power Rail di Perangkat (ODPM).
Dengan kemampuan pembuatan profil daya di Android Studio, Anda juga dapat melakukan pengujian A/B konsumsi daya secara efektif untuk fitur aplikasi Android Anda (seperti yang ditunjukkan di bawah).
Apa yang mereka lakukan
Kuro Games memulai dengan menggunakan Power Profiler Android Studio untuk memahami pengaruh perilaku game terhadap konsumsi daya perangkat. Pengalaman ini mendorong mereka untuk mengembangkan alat yang disesuaikan berdasarkan Perfetto dan ODPM, yang menggabungkan peningkatan berikut:
- Tampilan yang disesuaikan - developer dapat memfilter power rail dan menetapkan rentang waktu fleksibel.
- Pemeliharaan yang lebih baik - developer dapat mengupload data konsumsi daya ke sistem QA yang disesuaikan dan membandingkan data di seluruh versi game.
Memproses data ODPM
Untuk mengakses data ODPM, Kuro Games menggunakan
Perfetto Trace Processor (Python) Metric API
untuk memproses avg_used_power_mw data
sesi 30 detik dari
metrik android_powerrails
, yang ditentukan sebagai AndroidPowerRails
dalam
proto metrik Pertetto,
ke dalam format berikut:
Power Rail | Kualitas Grafik | FPS | Kecerahan | Konsumsi Daya rata-rata | Persentase(Per Jalur / Total) |
---|---|---|---|---|---|
power.rail.cpu.big | Tinggi | 30 | Rendah | 474,158 mW | 14,70% |
power.rail.cpu.mid | Tinggi | 30 | Rendah | 470,916 mW | 14,60% |
power.rail.cpu.little | Tinggi | 30 | Rendah | 438,662 mW | 13,60% |
power.rail.gpu | Tinggi | 30 | Rendah | 346,761 mW | 10,70% |
... | ... | ... | ... | ... | ... |
Mengidentifikasi power rail yang menggunakan daya tinggi
Tidak ada nilai standar untuk setiap power rail. Untuk mengidentifikasi power rail yang mengonsumsi daya tinggi, Kuro Games membuat pengujian A/B menggunakan berbagai kasus pengujian, termasuk idle, running, dan combating. Power rail tertentu dengan nilai yang jelas tinggi dapat diidentifikasi dengan membandingkan nilai power rail yang sama. Dengan membandingkan perbedaan perilaku di berbagai kasus pengujian, akar masalah konsumsi daya akan diketahui secara bertahap.
Pengoptimalan
Dengan data ODPM, Kuro Games dapat mengukur peningkatan setiap skenario pengoptimalan:
- Mengubah strategi penjadwalan core CPU dan menyesuaikan prioritas berbagai thread untuk mengurangi beban kerja core besar
- Mengompilasi PSO (Pipeline State Object) terlebih dahulu untuk mengurangi beban kerja kompilasi shader runtime CPU
- Mengimplementasikan pemusnahan PVS (Set yang Mungkin Terlihat) untuk mengurangi beban rendering GPU
- Membakar culling oklusi bayangan offline untuk mengurangi beban kerja rendering GPU
Untuk membandingkan hasil pengujian dalam kondisi yang identik dan dapat direproduksi, Kuro Games mengambil data ODPM dalam kasus pengujian menggunakan perspektif kamera dan tampilan 3D yang sama dengan durasi yang sama.
Hasil
Dengan memanfaatkan data dari ODPM dan pembuatan profil daya, Kuro Games mengurangi total konsumsi daya sebesar 9,68%, dari 3233 mW pada rilis September (versi 0904) menjadi 2920 mW pada rilis November (versi 1.4 final). Gambar berikut menjelaskan pengurangan daya ini dalam setelan FPS dan grafis yang konsisten.
Data ODPM saat ini hanya tersedia untuk perangkat Pixel 6 dan yang lebih baru, tetapi peningkatan dapat dilihat di semua perangkat Android melalui metrik lain, termasuk Penggunaan CPU, Penggunaan GPU, dan Batterystats. Misalnya, Kuro Games juga melihat pengurangan penggunaan GPU secara keseluruhan sebesar 9,6% dalam scene yang sama untuk Oppo Reno 5.
Memulai
Anda dapat memulai dari data Power Profiler, atau Perfetto Power Rails untuk kasus penggunaan lanjutan.
Nama Power Rail ODPM bersifat khusus per perangkat. Nama rel mungkin seperti
"S2S_VDD_G3D"; pengetahuan khusus tentang hardware perangkat diperlukan untuk
menafsirkan data monitor daya yang sesuai. Dari level API Android 35, Anda
dapat menggunakan PowerMonitor
dari
getSupportedPowerMonitors
.
Dengan PowerMonitor, Anda dapat mengambil pemetaan antara label yang dapat dibaca manusia
dan nama power rail mentah yang ditetapkan oleh setiap OEM.
Untuk memverifikasi peningkatan pada perangkat tanpa ODPM, Anda dapat menggunakan clock CPU, clock GPU, dan estimasi bandwidth memori sebagai proxy untuk konsumsi daya.