Smartphone bisa menjalankan game dengan sangat mulus pada lima menit pertama, lalu mulai mengalami frame drop setelah perangkat semakin panas.
Kondisi ini umum terjadi karena performa mobile tidak selalu konstan seperti PC yang memiliki sistem pendinginan lebih besar. CPU dan GPU harus berbagi batas daya serta thermal yang ketat.
Karena itu, Menggunakan Adaptive Quality menjadi strategi menarik untuk mempertahankan pengalaman bermain.
Alih-alih memakai kualitas grafis tetap, game dapat menurunkan atau menaikkan beban visual sesuai performa, suhu, dan kemampuan perangkat secara real-time.
Apa Itu Adaptive Quality dalam Game Mobile?
Adaptive quality adalah pendekatan yang memungkinkan game mengubah kualitas visual atau workload ketika kondisi perangkat berubah.
Misalnya game awalnya berjalan pada resolution scale 100%, shadow High, dan particle density penuh.
Ketika GPU mulai kewalahan atau temperatur meningkat, sistem dapat menurunkan resolution scale menjadi 90%, mengurangi shadow distance, atau menurunkan jumlah efek.
Ketika kondisi kembali stabil, sebagian kualitas bisa dinaikkan lagi.
Unity menyediakan Adaptive Performance API yang dapat menerima feedback mengenai thermal dan power state perangkat sehingga aplikasi dapat melakukan adaptasi terkait performa saat runtime.
Jadi, adaptive quality bukan sekadar membuat menu Low, Medium, dan High. Sistem bereaksi terhadap kondisi aktual selama game dimainkan.
Tentukan Target Performa sebelum Membuat Sistem Adaptif
Developer harus memiliki target sebelum menentukan apa yang akan disesuaikan.
Untuk game action, target mungkin 60 FPS. Untuk strategy atau RPG, 30–45 FPS yang stabil bisa lebih realistis pada smartphone kelas menengah.
Jika targetnya 60 FPS, satu frame memiliki budget sekitar 16,67 milidetik. Sistem adaptive quality dapat mulai bekerja ketika GPU atau CPU terus melewati budget tersebut.
Namun jangan bereaksi hanya karena satu frame terlambat.
Loading asset, garbage collection, atau efek besar sesaat dapat menghasilkan spike yang tidak membutuhkan perubahan kualitas permanen.
Gunakan moving average atau evaluasi beberapa detik agar keputusan lebih stabil.
Tujuannya menjaga konsitensi performa, bukan membuat grafis terus berubah setiap kali satu frame bermasalah.
Gunakan Thermal sebagai Sinyal Penting
FPS bukan satu-satunya indikator.
Smartphone bisa menghasilkan frame rate tinggi tetapi bekerja terlalu dekat dengan batas thermal. Beberapa menit kemudian sistem operasi mulai menurunkan performa CPU dan GPU.
Android menyediakan Thermal API yang memungkinkan aplikasi mendapatkan informasi mengenai thermal state. Thermal headroom juga dapat memperkirakan seberapa dekat perangkat terhadap kondisi throttling tertentu.
Informasi ini sangat berguna untuk adaptive quality.
Bayangkan game masih stabil pada 60 FPS, tetapi thermal headroom menunjukkan perangkat mendekati kondisi berat. Sistem bisa mulai menurunkan beberapa efek sebelum throttling benar-benar terjadi.
Pendekatan preventif biasanya menghasilkan pengalaman lebih halus daripada menunggu FPS jatuh kemudian melakukan perubahan drastis.
Turunkan Resolusi sebagai Langkah Awal
Jika bottleneck berada di GPU, resolution scale biasanya menjadi salah satu parameter paling fleksibel.
Semakin tinggi resolusi, semakin banyak pixel yang harus diproses setiap frame.
Menurunkan internal rendering resolution dari 100% menjadi 90% sering sulit diperhatikan pada layar smartphone, tetapi dapat memberikan ruang kerja tambahan pada GPU.
Unreal Engine menyediakan Mobile Content Scale Factor untuk mengatur resolusi sesuai device profile, sementara sistem scalability memungkinkan kualitas rendering disesuaikan menurut kemampuan perangkat.
Jangan Menurunkan UI Bersamaan
World rendering dan UI sebaiknya diperlakukan berbeda.
Teks, tombol, indikator health, dan minimap perlu tetap mudah dibaca. Karena itu, jika memungkinkan, turunkan resolusi scene 3D tanpa ikut menurunkan ketajaman UI.
Adaptive resolution juga sebaiknya memiliki batas minimum.
Jangan membiarkan sistem terus menurunkan resolusi sampai game terlihat buram hanya demi mempertahankan target FPS yang sebenarnya terlalu tinggi untuk perangkat tersebut.
Buat Urutan Fitur yang Akan Dikurangi
Tidak semua setting visual memiliki nilai yang sama bagi pemain.
Karena itu, buat quality ladder.
Developer dapat menurunkan fitur dengan dampak visual rendah terlebih dahulu. Misalnya shadow distance dikurangi, kemudian particle density, reflection, foliage distance, post-processing, dan akhirnya resolution scale lebih agresif.
Unreal Engine sendiri menggunakan scalability settings untuk mengelompokkan fitur seperti shadow, foliage, mesh detail, dan kualitas visual lain agar dapat disesuaikan berdasarkan hardware.
Urutan tersebut harus dibuat berdasarkan game.
Pada horror game, shadow mungkin sangat penting sehingga sebaiknya dipertahankan lebih lama. Pada racing game, motion clarity dan frame rate mungkin lebih penting daripada detail vegetation.
Adaptive quality yang bagus memahami prioritas artistik, bukan sekadar menurunkan semua slider.
Gunakan Hysteresis agar Kualitas Tidak Terus Naik-Turun
Bayangkan FPS turun menjadi 55 sehingga sistem menurunkan kualitas.
FPS kemudian naik menjadi 62 dan sistem langsung menaikkan kualitas lagi. Beberapa detik kemudian FPS jatuh kembali.
Hasilnya adalah quality oscillation yang membuat visual terus berubah.
Gunakan hysteresis.
Misalnya kualitas diturunkan setelah GPU berada di atas budget selama lima detik, tetapi baru dinaikkan setelah performa stabil selama 20 detik.
Threshold naik dan turun juga sebaiknya berbeda.
Sistem dapat menurunkan kualitas ketika average frame time melewati 18 ms, tetapi hanya menaikkannya ketika frame time sudah berada di bawah 14 ms selama periode tertentu.
Cara ini memberikan ruang aman agar adaptive quality lebih stabil.
Jangan Lupakan Frame Pacing
Mencapai average 60 FPS tidak berarti game otomatis terasa mulus.
Frame yang muncul pada 10 ms, 12 ms, 30 ms, lalu 14 ms akan menghasilkan stutter meskipun average terlihat cukup bagus.
Frame pacing membantu menjaga interval antarframe lebih konsisten.
Unreal Engine menggunakan frame pacing untuk membatasi rendering ke frame rate yang lebih stabil dan pada Android mengintegrasikan Swappy, yang membantu menyelaraskan siklus render dengan refresh display serta mengurangi variasi waktu presentasi frame.
Adaptive quality sebaiknya melihat frame time distribution, bukan hanya FPS counter.
Menurunkan satu level kualitas demi mendapatkan 45 FPS yang stabil bisa terasa lebih nyaman dibanding membiarkan game terus berfluktuasi antara 45 dan 60 FPS.
Gunakan Data CPU dan GPU secara Terpisah
Adaptive quality tidak boleh selalu mengurangi grafis.
Jika bottleneck sebenarnya CPU, menurunkan resolusi bisa memberikan efek sangat kecil.
CPU-bound game mungkin membutuhkan strategi berbeda seperti mengurangi update AI, animation frequency, physics calculation, atau jumlah entity aktif.
Android Performance Hint API memungkinkan game memberi informasi mengenai target dan durasi workload sehingga sistem dapat mengalokasikan resource lebih sesuai kebutuhan periodic workload seperti produksi frame.
Pada Android 16, API headroom CPU dan GPU juga tersedia pada perangkat yang mendukungnya untuk membantu aplikasi memahami resource yang masih tersedia.
Karena itu, tentukan apakah masalah berasal dari CPU, GPU, thermal, atau kombinasi beberapa faktor sebelum mengubah setting.
Uji dalam Sesi Panjang
Adaptive quality tidak bisa divalidasi dengan benchmark dua menit.
Lakukan soak test.
Mainkan game selama 30-60 menit pada perangkat target. Catat frame time, thermal state, resolution scale, quality level, memory, dan kapan sistem melakukan perubahan.
Periksa apakah kualitas turun terlalu cepat atau justru terlambat.
Uji juga saat baterai rendah dan setelah perangkat sudah terasa hangat.
Pengujan seperti ini jauh lebih dekat dengan pengalaman nyata dibanding benchmark dari kondisi smartphone yang baru dinyalakan dan masih dingin.
Gunakan beberapa perangkat karena karakter thermal setiap desain smartphone berbeda. Proses pengujan harus mewakili variasi hardware yang benar-benar akan memainkan game.
Menggunakan Adaptive Quality membantu game mobile mempertahankan performa dengan menyesuaikan workload berdasarkan frame time, GPU, CPU, dan kondisi thermal.
Mulailah dari target FPS yang realistis, buat quality ladder, gunakan hysteresis, lalu uji dalam sesi panjang.
Jangan mengejar kualitas maksimum setiap saat-prioritaskan pengalaman yang stabil sehingga pemain tetap menikmati game tanpa frame drop besar.