Di Android vitals, sesi lambat adalah sesi saat lebih dari 25% frame berjalan lambat. Frame dianggap berjalan lambat jika tidak ditampilkan kurang dari 50 milidetik setelah frame sebelumnya (setara dengan 20 FPS). Android vitals juga melaporkan metrik Sesi Lambat kedua dengan target 34 md (setara dengan 30 FPS). Dengan Sesi Lambat, Anda dapat memahami performa kecepatan frame game, yang memengaruhi kelancaran dan keseruan game saat dimainkan pengguna.
Pada waktunya, Play akan mulai mengalihkan pengguna dari game yang tidak dapat mencapai 20 FPS di ponsel mereka. Perhatikan bahwa Android vitals hanya memulai pemantauan kecepatan frame setelah game berjalan selama satu menit.
Buka Pusat Bantuan kami untuk mengetahui detail selengkapnya tentang metrik ini.
Cara mengukur FPS dan mendeteksi frame lambat
Perintah dumpsys SurfaceFlinger --timestats Android memberikan FPS rata-rata
dan histogram pengaturan waktu present to present untuk semua lapisan yang sedang
dirender. Waktu present to present frame adalah interval antara
frame saat ini dan frame sebelumnya yang digambar. Ikuti langkah-langkah berikut
untuk menggunakan perintah guna mengumpulkan FPS game Anda:
Jalankan perintah dengan flag
enabledanclearuntuk mulai mengambil informasi:adb shell dumpsys SurfaceFlinger --timestats -clear -enableSetelah game dimainkan cukup lama, jalankan kembali perintah dengan flag
dumpuntuk membuang informasi:adb shell dumpsys SurfaceFlinger --timestats -dumpInformasi yang di-dump memberikan total frame dan histogram
presentToPresentuntuk semua lapisan yang dirender oleh SurfaceFlinger. Anda harus menemukan bagian game dengan memfilter berdasarkanlayerName:layerName = SurfaceView[com.google.test/com.devrel.MainActivity]@0(BLAST)#132833Anda dapat menghitung kecepatan frame lambat sesi berdasarkan informasi setiap lapisan.
Misalnya, persentase frame lambat 20 FPS = (jumlah nilai dari 54 md hingga 1.000 md) / totalFrames x 100
totalFrames = 274 ... presentToPresent histogram: 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=0FPS rata-rata setiap lapisan juga ditampilkan dalam dump:
... averageFPS = 30.179 ...Setelah mengumpulkan semua informasi, nonaktifkan timestats menggunakan flag
disable:adb shell dumpsys SurfaceFlinger --timestats -disable
Penyebab dan solusi frame lambat
Ada banyak alasan mengapa frame mungkin ditampilkan atau dirender lebih lama di layar daripada target Anda. Game Anda mungkin terikat CPU atau GPU, perangkat mungkin mengalami panas berlebih dan mengaktifkan status termal yang dibatasi, atau mungkin ada ketidakcocokan antara kecepatan frame game dan kecepatan refresh layar perangkat.
Gunakan Android Frame Pacing (Swappy), Vulkan, dan ADPF untuk mengatasi masalah ini dan meningkatkan performa game Anda.
Apa itu Swappy
Library Frame Pacing Android, yang juga dikenal sebagai Swappy, adalah bagian dari library AGDK. Swappy membantu game OpenGL dan Vulkan menghasilkan rendering yang lancar dan kecepatan frame yang benar di Android.
Kecepatan frame adalah sinkronisasi logika game dan loop rendering dengan subsistem tampilan OS dan hardware tampilan yang mendasarinya. Subsistem tampilan Android dirancang untuk menghindari artefak visual (dikenal sebagai tearing) yang dapat terjadi saat hardware layar beralih ke frame baru di tengah-tengah update. Untuk menghindari artefak ini, subsistem tampilan melakukan hal berikut:
- Melakukan buffering frame sebelumnya secara internal.
- Mendeteksi pengiriman frame yang terlambat.
- Mengulangi tampilan frame sebelumnya saat frame terlambat terdeteksi.
Pelajari cara Mir 2 menggunakan Swappy untuk mengurangi kecepatan sesi lambat dari 40% menjadi 10%.
Cara menggunakan Swappy dalam project native
Lihat panduan berikut untuk mengintegrasikan library Android Frame Pacing ke dalam game Anda:
- 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 mesinnya. Untuk mengaktifkan fitur ini di Unity 2019.2 atau yang lebih tinggi, centang kotak Optimized Frame Pacing di bagian Project Settings > Player > Settings untuk Android > Resolution and Presentation:
Atau, aktifkan opsi Optimized Frame Pacing secara terprogram dalam kode logika Anda agar Unity dapat mendistribusikan frame secara merata untuk mengurangi variasi kecepatan frame, sehingga menciptakan gameplay yang lebih lancar.
Cara menggunakan Swappy di game engine Unreal
Unreal 4.25 dan yang lebih baru mengintegrasikan Android Frame Pacing Library, yang merupakan bagian dari Android Game Development Kit. Artikel Mobile Frame Pacing menjelaskan cara mengaktifkan Android Frame Pacing Library 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 bindless API dan ray tracing
Cara menggunakan Vulkan di project Android native
Codelab Mulai menggunakan Vulkan di Android akan memandu Anda menyiapkan pipeline rendering Vulkan, lalu merender segitiga berputar yang 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.
Atau, Anda dapat mengaktifkan Vulkan secara manual dengan menonaktifkan Auto Graphics API, dan menempatkan Vulkan dalam prioritas tertinggi dalam daftar Graphics APIs. Jika Anda menggunakan Unity 2021.1 atau versi sebelumnya, ini adalah satu-satunya cara untuk menggunakan Vulkan.
Gunakan plugin mesin Unity VkQuality untuk memberikan rekomendasi waktu peluncuran API grafis yang akan digunakan game Anda di perangkat tertentu.
Cara menggunakan Vulkan di game engine Unreal
Untuk mengaktifkan Vulkan Graphics API, buka Setelan Project > Platforms > Android > Build, lalu pilih Support Vulkan. Jika Anda memilih Support Vulkan dan Support OpenGL ES3.2, Unreal akan menggunakan Vulkan secara default. Jika perangkat tidak mendukung Vulkan, Unreal akan beralih ke OpenGL ES 3.2.
Jika Anda menggunakan fitur Vulkan tertentu yang diketahui berperilaku buruk di
perangkat tertentu, Anda dapat menyesuaikan file BaseDeviceProfile.ini untuk mengecualikan
perangkat tersebut. Untuk mempelajari cara menyesuaikan BaseDeviceProfile.ini, lihat
Menyesuaikan Profil Perangkat dan Skalabilitas
untuk Android. Karena driver perangkat baru mungkin memperbaiki perangkat buruk yang sebelumnya diketahui, terus update file BaseDeviceProfile.ini Anda untuk mendapatkan semua pengoptimalan.
Apa itu ADPF
Android Dynamic Performance Framework (ADPF) mengoptimalkan game berdasarkan fitur pengelolaan termal, CPU, dan GPU yang dinamis di Android. Fokusnya adalah pada game, tetapi Anda juga dapat menggunakan fitur untuk aplikasi lainnya yang membutuhkan performa tinggi.
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 di 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 secara proaktif menyesuaikan workload sebelum menjadi tidak berkelanjutan.
- CPU Performance Hint API: Memberikan petunjuk performa yang memungkinkan Android memilih setelan performa yang tepat (misalnya, titik operasi atau core CPU) untuk workload.
- Game Mode API dan Game State API: Memungkinkan pengoptimalan gameplay dengan memprioritaskan karakteristik performa atau masa pakai baterai, berdasarkan setelan pengguna dan konfigurasi khusus game.
- Mode Performa Tetap: Mengaktifkan mode performa tetap pada perangkat selama benchmarking untuk mendapatkan pengukuran yang tidak diubah oleh clock CPU dinamis.
- Mode Efisiensi Daya: Menunjukkan ke sesi bahwa thread dalam Performance Hint Session dapat dijadwalkan dengan aman untuk lebih mengutamakan efisiensi daya daripada performa. Tersedia di Android 15 (level API 35).
Cara menggunakan ADPF di project Android native
Codelab Mengintegrasikan Fitur Adaptasi ke dalam Game Native Anda memandu Anda mengintegrasikan fitur ADPF ke dalam game dengan langkah-langkah yang dapat Anda ikuti sesuai kemampuan Anda. Di akhir codelab, Anda akan mengintegrasikan fitur berikut:
- Thermal API: Memantau kondisi termal perangkat dan bereaksi sebelum perangkat mengalami throttling termal.
- Game Mode API: Memahami preferensi pengoptimalan pemain (memaksimalkan performa atau menghemat baterai) dan menyesuaikannya.
- Game State API: Memberi tahu sistem tentang status game Anda (pemuatan, pemutaran, 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 workload Anda agar sistem dapat mengalokasikan resource yang sesuai.
Cara menggunakan ADPF di game engine Unity
Adaptive Performance Unity adalah alat bagi developer game yang ingin mengoptimalkan game mereka di perangkat seluler, terutama untuk ekosistem Android yang beragam. Adaptive Performance memungkinkan game Anda beradaptasi dengan karakteristik performa dan termal perangkat secara real-time, sehingga memastikan pengalaman bermain game yang lancar dan efisien.
Penyedia Android Adaptive Performance akan memandu Anda melalui langkah-langkah untuk menerapkan ADPF di Unity. Lihat juga Performa Adaptif Unity ADPF dan penyedia Android.
Cara menggunakan ADPF di game engine Unreal
- Download plugin.
- Salin plugin ke folder plugin project.
- Aktifkan plugin Unreal Engine ADPF di editor Unreal.
- Luncurkan kembali editor Unreal.
- Build dan cook game.
Plugin Android Dynamic Performance Framework (ADPF) untuk Unreal Engine memberikan performa yang stabil dan mencegah throttling termal. Download plugin dari GitHub. Plugin ini mengubah fitur dengan menetapkan nilai konsol Unreal. Untuk mengetahui detail selengkapnya, lihat plugin Unreal Engine ADPF.