Sesi Lambat adalah metrik Android vitals baru di Konsol Google Play. Lambat adalah sesi saat lebih dari 25% frame berjalan lambat. Bingkai lambat jika tidak ditampilkan kurang dari 50 md setelah frame sebelumnya (setara dengan 20 FPS). Android vitals juga melaporkan Sesi Lambat kedua metrik dengan target 34 md (setara dengan 30 FPS). Dengan Sesi Lambat, Anda dapat memahami performa kecepatan frame game, yang memengaruhi seberapa game Anda terasa lancar dan lancar bagi pengguna.
Pada waktunya, Play akan mulai mengalihkan pengguna dari game yang tidak dapat mencapai 20 FPS di ponsel mereka. Perlu diperhatikan bahwa Android vitals hanya memulai pemantauan kecepatan frame setelah game berjalan selama satu menit.
Buka Pusat Bantuan kami untuk mengetahui detail selengkapnya tentang metrik.
![Grafik seperti diagram lingkaran yang menunjukkan jumlah frame lambat dan frame tidak lambat.](https://developer.android.com/static/topic/performance/vitals/images/slow-session.png?authuser=19&hl=id)
Cara mengukur FPS dan mendeteksi frame lambat
Perintah dumpsys surfaceflinger timestats
Android menyediakan FPS rata-rata dan
histogram pengaturan waktu ada untuk menyajikan untuk semua lapisan yang sedang
dirender. Waktu sekarang hingga sekarang dalam frame adalah interval antara
{i>frame<i} saat ini dan {i>frame<i} sebelumnya
yang sedang digambar. Berikut
langkah demi langkah untuk menggunakan perintah guna mengumpulkan FPS game:
Jalankan perintah dengan tanda
enable
danclear
untuk mulai merekam informasi:adb shell dumpsys SurfaceFlinger --timestats -clear -enable
Saat game dimainkan cukup lama, jalankan kembali perintah dengan tandai
dump
untuk membuang informasi:adb shell dumpsys SurfaceFlinger --timestats -dump
Informasi yang dibuang menyediakan total {i>frame<i} dan histogram {i>presentToPresent<i} untuk semua lapisan yang dirender oleh SurfaceFlinger. Anda harus mencari bagian game Anda dengan memfilter berdasarkan
layerName
:layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833
Kecepatan frame lambat dari sesi dapat dihitung berdasarkan informasi dari setiap lapisan.
Misalnya, persentase frame lambat 20 FPS = (jumlah nilai dari 54 md hingga 1000 md) / totalFrame x 100
totalFrames = 274 ... 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=1 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=269 34ms=0 36ms=0 38ms=0 40ms=0 42ms=0 44ms=0 46ms=0 48ms=0 50ms=1 54ms=0 58ms=0 62ms=0 66ms=0 70ms=1 74ms=0 78ms=0 82ms=0 86ms=0 90ms=0 94ms=0 98ms=0 102ms=0 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=0
FPS rata-rata setiap lapisan juga ditampilkan dalam dump:
... averageFPS = 30.179 ...
Setelah mengumpulkan semua informasi, Anda harus menonaktifkan timestats dengan menggunakan flag
disable
:adb shell dumpsys SurfaceFlinger --timestats -disable
Penyebab dan solusi frame lambat
Ada banyak alasan mengapa bingkai mungkin muncul atau dirender lebih lama di layar daripada target developer. Game dapat terikat CPU/GPU. Atau perangkat terlalu panas dan mengaktifkan status termal yang di-throttle. Atau ada ketidakcocokan kecepatan frame game dan tampilan perangkat kecepatan refresh.
Gunakan Android Frame Pacing (Swappy), Vulkan, dan ADPF untuk mengatasi masalah ini dan meningkatkan performa game Anda.
Apa itu Swappy
Library Android Frame Pacing, juga dikenal sebagai Swappy, adalah bagian dari Library AGDK. Swappy membantu game OpenGL dan Vulkan mencapai rendering yang mulus dan kecepatan frame yang tepat di Android.
Kecepatan frame adalah sinkronisasi logika game dan loop rendering dengan subsistem tampilan OS dan perangkat keras tampilan yang mendasarinya. Android subsistem tampilan dirancang untuk menghindari artefak visual (dikenal sebagai robek) yang bisa terjadi ketika perangkat keras tampilan beralih ke {i>frame<i} baru di tengah jalan melalui pembaruan. Untuk menghindari artefak ini, subsistem tampilan melakukan hal berikut:
- Buffering melewati frame secara internal
- Mendeteksi keterlambatan pengiriman frame
- Mengulangi tampilan frame sebelumnya saat frame terlambat terdeteksi
Cara menggunakan Swappy di Project Native
Lihat panduan berikut untuk mengintegrasikan library Android Frame Pacing dalam game:
- Mengintegrasikan Android Frame Pacing ke dalam perender OpenGL
- Mengintegrasikan Android Frame Pacing ke dalam perender Vulkan
Cara menggunakan Swappy di game engine Unity
Unity telah mengintegrasikan Android Frame Pacing ke dalam mesin mereka. Untuk mengaktifkannya di Unity 2019.2 atau yang lebih tinggi, centang kotak Optimized Frame Pacing di bawah Project Settings > Pemutar > Setelan untuk Android > Resolusi dan Presentasi:
![Dialog setelan project.](https://developer.android.com/static/topic/performance/vitals/images/unity-frame-pacing.png?authuser=19&hl=id)
Atau, aktifkan opsi Frame Pacing yang Dioptimalkan secara terprogram dalam kode logika untuk memungkinkan Unity mendistribusikan frame dengan kecepatan frame yang lebih rendah, menciptakan gameplay yang lebih lancar.
Cara menggunakan Swappy di game engine Unreal
Unreal 4.25 dan yang lebih tinggi mengintegrasikan Library Android Frame Pacing, yang merupakan bagian dari Android Game Development Kit. Artikel Mobile Frame Pacing menjelaskan cara mengaktifkan Android Library Frame Pacing dan cara mengontrol kecepatan frame dari kode C++.
Apa itu Vulkan
Vulkan adalah API grafis 3D lintas platform modern yang dirancang untuk meminimalkan abstraksi antara hardware grafis perangkat dan game Anda. Vulkan adalah API grafis tingkat rendah utama di Android, yang menggantikan OpenGL ES. OpenGL ES masih didukung di Android, tetapi tidak lagi dikembangkan secara aktif.
Vulkan menawarkan keunggulan berikut dibandingkan OpenGL ES:
- Arsitektur yang lebih efisien dengan overhead CPU yang lebih rendah di driver grafis
- Strategi pengoptimalan baru untuk meningkatkan performa CPU
- Fitur grafis baru yang tidak tersedia di OpenGL ES, seperti API tanpa ikatan dan pelacakan sinar
Cara menggunakan Vulkan dalam project Android native
Codelab Mulai menggunakan Vulkan di Android akan memandu Anda melakukan penyiapan pipeline rendering Vulkan Anda, lalu merender segitiga berputar bertekstur di layar. Gunakan codelab untuk mempelajari cara merender grafis game.
Cara menggunakan Vulkan di game engine Unity
Untuk mengaktifkan pemilihan perangkat otomatis di Unity, ikuti langkah-langkah untuk mengonfigurasi Auto Graphics API.
![Dialog setelan project.](https://developer.android.com/static/topic/performance/vitals/images/unity-vulkan.png?authuser=19&hl=id)
Atau, Anda dapat mengaktifkan Vulkan secara manual dengan menonaktifkan Auto Graphics API, dan prioritaskan Vulkan dalam daftar Graphics API. Jika Anda menggunakan Unity 2021.1 atau versi sebelumnya, ini adalah satu-satunya cara untuk menggunakan Vulkan.
![Dialog setelan project.](https://developer.android.com/static/topic/performance/vitals/images/unity-vulkan-2.png?authuser=19&hl=id)
Menggunakan plugin mesin VkKualitas Unity untuk memberikan rekomendasi saat peluncuran API grafis untuk digunakan oleh game Anda di perangkat tertentu.
Cara menggunakan Vulkan di game engine Unreal
Untuk mengaktifkan API grafis Vulkan, buka Setelan Project > Platform > Android > Build, lalu pilih Support Vulkan. Jika Anda memilih Dukungan Vulkan dan Mendukung OpenGL ES3.2, Unreal menggunakan Vulkan secara default. Jika perangkat tidak mendukung Vulkan, Unreal kembali ke OpenGL ES 3.2.
![Dialog setelan project.](https://developer.android.com/static/topic/performance/vitals/images/unreal-vulkan.png?authuser=19&hl=id)
Jika Anda menggunakan fitur Vulkan tertentu yang diketahui berperilaku buruk
perangkat tertentu, Anda dapat menyesuaikan file BaseDeviceProfile.ini
agar dikecualikan
perangkat tersebut. Lihat Menyesuaikan Profil dan Skala Perangkat Perangkat
untuk Android untuk mempelajari cara
menyesuaikan BaseDeviceProfile.ini
. Karena {i>driver<i} perangkat baru
mungkin memperbaiki sebelumnya
perangkat berbahaya yang diketahui, terus perbarui file BaseDeviceProfile.ini untuk mendapatkan
pengoptimalan.
Apa itu ADPF
Android Dynamic Performance Framework (ADPF) mengoptimalkan game berdasarkan fitur pengelolaan termal, CPU, dan GPU yang dinamis di Android. Fokusnya adalah game, tetapi Anda juga dapat menggunakan fitur untuk aplikasi yang membutuhkan performa intensif.
ADPF adalah sekumpulan API yang memungkinkan game dan aplikasi yang membutuhkan performa tinggi untuk berinteraksi lebih langsung dengan sistem daya dan termal perangkat Android. Dengan API ini, Anda dapat memantau perilaku dinamis pada sistem Android dan mengoptimalkan performa game pada level berkelanjutan yang tidak membuat perangkat terlalu panas.
Berikut adalah fitur utama ADPF:
- Thermal API: Memantau status termal perangkat sehingga aplikasi dapat menyesuaikan beban kerja secara proaktif sebelum menjadi tidak berkelanjutan.
- CPU Performance Hint API: Memberikan petunjuk performa yang memungkinkan Android memilih setelan performa yang tepat (misalnya, titik operasi atau core operasi CPU) untuk beban kerja.
- Game Mode API dan Game State API: Mengaktifkan pengoptimalan gameplay dengan memprioritaskan karakteristik performa atau masa pakai baterai, berdasarkan setelan pengguna dan konfigurasi khusus game.
- Mode Performa Tetap: Mengaktifkan mode performa tetap di perangkat selama benchmark untuk mendapatkan pengukuran yang tidak diubah oleh clock CPU dinamis.
- Mode Efisiensi Daya: Memberi tahu sesi bahwa thread di Sesi Petunjuk Performa dapat dijadwalkan dengan aman untuk lebih memilih efisiensi daya daripada performa. Tersedia di Android 15 (leve API 35).
Cara menggunakan ADPF dalam project Android native
Codelab Mengintegrasikan Fitur Adaptasi ke Game Native Anda akan memandu Anda mengintegrasikan fitur ADPF ke dalam game dengan langkah-langkah yang dapat Anda ikuti sesuai kemampuan. Pada akhirnya, Anda akan mengintegrasikan fitur-fitur berikut:
- Thermal API: Memantau kondisi termal perangkat dan bereaksi sebelum perangkat beralih ke status throttling termal.
- Game Mode API: Pahami preferensi pengoptimalan pemain (maksimalkan performa atau hemat baterai) dan lakukan penyesuaian.
- Game State API: Memberi tahu sistem status game Anda (memuat, memainkan, UI, dll.), dan sistem dapat menyesuaikan resource sebagaimana mestinya (meningkatkan I/O, atau CPU, GPU, dll.).
- Performance Hint API: Beri tahu sistem tentang model threading dan beban kerja Anda agar sistem dapat mengalokasikan resource sebagaimana mestinya.
Cara menggunakan ADPF di game engine Unity
Performa Adaptif Unity adalah alat untuk developer game yang ingin mengoptimalkan game mereka di perangkat seluler, terutama untuk ekosistem Android yang beragam. Performa Adaptif memungkinkan game Anda untuk beradaptasi dengan performa perangkat dan karakteristik termal di secara real-time, yang memastikan pengalaman bermain game yang lancar dan efisien.
Penyedia Android Performa Adaptif memandu Anda melalui langkah-langkah untuk menerapkan ADPF di Unity.
![Dialog setelan project.](https://developer.android.com/static/topic/performance/vitals/images/unity-adpf.png?authuser=19&hl=id)
Cara menggunakan ADPF di game engine Unreal
![Dialog setelan project.](https://developer.android.com/static/topic/performance/vitals/images/unreal-adpf.png?authuser=19&hl=id)
- Download plugin
- Menyalin plugin ke folder plugin project
- Mengaktifkan plugin ADPF Unreal Engine di editor Unreal
- Luncurkan ulang editor Unreal
- Membuat dan memasak game
Plugin Android Dynamic Performance Framework(ADPF) untuk Unreal Engine yang menyediakan performa stabil dan mencegah throttling termal. Mendownload plugin dari GitHub. Plugin ini mengubah fitur dengan menyetel Nilai konsol tidak nyata.