Panduan ini menjelaskan proses untuk menganalisis dan mengoptimalkan performa game di perangkat Android untuk pengalaman pengguna yang lancar. Bagian ini mencakup identifikasi bottleneck performa, perbedaan antara masalah CPU dan GPU, serta verifikasi hasil pengoptimalan.
Tidak peduli seberapa seru atau menariknya sebuah game, jika tidak berjalan dengan baik di perangkat seluler, pemain tidak akan menikmatinya, dan game tersebut tidak akan sesukses yang diharapkan. Bahkan game yang menyenangkan pun dapat mengalami masalah seperti frame per detik (FPS) yang rendah atau perangkat menjadi terlalu panas. Masalah ini membuat pemain tidak senang. Oleh karena itu, meningkatkan performa game sangat penting dan Anda harus memahami cara mengoptimalkannya.
Proses pengoptimalan performa melibatkan langkah-langkah berikut:
Mengukur performa keseluruhan game. Mengukur penurunan performa berdasarkan per adegan untuk menunjukkan anomali.
Pemeriksaan terikat CPU dan GPU. Tentukan penyebab yang mendasarinya, apakah terikat CPU atau terikat GPU.
Alat: Unreal Insight, Unity Profiler, Perfetto, dan Alat pengukuran performa.
Pengoptimalan CPU. Perbaiki hambatan performa yang teridentifikasi.
Alat: Unreal Insight, Unity Profiler, Perfetto, dan Simpleperf.
Pengoptimalan GPU. Perbaiki hambatan performa yang teridentifikasi.
Alat: RenderDoc, Arm Mobile Studio, AGI, Alat khusus vendor.
Pengujian A/B. Lakukan pengujian A/B untuk memvalidasi secara ketat efikasi pengoptimalan yang diterapkan.
Alat: Unreal Insight, Unity Profiler, Perfetto, dan Alat pengukuran performa, penguncian frekuensi CPU atau GPU, dan RenderDoc.
Proses iteratif ini (1-5) dipertahankan hingga FPS dan parameter termal yang ditargetkan berhasil dicapai.
Prasyarat
Siapkan build game untuk pengujian di perangkat Android.
Instal alat berikut:
Menganalisis performa game yang komprehensif
Anda harus memeriksa performa keseluruhan game dan mengidentifikasi penurunan performa atau anomali berbasis adegan. Sebelum mengoptimalkan game, periksa performa saat ini. Karena game mencakup banyak UI dan adegan, analisis adegan dengan penggunaan CPU atau GPU yang tinggi, atau tata letak yang berperforma tidak terduga, untuk memantau penurunan performa dan pemakaian CPU atau GPU per adegan.
- Menguantifikasi penurunan performa: Gunakan alat pengukuran performa untuk mengukur performa keseluruhan game. Ukur performa berdasarkan per adegan untuk mengidentifikasi area tertentu yang mengalami penurunan kualitas atau anomali.
- Mengidentifikasi adegan yang bermasalah: Analisis data untuk menemukan adegan dengan penggunaan CPU atau GPU yang tinggi, atau tempat tata letak layar gagal menghasilkan performa yang diharapkan.
- Kumpulkan data rekaman aktivitas: Gunakan alat rekaman aktivitas untuk mengumpulkan data performa mendetail untuk adegan yang teridentifikasi bermasalah.
Mengidentifikasi bottleneck CPU atau GPU
Jika game tidak mencapai target FPS, tentukan apakah game tersebut terikat CPU atau terikat GPU. Menganalisis perilaku CPU dan GPU sangat penting untuk menemukan peluang pengoptimalan, bahkan saat perangkat menjadi panas atau menggunakan terlalu banyak daya selama gameplay. Anda dapat menggunakan berbagai metode untuk mengetahui apakah sistem terikat CPU atau terikat GPU.
Menganalisis data rekaman aktivitas: Gunakan alat pilihan Anda untuk menganalisis data rekaman aktivitas:
- Unreal Insight (Unreal Engine): Analisis rekaman aktivitas untuk melihat pengaturan waktu untuk
GameThread,RenderThread, danRHIThread.- Jika
GameThreadatauRenderThreadmelampaui batas waktu frame (misalnya, 33,3 md untuk 30 FPS), game tersebut terikat CPU. - Jika
RHIThreadmenunjukkan eksekusi yang berkepanjangan atau menyumbang sebagian besar waktu frame, game tersebut terikat GPU.
- Jika
Gambar 2. Rekaman aktivitas insight Unreal dengan GameThread, RenderThread, dan RHIThread (klik untuk memperbesar). - Unity Profiler (Unity): Jika thread utama menggunakan banyak waktu
pada penanda seperti
Gfx.WaitForPresentOnGfxThread, sementara thread render menampilkanGfx.PresentFrameatau<GraphicsAPIName>.WaitForLastPresent, game tersebut terikat GPU.
Gambar 3. Contoh terikat GPU untuk Unity Profiler (klik untuk memperbesar). - Perfetto: Analisis penetapan inti CPU dan detail eksekusi thread. Analisis ini memfasilitasi identifikasi hambatan performa melalui peninjauan mendetail informasi eksekusi thread.
Overhead CPU: Rekaman aktivitas menunjukkan bahwa workload pada
GameThreaddanRenderThread, bersama dengan VSync, menyebabkan penundaan padaQueuePresentThread RHI, sehingga menandakan skenario yang terikat CPU.
Gambar 4. Rekaman aktivitas Perfetto dengan detail eksekusi CPU (klik untuk memperbesar). Overhead GPU: Jika waktu penyelesaian GPU melebihi batas waktu render frame, misalnya, 25 md, game akan terikat GPU. Rekaman aktivitas menunjukkan bahwa penyelesaian GPU melebihi 25 md, yang menandakan skenario terikat GPU.
Gambar 5. Detail rekaman aktivitas Perfetto dengan overhead GPU (klik untuk memperbesar).
- Unreal Insight (Unreal Engine): Analisis rekaman aktivitas untuk melihat pengaturan waktu untuk
Menggunakan perintah stat Unreal Engine:
stat unit: Membandingkan waktu yang dialokasikan untuk thread Game, Draw, dan RHI. Jika waktu Game dan Draw rendah, tetapi waktu RHI secara konsisten melebihi batas waktu frame, game tersebut terikat GPU. Misalnya, jika FPS yang diperlukan adalah 30 (setara dengan 33,33 md per frame), dan thread Game dan Draw secara konsisten tetap berada dalam rentang 10-15 md, tetapi RHI secara konsisten melebihi 30 md, hal ini menunjukkan skenario yang terikat GPU.
Gambar 6. Unit statistik memfasilitasi estimasi kondisi terikat GPU. stat VulkanRHI: Periksa durasi Pengiriman Antrean dan Penyajian Antrean.
Gambar 7. Stat VulkanRHI memfasilitasi estimasi kondisi terikat GPU (klik untuk memperbesar). stat slow: Periksa waktu yang dialokasikan untuk thread Game, Render, dan RHI untuk menunjukkan hambatan.
Periksa metrik performa: Gunakan hasil dari analisis performa game komprehensif. Di Android:
- Terikat CPU: Penggunaan CPU (dinormalisasi) lebih dari 15%, dengan penggunaan GPU rendah dan FPS rendah.
- Terikat GPU: Penggunaan GPU lebih dari 90%.
Biasanya, jika FPS dan penggunaan GPU rendah, sedangkan penggunaan CPU melebihi 15%, situasi tersebut dapat dianggap terikat CPU.
Gambar 8. Metrik performa dengan penggunaan CPU dan GPU.
Mengoptimalkan performa CPU
Jika analisis menunjukkan bahwa game terikat CPU, selidiki lebih lanjut untuk menentukan thread atau API tertentu yang menyebabkan hambatan.
Untuk panduan mendetail, lihat Tips Pengoptimalan CPU dan GPU untuk Android.
Mengoptimalkan performa GPU
Jika analisis menunjukkan bahwa game terikat GPU, selidiki lebih lanjut menggunakan debugger frame untuk menganalisis pipeline render dan panggilan gambar.
Untuk panduan mendetail, lihat Tips Pengoptimalan CPU dan GPU untuk Android.
Memverifikasi efektivitas pengoptimalan
- Lakukan pengujian A/B: Buat build dengan pengoptimalan yang diterapkan.
- Ukur performa: Gunakan alat dan metode yang sama dari analisis awal untuk mengukur performa build yang dioptimalkan.
- Bandingkan hasil: Bandingkan data performa baru dengan data awal untuk mengonfirmasi bahwa hambatan yang teridentifikasi telah diatasi dan target FPS serta termal telah terpenuhi.
- Ulangi: Ulangi langkah-langkah analisis dan pengoptimalan hingga performa tercapai.