Cloud gaming punya tantangan yang berbeda dari video streaming biasa. Pemain bukan hanya menonton gambar, tetapi terus mengirim input yang harus diproses dan dikembalikan sebagai frame baru dalam waktu sangat singkat.
Karena itu, kualitas gambar terbaik belum tentu menjadi konfigurasi terbaik. Mengoptimalkan Video Encoding berarti mencari keseimbangan antara ketajaman visual, bitrate, waktu kompresi, dan latency.
Jika encoder terlalu lambat atau buffering terlalu besar, kontrol game bisa terasa berat meskipun koneksi internet pemain sebenarnya cukup cepat.
Mengapa Encoding Sangat Penting dalam Cloud Gaming?
Setelah GPU selesai merender sebuah frame, gambar tersebut belum bisa langsung dikirim melalui internet. Frame harus dikompresi menggunakan codec video seperti H.264, HEVC, atau AV1 agar ukuran datanya jauh lebih kecil.
Masalahnya, setiap proses kompresi membutuhkan waktu. Semakin rumit algoritma yang digunakan untuk mencari efisiensi terbaik, semakin besar potensi encode latency.
Untuk video on-demand, tambahan beberapa ratus milidetik biasanya tidak menjadi masalah. Cloud gaming berbeda karena pemain mengharapkan gerakan karakter hampir langsung mengikuti input.
NVIDIA secara khusus menyediakan mode low latency dan ultra-low latency pada NVENC untuk kebutuhan interaktif seperti game streaming dan video conferencing. Mode tersebut dirancang untuk mengurangi buffering dan mempercepat keluarnya encoded frame.
Pilih Codec Berdasarkan Latency dan Kompatibilitas
Codec yang lebih baru biasanya menawarkan efisiensi kompresi lebih baik, tetapi pilihan tidak boleh hanya didasarkan pada kualitas gambar.
H.264 masih memiliki keuntungan besar dari sisi kompatibilitas perangkat. Amazon GameLift Streams, misalnya, menggunakan WebRTC dan mensyaratkan dukungan AVC atau H.264 pada browser dan perangkat yang kompatibel.
HEVC dapat menghasilkan kualitas lebih baik pada bitrate tertentu dalam banyak situasi, sementara AV1 semakin menarik untuk streaming modern karena efisiensinya. NVIDIA NVENC saat ini mendukung hardware encoding H.264, HEVC, dan AV1 pada hardware yang sesuai.
Namun, codec terbaik adalah codec yang bisa diencode cepat di server dan didecode secara hardware pada perangkat pemain.
Jika AV1 memaksa sebagian client menggunakan software decoder yang lambat, keuntungan bandwidth dapat berubah menjadi masalah latency.
Gunakan Hardware Encoder daripada CPU Encoding
Game server sudah bekerja keras menjalankan simulation, physics, AI, dan rendering. Menambahkan software video encoding berat pada CPU dapat meningkatkan beban sistem sekaligus memperpanjang waktu setiap frame.
Hardware encoder seperti NVENC dibuat untuk menangani kompresi video menggunakan bagian GPU yang terpisah dari sebagian besar pekerjaan rendering utama.
NVIDIA menjelaskan bahwa NVENC merupakan encoder berbasis hardware dan digunakan untuk berbagai aplikasi real-time termasuk cloud gaming dan game broadcasting.
Pendekatan ini membantu menjaga encode time lebih konsisten.
Namun bukan berarti hardware encoding otomatis sempurna. Developer tetap perlu memonitor GPU utilization, encoder utilization, dan kemungkinan contention pada server ketika banyak session berjalan bersamaan.
Kapasitas encoding harus masuk dalam perhitungan density setiap server, bukan hanya kemampuan GPU menjalankan game.
Gunakan Preset Low-Latency yang Tepat
Encoder modern biasanya menyediakan preset berdasarkan trade-off antara kualitas dan kecepatan.
Pada NVENC, preset P1 sampai P7 mengatur keseimbangan performance dan kualitas. P1 cenderung mengejar performa tertinggi, sementara P7 mengarah ke kualitas lebih tinggi dengan processing yang lebih berat.
Untuk cloud gaming, menggunakan preset paling lambat hanya demi sedikit peningkatan kualitas sering tidak masuk akal.
NVIDIA merekomendasikan tuning low latency atau ultra-low latency untuk skenario game streaming. Dokumentasi FFmpeg NVIDIA juga menyebut preset cepat seperti P2 atau moderat seperti P4 sebagai titik awal untuk aplikasi low-latency.
Tetapi angka tersebut bukan aturan mutlak.
Lakukan pengujan pada konten game sebenarnya. Game strategi yang bergerak lambat bisa menggunakan konfigurasi berbeda dengan racing game yang penuh gerakan cepat.
Kurangi Buffer agar Frame Tidak Mengantre
Buffer adalah teman kualitas video, tetapi bisa menjadi musuh latency.
Encoder biasanya menggunakan Video Buffering Verifier atau VBV buffer untuk membantu mengendalikan output bitrate. Buffer besar memberi encoder lebih banyak fleksibilitas dalam mengalokasikan bit, tetapi juga dapat meningkatkan delay.
Untuk low-latency game streaming, NVIDIA merekomendasikan ukuran VBV yang sangat rendah, bahkan mendekati satu frame.
Secara konsep, ukuran tersebut dapat dihitung dari target bitrate dibagi frame rate.
Misalnya, stream 60 FPS seharusnya tidak menyimpan antrean beberapa detik seperti video streaming biasa.
Jangan Mengejar Buffer Nol secara Buta
Buffer yang terlalu agresif juga dapat menyebabkan kualitas menjadi tidak stabil ketika scene tiba-tiba kompleks.
Ledakan, partikel, rumput bergerak, atau kamera yang berputar cepat membutuhkan lebih banyak bit.
Karena itu, lakukan stress test menggunakan scene tersulit, bukan hanya menu utama atau area statis.
Tujuannya adalah menemukan konfigruasi dengan buffer serendah mungkin tanpa menyebabkan kualitas video runtuh saat visual menjadi kompleks.
Hati-Hati Menggunakan B-Frame dan Lookahead
B-frame dapat meningkatkan efisiensi kompresi karena sebuah frame bisa menggunakan referensi dari beberapa frame lain.
Masalah klasiknya, beberapa bentuk B-frame membutuhkan frame reordering. Proses tersebut dapat menambah latency karena encoder harus menunggu frame berikutnya.
Untuk streaming real-time, struktur GOP harus dirancang dengan mempertimbangkan delay.
Dokumentasi NVENC terbaru merekomendasikan unidirectional B-frames untuk low-latency use case. Pendekatan ini menggunakan referensi masa lalu sehingga dapat meningkatkan efisiensi tanpa frame-reordering delay seperti B-frame tradisional.
NVIDIA menyebut konfigurasi tersebut dapat meningkatkan efisiensi kompresi sekitar 5-10% dibanding P-frame-only pada implementasi yang didukung.
Lookahead juga perlu dipakai dengan hati-hati karena melihat frame masa depan secara alami dapat menambahkan pekerjaan dan buffering.
Pilih Rate Control untuk Jaringan Real-Time
Cloud gaming harus mengirim video melalui jaringan yang kapasitasnya bisa berubah setiap detik.
Karena itu, rate control sangat penting.
NVIDIA merekomendasikan Constant Bitrate atau CBR untuk konfigurasi game streaming low-latency. Pendekatan ini membantu menjaga output bandwidth lebih dapat diprediksi.
Namun CBR bukan berarti bitrate harus selalu identik sampai digit terakhir. Encoder tetap perlu beradaptasi terhadap kompleksitas visual dengan batas tertentu.
Jika jaringan pemain hanya stabil pada 15 Mbps, mengirim stream 25 Mbps secara terus-menerus justru dapat membangun antrean packet dan meningkatkan delay.
Kualtias visual harus mengikuti kapasitas koneksi nyata.
Hindari Bitrate Spike dari Keyframe Besar
Keyframe atau I-frame berisi informasi gambar yang jauh lebih lengkap dibanding predicted frame.
Akibatnya, ukurannya bisa jauh lebih besar.
Jika seluruh stream menggunakan GOP pendek dengan full I-frame secara periodik, bitrate dapat mengalami spike. Pada koneksi terbatas, spike tersebut dapat menciptakan antrean dan stutter.
Untuk low-latency use case, NVIDIA merekomendasikan GOP sangat panjang atau penggunaan intra refresh pada konfigurasi tertentu. Intra refresh memperbarui bagian-bagian gambar secara bertahap daripada selalu mengirim satu I-frame besar.
Teknik ini juga dapat membantu error recovery tanpa menghasilkan lonjakan bitrate sebesar full-frame refresh.
Namun pengaturan tetap harus mempertimbangkan packet loss dan kemampuan decoder client.
Ukur Encode Time pada Scene Terberat
Jangan mengoptimalkan encoder berdasarkan benchmark video biasa.
Gunakan gameplay yang mewakili kondisi tersulit.
Racing game dengan kamera bergerak cepat, hutan dengan banyak vegetation, particle effect, dan pertempuran besar dapat menghasilkan pola kompresi berbeda dibanding scene statis.
Catat encode latency per frame, bitrate aktual, dropped frames, frame delivery time, dan kualtias visual.
Pada 60 FPS, satu frame hanya berlangsung sekitar 16,67 ms. Encoding idealnya mengambil sebagian kecil dari budget end-to-end tersebut karena network, decoding, rendering, dan display juga membutuhkan waktu.
Ukur juga p95 dan p99 encode latency, bukan hanya average.
Spike satu atau dua frame bisa jauh lebih terasa dibanding average yang terlihat bagus.
Mengoptimalkan Video Encoding untuk cloud gaming membutuhkan keseimbangan antara codec, hardware encoder, preset, bitrate, GOP, dan ukuran buffer.
Prioritaskan mode low-latency, hindari antrean frame berlebihan, dan uji pada gameplay paling berat. Jangan menilai keberhasilan dari kualitas gambar saja.
Mulailah mengukur encode time serta end-to-end latency agar setiap perubahan benar-benar meningkatkan respons permainan.