Pemahaman Dasar Mengenai VSync
Lintang Erlangga - June 14th, 2021

Akhir-akhir ini gak tau kenapa jadi tiba-tiba pengen main game lagi, biasanya saya main Dota atau gak PES. Tapi entah kenapa, meskipun FPS tinggi (110 ~ 120 FPS), tapi kalau main di laptop sendiri itu rasanya kayak nge-lag banget. Dan laptop bener-bener cepat panas, dan panasnya lumayan tinggi juga bisa sekitar 80 derajat Celcius.
Sebenarnya dari dulu udah notice tentang masalah ini, pasti ada sesuatu yang gak beres nih. Cuman masalahnya, saya gak pernah menemukan solusi yang cocok untuk diterapkan. Uniknya gini, meskipun fitur-fitur grafis seperti filtering dinon-aktifkan, terus pengaturan kualitasnya direndahkan, tutup semua program, dan hasilnya nihil semua. Terutama untuk Dota, kalau di PES diatur kualitas tinggi masih terbilang lancar, cuman lama-lama muncul juga tuh lag-nya.
Sudah kelihatan kan? Bener-bener anomali banget, di mana settingan dengan istilah umumnya udah rata kiri, tapi masih aja panas. Ditambah lagi dengan yang pernah saya baca-baca, Dota itu game yang penggunaan CPU-nya lebih besar ketimbang GPU. Jadi gimana solusinya?
Nah tapi sebelumn lanjut, sesuai dengan topik blog ini, kita bakal lebih ngebahas tentang ilmu tekniknya atau engineering-nya. Tapi di sini gak bakal ke low-level banget kayak isyarat-isyaratnya. Dan akan ada sedikit saran juga kok.
Daftar Isi
Vsync
Vsync atau vertical synchronization itu intinya menjaga FPS untuk tetap sesuai dengan refresh rate dari layar yang digunakan. Untuk kasus yang saya alami sendiri, ternyata masalah yang saya alami tersebut tidak hanya lag tapi ada juga screen tearing. Kalau di game Dota bakal keliatan banget ketika kita keliling-keliling map (bahkan sebelum war mulai juga udah keliatan).
Dengan kondisi VSync diaktifkan, maka fenomena seperti screen tearing akan diminimalisir. Nanti akan dijelaskan mengapa efek ini muncul.
Screen tearing
Menarik juga untuk diketahui, kenapa sih screen tearing itu muncul? Supaya paham, kita perlu tahu dulu alur kerja bagaimana komputer kita menampilkan suatu gambar. Sederhananya gini, gambar yang dihasilkan oleh layar itu sebenarnya gak langsung dikirim/ditransmisikan oleh GPU, tapi disimpen dulu di dalam buffer. Buffer ini mirip seperti memori, tapi sifatnya sementara, tujuannya untuk mengkompensasi adanya selisih antara kecepatan dua proses (dalam hal ini GPU dan layar).

Karena perbedaan kecepatan prosesnya, ada kalanya monitor ngebaca data dari frame yang berbeda. Dari situlah muncul apa yang disebut sebagai screen tearing. Dan itu terkadang ngebuat permainan bisa "terasa" lag.
Cara kerja VSync
Setelah dijelaskan secara singkat mengenai buffer, bakal enak nih ngejelasin tentang cara kerja Vsync. Umunnya Vsync ini menggunakan double-buffer, prinsipnya gini, ada dua buffer berbeda yang dinamakan back-buffer sama front-buffer, ketika back-buffer lagi diisi sama frame yang bakal ditampilin, layar akan menampilkan gambar yang ada di front-buffer. Kemudian setelah frame yang berada di back-buffer akan dipindahkan ke front-buffer apabila monitor telah menampilkan frame yang ada di front-buffer.
Hasilnya, gerakkan-gerakkan yang kita lakukan di dalam game akan terasa mulus sekalipun FPS dipaksa untuk tetap di 60 FPS.
Tapi ada hal aneh yang saya alami, perintah-perintah yang saya berikan terasa lambat. Nampaknya latency input baik dari mouse ataupun keyboard yang meningkat. Padahal udah seneng-senang bisa dapet gerakkan mulus eh taunya masih ada aja kurangnya.
Jadi yang saya perhatikan sejauh ini, VSync itu masalah terbesarnya lainnya selain turunnya FPS, yaitu adanya delay antara perintah yang kita berikan jadi lumayan lama.
Ada juga masalah lainnya yaitu, kalau tiba-tiba frame rate dari GPU drop, maka FPS kita bakal dipotong lagi menjadi 30 FPS (kalau refresh rate layarnya 60 Hz).
Beberapa GPU sendiri sudah mendukung yang namanya triple buffer, tujuannya buat ngehindarin delay apabila buffer kedua belum "diisi" oleh GPU. Nanti yang ditampilin di layar merupakan data dari buffer yang ketiga, ini cocok banget kalau VSync-nya dinyalain.
Saran
Pertama coba lihat dulu spesifikasi layar kalian, kalau udah mendukung 120 Hz dan bisa tembus FPSnya diangka 120an mending gak usah dinyalain VSync-nya, tapi kalau masih 60 Hz, pertimbangannya seperti trade-off yang disebutkan sebelumya.
Selain itu, ada juga jalan tengahnya yaitu dengan memaksa GPU untuk tetap pada FPS tertentu, atau istilahnya capping frame rate. Jadi antara delay perintah dan lag-nya sama-sama muncul tapi gak begitu besar kerasanya. Opsi jalan tengah yang kedua yaitu dengan menggunakan adaptive sync, di NVIDIA ada yang namanya GSync, sedangkan di AMD namanya FreeSync. Dengan adaptive sync, maka kalau FPS nya lebih besar dari 60 FPS (misal) maka tetep segitu, kalau lebih rendah maka VSync-nya dimatikan secara otomatis.
Tentunya apa yang kita pilih pasti ada kurang dan lebihnya, secara pribadi saya memilih menggunakan capping frame rate. Ini semua akan balik lagi ke alasan personal, nyamannya mau yang seperti apa. Atau bisa juga bergantung dengan game yang dimainkan.