FPS Rata-Rata
Kecepatan frame yang lancar dan stabil sangat penting untuk memberikan pengalaman bermain game berkualitas tinggi di perangkat Android. Saat mengukur performa game, Anda harus mengukur FPS rata-rata sebagai dasar pengukuran untuk memberikan pemahaman dasar tentang pengalaman. Anda harus mengoptimalkan game untuk memenuhi kecepatan frame rata-rata 60 FPS guna memastikan pengalaman bermain game yang luar biasa.
FPS P90 dan P99 untuk stabilitas
Dengan rata-rata 60 FPS yang lancar, game masih dapat mengalami gangguan sesekali, micro-stuttering, dan jeda input yang tidak dapat diprediksi, sehingga menghasilkan pengalaman pemain yang buruk.
Jadi, stabilitas frame sama pentingnya dengan melacak kecepatan frame rata-rata. Di sinilah Anda harus mengukur metrik kecepatan frame P90 dan P99 sebagai dasar yang konsisten dan indikator tersendat. Metrik ini mencatat "akhir" performa agar Anda dapat mengoptimalkan kelancaran pengalaman pemain.
Metrik
- FPS Rata-Rata (dasar): Metrik mendasar ini memberikan dasar umum performa game Anda. Meskipun merupakan tolok ukur standar, penghitungan rata-rata berarti penurunan frame dan micro-stuttering yang terjadi sesekali tidak dapat dideteksi, sehingga tidak cukup untuk merepresentasikan pengalaman pemain dengan sendirinya.
- FPS P90 (dasar yang konsisten pada persentil 10%): Ini menunjukkan bahwa 90% frame Anda melampaui dasar yang konsisten ini, dan hanya 10% frame terlambat yang memerlukan waktu lebih lama untuk dirender. Jika kecepatan frame P90 Anda tinggi dan mendekati rata-rata, game berjalan dengan baik secara konsisten untuk sebagian besar sesi.
- FPS P99 (indikator tersendat pada persentil 1%): Ini menunjukkan bahwa 99% frame Anda melampaui indikator tersendat ini, yang secara khusus mengisolasi 1% frame paling lambat. Metrik ini penting untuk mendeteksi jeda mikro, penundaan pemuatan aset, dan lonjakan rendering berat aset secara tiba-tiba yang menyebabkan gangguan yang terlihat.
Contoh
Dengan membandingkan FPS rata-rata dengan metrik P90 dan P99, Anda dapat mendiagnosis secara akurat perilaku mendasar game.
Skenario 1: Kurva Optimal (Game yang Dioptimalkan)
- Rata-rata: 60 FPS (16,6 md)
- P90: 58 FPS (17,2 md)
- P99: 52 FPS (19,2 md)
- Analisis: Metrik dikelompokkan secara ketat. Game terasa sangat lancar dan konsisten. Tidak ada jeda mikro, dan bahkan 1% frame terburuk hampir tidak terlihat oleh mata manusia.
Skenario 2: Hambatan Pemuatan (CPU/GPU Terikat)
- Rata-rata: 45 FPS (22,2 md)
- P90: 40 FPS (25,0 md)
- P99: 38 FPS (26,3 md)
- Analisis: Kecepatan frame rata-rata lebih rendah, tetapi konsisten. P99 tidak turun secara drastis dibandingkan dengan rata-rata. Hal ini menunjukkan bahwa sistem pada dasarnya kewalahan dengan setelan grafis atau batasan resolusi. Game tidak akan terasa tersendat, tetapi terasa lambat. Menurunkan setelan grafis biasanya akan meningkatkan metrik ini secara seragam.
Skenario 3: 60 FPS yang tidak stabil (Kompilasi Shader / Streaming Aset Tersendat)
- Rata-rata: 60 FPS (16,6 md)
- P90: 45 FPS (22,2 md)
- P99: 15 FPS (66,6 md)
- Analisis: Ini adalah skenario terburuk. Meskipun kecepatan frame rata-rata tampak sangat baik, P99 mengungkapkan masalah serius. P99 pada 66,6 md berarti game benar-benar berhenti selama beberapa frame sekaligus. Hal ini menunjukkan adanya pencilan berat—biasanya disebabkan oleh hambatan CPU, penundaan streaming aset (misalnya, RAM atau penyimpanan yang lambat), atau gangguan yang disebabkan oleh kompilasi shader.
Pengukuran
Untuk mengukur FPS Rata-Rata, P90, dan P99 secara efektif, Anda dapat menggunakan perintah timestats surfaceflinger dumpsys Android. Alat ini memberikan FPS rata-rata dan histogram waktu presentToPresent untuk semua lapisan yang dirender. Waktu presentToPresent frame adalah interval antara frame saat ini dan frame sebelumnya yang digambar.
Berikut adalah petunjuk langkah demi langkah untuk mengumpulkan dan menghitung metrik ini untuk game Anda:
Mulai merekam: Jalankan perintah berikut dengan tanda enable dan clear untuk mulai merekam informasi:
adb shell dumpsys SurfaceFlinger --timestats -clear -enableInformasi dump: Setelah game dimainkan cukup lama, jalankan perintah lagi dengan tanda dump untuk menampilkan informasi:
adb shell dumpsys SurfaceFlinger --timestats -dumpFilter menurut lapisan: Informasi yang di-dump menyediakan data untuk semua lapisan yang dirender oleh SurfaceFlinger. Anda harus menemukan bagian yang sesuai dengan game Anda dengan memfilter berdasarkan
layerName(misalnya, layerName = SurfaceView[com.example.yourgame...]).layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833Mengidentifikasi FPS rata-rata: FPS Rata-Rata untuk setiap lapisan dihitung secara otomatis dan ditampilkan langsung dalam output dump (misalnya, averageFPS = 30.179).
... averageFPS = 30.179 ...Menghitung FPS P90 dan P99: Untuk menemukan metrik P90 dan P99, Anda perlu menganalisis totalFrames dan histogram waktu
presentToPresentyang diberikan dalam dump.totalFrames = 1000 ... presentToPresent histogram is as below: 0ms=0 1ms=0 2ms=0 3ms=0 4ms=0 5ms=0 6ms=0 7ms=0 8ms=0 9ms=0 10ms=0 11ms=0 12ms=0 13ms=0 14ms=0 15ms=0 16ms=850 17ms=0 18ms=0 19ms=0 20ms=0 21ms=0 22ms=0 23ms=0 24ms=0 25ms=0 26ms=0 27ms=0 28ms=0 29ms=0 30ms=0 31ms=0 32ms=0 33ms=100 34ms=0 36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=35 54ms=0 58ms=0 62ms=0 66ms=10 70ms=0 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=5 106ms=0 110ms=0 114ms=0 118ms=0 122ms=0 126ms=0 130ms=0 134ms=0 138ms=0 142ms=0 146ms=0 150ms=0 200ms=0 250ms=0 300ms=0 350ms=0 400ms=0 450ms=0 500ms=0 550ms=0 600ms=0 650ms=0 700ms=0 750ms=0 800ms=0 850ms=0 900ms=0 950ms=0 1000ms=0A. Contoh Konseptual (Tabel Distribusi Kumulatif) Asumsikan sesi game Anda mencatat totalFrames sebanyak 1.000. Untuk menemukan P90 dan P99, Anda menghitung ambang batas milidetik saat jumlah frame kumulatif mencapai 900 frame (90%) dan 990 frame (99%), dengan menghitung dari bucket milidetik terendah.
Waktu Frame (ms) Jumlah Frame (Histogram) Jumlah Frame Kumulatif Status / Penghitungan Persentil 16 md 850 850 85,0% 33 md 100 950 95,0%
(Target P90 900 Tercapai! → 1000/33 = 30,3 FPS)50 md 35 985 98,5% 66 md 10 995 99,5%
(Target P99 990 Tercapai! → 1000/66 = 15,1 FPS)102 md 5 1.000 100% B. Logika Penerapan (Pseudocode) Jika Anda mengotomatiskan analisis ini menggunakan skrip Python atau parser log, logika untuk mengekstrak nilai P90 dan P99 dari histogram dapat diterapkan sebagai berikut:
# Define target thresholds based on total frame count p90_target = totalFrames * 0.90 p99_target = totalFrames * 0.99 cumulative_frames = 0 p90_fps = None p99_fps = None # Iterate through the parsed SurfaceFlinger histogram data (sorted by millisecond) for ms_bucket, frame_count in present_to_present_histogram: cumulative_frames += frame_count # Capture P90 when cumulative frames cross the 90% threshold if p90_fps is None and cumulative_frames >= p90_target: p90_fps = 1000 / ms_bucket # Capture P99 when cumulative frames cross the 99% threshold if p99_fps is None and cumulative_frames >= p99_target: p99_fps = 1000 / ms_bucket break # Optimization: stop iterating once both targets are foundBerhenti merekam: Setelah mengumpulkan semua informasi yang diperlukan, Anda harus menonaktifkan timestats menggunakan tanda nonaktif:
adb shell dumpsys SurfaceFlinger --timestats -disable
Sesi Lambat
Sesi Lambat mengidentifikasi masalah performa dunia nyata yang meluas. Sesi dikatakan "lambat" jika lebih dari 25% frame turun di bawah nilai minimum (misalnya, 20 FPS). Meskipun berguna untuk menemukan masalah build yang kritis, metrik ini saja tidak dapat menjamin pengalaman yang berkualitas tinggi dan berkelanjutan. Game mungkin menghindari batas Slow Session, tetapi masih mengalami micro-stuttering yang mengganggu pengalaman 60 FPS yang lancar.
Meskipun keduanya berasal dari waktu frame, 'Sesi Lambat' dan 'Kecepatan Frame' memiliki peran yang berbeda. Metrik FPS Rata-Rata, P90, dan P99 mengukur kualitas dan keberlanjutan performa, mendeteksi penurunan instan dan kecepatan yang tidak konsisten yang mungkin terlewatkan oleh metrik Sesi Lambat.
Kesimpulan
Pengoptimalan performa yang berhasil memerlukan strategi yang komprehensif. Developer harus menggunakan Sesi Lambat sebagai radar utama untuk mendeteksi penurunan performa yang parah, lalu memeriksa FPS rata-rata, P90, dan P99 untuk mendiagnosis penyebab yang mendasarinya dan memverifikasi kelancaran gameplay yang sebenarnya. Dengan mengintegrasikan metrik ini, Anda dapat memastikan aplikasi Anda memberikan pengalaman pengguna yang berkelanjutan dan luar biasa secara konsisten.
Referensi lainnya
Untuk mempelajari lebih lanjut teknik pembuatan profil lanjutan, penerapan Frame Pacing API, dan strategi pengoptimalan khusus mesin, lihat dokumentasi developer Android resmi:
- Android Vitals: Sesi lambat: Pahami cara Google Play mengukur dan melaporkan periode rendering lambat yang berkelanjutan, yang secara langsung memengaruhi pengalaman pengguna. "Sesi lambat" didefinisikan sebagai sesi pengguna dengan lebih dari 25% frame berjalan lambat (misalnya, membutuhkan waktu lebih dari 50 md, setara dengan 20 FPS).
- Android Developers: Mengoptimalkan Performa Game: Jelajahi hub pusat untuk optimasi game Android. Panduan komprehensif ini mencakup praktik terbaik dan alat pembuatan profil (seperti AGI dan Perfetto) untuk membantu Anda memaksimalkan performa game secara keseluruhan.