Game mobile tidak selalu dimainkan di smartphone flagship dengan GPU terbaru dan RAM besar. Justru sebagian besar developer perlu memikirkan perangkat kelas menengah yang memiliki kemampuan CPU, GPU, memori, dan pendinginan lebih terbatas.
Jika game hanya berjalan mulus pada perangkat high-end, potensi pemain bisa ikut menyempit. Karena itu, memahami Cara Mengoptimalkan Game Mobile berarti mencari keseimbangan antara kualitas visual dan performa yang realistis.
Tujuannya bukan membuat game terlihat sederhana, tetapi memastikan resource perangkat digunakan untuk elemen yang benar-benar penting bagi pengalaman pemain.
Mulai dari Target Perangkat yang Jelas
Optimasi akan sulit dilakukan jika developer tidak menentukan hardware target.
Jangan hanya menggunakan istilah “Android kelas menengah”. Tentukan beberapa perangkat referensi yang mewakili GPU, RAM, resolusi layar, dan versi sistem operasi yang ingin didukung.
Unity sendiri mengingatkan bahwa performa aktual bergantung pada kompleksitas proyek meskipun sebuah perangkat memenuhi persyaratan minimum engine. Artinya, spesifikasi yang sekadar kompatibel belum tentu mampu menjalankan game dengan kualitas yang diinginkan.
Buat target seperti 30 FPS stabil pada perangkat minimum dan 60 FPS untuk perangkat yang sedikit lebih kuat.
Target seperti ini jauh lebih mudah diukur dibanding sekadar mengatakan game harus “lancar”.
Profile sebelum Mengurangi Kualitas Grafis
Kesalahan klasik optimasi adalah langsung menurunkan texture dan polygon.
Padahal bottleneck mungkin berada di script, physics, draw call, shader, atau memory allocation.
Android menyediakan beberapa tool seperti Android GPU Inspector, Android Performance Tuner, Perfetto, dan CPU Profiler untuk membantu mencari keterbatasan CPU, GPU, frame time, dan resource perangkat.
Jadi, lakukan profiling pada build asli di smartphone, bukan hanya di Editor.
Jika GPU membutuhkan 25 ms tetapi CPU hanya 8 ms, fokuslah pada rendering. Jika CPU justru memakan 30 ms karena AI dan physics, menurunkan resolusi mungkin tidak memberi peningkatan sebesar yang diharapkan.
Optimasi tanpa data hanya memindahkan masalah.
Turunkan Beban GPU secara Selektif
Perangkat kelas menengah biasanya lebih sensitif terhadap efek rendering mahal.
Dynamic shadow, transparency, post-processing, material kompleks, dan resolusi tinggi dapat menghabiskan GPU budget dengan cepat.
Epic menyediakan mobile rendering path yang lebih sederhana dibanding renderer desktop karena hardware mobile memiliki keterbatasan berbeda.
Dokumentasinya juga merekomendasikan memilih tier lighting berdasarkan perangkat yang menjadi target.
Tidak semua efek harus dihapus.
Gunakan shadow hanya pada karakter atau objek penting. Reflection dapat disederhanakan. Bloom, depth of field, dan efek screen-space sebaiknya diuji satu per satu karena biaya setiap fitur berbeda antarperangkat.
Turunkan Resolusi Rendering, Bukan UI
Jika game GPU-bound, dynamic resolution sering menjadi salah satu senjata paling efektif.
Menurunkan internal render resolution berarti GPU memproses lebih sedikit pixel, sementara UI masih dapat ditampilkan pada resolusi layar yang lebih tajam.
Android juga menyarankan pengurangan resolusi aset non-UI sebagai salah satu pendekatan untuk mengatasi slow rendering, sambil tetap menjaga elemen UI agar keterbacaan dan ukuran target sentuh tidak rusak.
Perubahan dari 100% ke 85–90% resolution scale sering jauh lebih sulit disadari pemain dibanding frame rate yang terus turun.
Kendalikan Draw Call dan Material
Scene yang terlihat sederhana belum tentu ringan.
Seratus objek dengan material berbeda dapat membuat CPU serta GPU melakukan lebih banyak state change dibanding objek yang menggunakan material bersama.
Gunakan batching atau instancing untuk objek berulang seperti pohon, batu, pagar, lampu, dan dekorasi.
Gabungkan material ketika secara visual masih masuk akal.
Namun jangan membuat satu mesh raksasa hanya untuk mengejar draw call rendah. Objek yang terlalu besar dapat menyulitkan culling karena seluruh mesh masih dianggap terlihat walaupun hanya sebagian kecil masuk kamera.
LOD, occlusion culling, dan distance culling tetap perlu dipakai bersamaan.
Optimalkan Texture dan Memory
Texture sering menjadi pengguna memory terbesar pada game mobile.
Texture 2048×2048 tidak otomatis dibutuhkan hanya karena aset sumber memiliki resolusi tersebut. Background prop yang hanya memenuhi sedikit bagian layar mungkin cukup memakai ukuran lebih rendah.
Unity 6 mendukung beberapa format texture compression Android seperti ETC2 dan ASTC, serta Texture Compression Targeting melalui Android App Bundle sehingga perangkat dapat menerima format texture yang sesuai.
Compression dapat mengurangi ukuran data dan penggunaan memory dibanding texture uncompressed.
Namun lakukan pengecekan visual.
UI, normal map, environment texture, dan character face mungkin membutuhkan setting berbeda. Jangan menerapkan satu preset untuk seluruh aset hanya demi mempercepat pengembagan.
Perhatikan juga texture yang tetap berada di memory meskipun scene sudah berubah.
Kurangi Beban CPU yang Tidak Terlihat Pemain
Tidak semua NPC membutuhkan update AI setiap frame.
Musuh yang berada 200 meter dari kamera bisa menggunakan update interval lebih jarang. Animation, pathfinding, perception, dan physics juga dapat diturunkan berdasarkan relevansi.
Hal yang sama berlaku pada script.
Hindari pekerjaan berat di loop per-frame jika sebenarnya hanya perlu dijalankan ketika event berubah.
Misalnya inventory UI tidak perlu menghitung ulang semua item 60 kali per detik ketika pemain tidak membuka inventory.
Object pooling juga berguna untuk projectile, particle, musuh, atau objek yang sering dibuat dan dihancurkan.
Tujuannya mengurangi allocation dan garbage collection yang dapat menghasilkan stutter.
Jangan melakukan konfigruasi CPU hanya berdasarkan teori. Profile lagi setelah perubahan.
Jaga Frame Pacing, Bukan Sekadar Average FPS
Game dengan average 45 FPS belum tentu terasa lebih baik daripada game stabil 30 FPS.
Jika frame time berubah-ubah antara 16 ms, 40 ms, lalu 20 ms, pemain akan melihat stutter.
Android Frame Pacing Library atau Swappy dibuat untuk membantu game OpenGL dan Vulkan menampilkan frame pada interval yang lebih konsisten.
Dokumentasinya juga menjelaskan bahwa buffer-stuffing dan pacing yang buruk dapat meningkatkan input latency serta menghasilkan stutter.
Unity memiliki opsi Optimized Frame Pacing untuk Android yang membantu mendistribusikan frame lebih merata.
Jika perangkat tidak bisa mempertahankan 60 FPS, 30 atau 45 FPS yang konsisten bisa menghasilkan pengalaman lebih nyaman daripada terus mengejar angka tinggi tetapi tidak stabil.
Uji Scene Terberat, Bukan Menu Utama
Benchmark harus mewakili kondisi nyata.
Jika game action bisa menampilkan 30 musuh, jangan profile scene yang hanya memiliki tiga musuh. Jika level hutan memiliki banyak transparency dan shadow, gunakan area tersebut sebagai stress test.
Catat CPU frame time, GPU frame time, memory, FPS, temperatur, dan spike.
Ulangi pengujan setelah bermain 15–30 menit karena mobile hardware tidak selalu mempertahankan performa awal dalam sesi panjang.
Gunakan beberapa perangkat kelas menengah dari vendor berbeda jika memungkinkan.
Fragmentasi hardware Android membuat hasil satu smartphone tidak otomatis berlaku pada semua perangkat.
Pengujan nyata tetap merupakan bagian terpenting dari optimisasi.
Cara Mengoptimalkan Game Mobile untuk perangkat kelas menengah dimulai dari target hardware, profiling, lalu pengurangan beban yang benar-benar menjadi bottleneck.
Optimalkan shader, texture, draw call, CPU, memory, dan frame pacing secara terukur. Jangan hanya mengejar visual tertinggi atau FPS sesaat. Ambil perangkat minimum Anda, jalankan scene terberat, lalu jadikan data tersebut dasar setiap keputusan optimasi.