Direktur teknis Croteam, Alain Ladawach, yang berpartisipasi dalam pengembangan Serious Sam and Talos Principle, menceritakan bagaimana ia berhasil menemukan alasan perlambatan grafik bahkan pada mesin yang paling kuat.Akhirnya, sebuah penjelasan muncul tentang mengapa beberapa game melambat pada PC Anda (dan harapan bahwa mereka akan berhenti melambat dalam waktu dekat).
Rem TT
Anda menantikan bagian selanjutnya dari seri video game PC favorit Anda dan akhirnya keluar. Kali ini Anda ingin menikmatinya secara keseluruhan, sehingga Anda menghabiskan uang dan waktu untuk persiapan yang matang. Anda mengganti prosesor, memasang kartu grafis ultra-modern, menambahkan lebih banyak RAM - sial, Anda bahkan membeli RAID pada SSD. Permainan harus mulus dari screen saver itu sendiri.
Pre-order akhirnya dibuka dan Anda baru saja menyelesaikan instalasi. Dalam antisipasi gugup, Anda memulai permainan untuk pertama kalinya. Sejauh ini bagus - berjalan pada 60 frame per detik. Atau setidaknya itulah yang dikatakan oleh penghitung bingkai tuner GPU. Tapi ada yang salah. Anda membuat gerakan tajam dan kacau dengan mouse. Tali ke kiri dan kanan, dan kemudian permainan ... mulai melambat! Sial, bagaimana ini mungkin? Bagaimana itu bisa melambat pada 60 frame per detik?
Jika ini tidak pernah terjadi pada Anda, maka ini mungkin tampak konyol. Tetapi jika Anda pernah mengalaminya, maka kemungkinan besar Anda membenci rem dengan sepenuh hati. Rem dalam game. Ini bukan "lag" lama yang bagus. Bukan frame rate yang rendah. Ini hanya "rem" yang terjadi pada laju bingkai tinggi pada alat berat super cepat yang ideal. Apa itu, dari mana mereka berasal dan bagaimana cara menyingkirkan mereka? Biarkan saya menceritakan sebuah kisah ...
Rem, kehalusan, kecepatan ... apakah semuanya satu dan sama?
Video game telah berjalan pada 60 fps sejak saat
mesin arcade pertama di tahun 70-an. Biasanya diharapkan bahwa game berjalan pada frekuensi yang sama dengan yang digunakan layar. Ini terjadi sebelum mempopulerkan game 3D, di mana untuk pertama kalinya frame rate berkurang menjadi dapat diterima. Pada tahun 90-an, ketika "
kartu 3D " (seperti kami menyebutnya sebelum menjadi "
GPU ") mulai menggantikan rendering perangkat lunak, orang-orang memainkan game dengan kecepatan 20 fps, dan 35 fps dianggap sebagai nilai yang layak untuk pertempuran jaringan yang serius.
Saya tidak bercanda .
Hari ini kami memiliki mobil supercepat dan "
tentu saja, mereka dapat bekerja pada 60 fps ." Namun, jumlah pengguna yang kecewa dengan kecepatan permainan pengguna tidak pernah lebih besar. Bagaimana ini mungkin? Masalahnya bukan bahwa game tidak bisa berlari cukup cepat, tetapi mereka melambat
bahkan ketika mereka bisa berlari cepat !
Jika Anda membaca berbagai forum permainan, Anda pasti akan menemukan pesan serupa:
Anda mungkin berpikir bahwa ini adalah masalah tunggal, tetapi lihat statistik permintaan pencarian Google:
Selama lima tahun terakhir, rem (gagap) telah menjadi (relatif) masalah yang lebih serius daripada kecepatan!(Perhatikan bahwa ini adalah nilai relatif. Itu tidak berarti bahwa secara umum orang bertanya tentang pengereman lebih dari tentang frame rate. Mereka berarti bahwa permintaan frame rate tetap pada tingkat yang sama, dan jumlah permintaan untuk rem bertambah. , terutama baru-baru ini.)
Satu dekade mencari penyebab rem yang tidak bisa dijelaskan
Pasien lebih mungkin hidup daripada mati, hanya sedikit lebih lambat dari yang diperlukan.Saya pertama kali mengalami masalah ini sekitar tahun 2003. Kami mengerjakan
Serious Sam 2 , dan pengguna mulai mengirimi kami laporan bahwa mereka menguji sesuatu pada level kosong, dan ketika menggerakkan mouse, gerakannya tidak mulus. Ini disertai dengan pola yang sangat khas pada grafik laju bingkai, yang kami sebut "kardiogram".
Kami berpikir bahwa di suatu tempat dalam kode ada bug, tetapi tidak dapat menemukannya. Tampaknya masalah muncul dan menghilang secara acak - setelah me-restart aplikasi, me-reboot mesin ... dan kemudian pemain mengubah beberapa opsi kecepatan dan menghilang. Kemudian pemain menyalakan opsi ini lagi, tetapi masalahnya tidak kembali. Dia tampak seperti hantu.
Jelas, masalah ini muncul tidak hanya pada kita. Menonton masalah yang sama di game lain, kami mulai berpikir bahwa para pengemudi yang harus disalahkan. Tetapi ini terjadi pada kartu video dari berbagai produsen. Bahkan pada API yang berbeda (OpenGL, DirectX 9, DirectX 11 ...) - satu-satunya kesamaan mereka adalah bahwa mereka muncul di mesin yang berbeda, dalam beberapa adegan ... kadang-kadang.
Nessie, bigfoot ... hampir sama sulitnya dengan masalah dengan "kardiogram."Kami merilis beberapa game lagi, tetapi perilaku aneh ini masih muncul dan menghilang. Ini mengganggu beberapa pengguna, dan kami menyarankan mereka mengubah opsi kecepatan - terkadang itu membantu, kadang tidak. Itu hidup, bukan?
Tetapi suatu hari, pada hari musim dingin yang hebat di awal 2013, kolega saya Dean memanggil saya untuk melihat contoh lain dari masalah ini, yang dapat ia hasilkan secara relatif stabil pada waktu itu. Kali ini masalahnya muncul dari level
Serious Sam 3 . Kami bereksperimen dengan opsi dalam adegan ini sampai tiba-tiba saya sadar. Saya mengerti apa alasannya! Dan dia sangat sederhana - tidak heran dia lolos dari semua orang selama belasan tahun.
Dengan mengubah hanya
satu opsi yang sangat sederhana dari mesin game, kami dapat membuat masalah ini muncul dan menghilang di adegan khusus ini. Tetapi segera menjadi jelas bagi kami bahwa banyak upaya akan diperlukan untuk solusi berkualitas tinggi. Upaya tidak hanya di pihak kami, tetapi juga di seluruh ekosistem PC gaming - programmer driver GPU, pengembang API, vendor OS - semua orang.
Biarkan saya jelaskan.
Apa alasannya selama ini
Saya ingin menunjukkan kepada Anda sebuah contoh adegan dari Serious Sam 3, yang saya dan Dean eksplorasi lima tahun lalu. Atau bahkan lebih baik - menggunakan adegan tes dari Serious Sam 2 sebagai contoh, di mana kami pertama kali melihatnya. Tapi, sayangnya, setelah mengganti "besi", binatang yang sulit ditangkap ini dapat pindah ke adegan lain. Saya memiliki adegan dari
Prinsip Talos di mana saya baru-baru ini berhasil mereproduksi masalah ini, dan saya merekam beberapa video yang memungkinkan saya untuk menganalisanya secara lebih rinci.
Tetapi sebelum kita mulai, pastikan Anda benar-benar menonton video dengan kecepatan 60 fps. Untuk melihat contoh di bawah ini, beralihlah ke 1080p60, seperti yang ditunjukkan pada gambar:
Untuk menonton video pada 60 fps, alihkan ke YouTube pada 1080p60.Jika Anda melakukan semuanya dengan benar, dan komputer dan browser web Anda dapat menampilkan video pada 60 fps, maka video di bawah ini akan diputar dengan lancar dan tanpa rem. Jika tidak demikian, itu sebabnya kita membicarakannya - banyak aplikasi lain juga menunjukkan perilaku ini, bukan hanya permainan. Untuk saat ini, saya hanya dapat merekomendasikan agar Anda mencoba menonton video di komputer lain, atau hanya membaca teks.
Periksa, periksa, satu, dua, tiga ... Anda akan melihat video ini dalam 60 fps halus.Sekarang mari kita mulai bisnis. Jika Anda menemukan rem, kemungkinan besar tampilannya seperti ini:
« 60 fps». «»., «», 60 fps. - , , « ». , ( , - «» ). « », , - , . 60 fps, « ». ( , , .)
(«»), YouTube
.
(), . , . , , …
, ? ? , ?..
, , , !
?
.
«», 1/20 , :
60 fps, «». 20 .: -, — , . -, - - — «» , , .
: — — — «»… «» . , ?
(, ( 1/10 000 ), : , …
. — , — «».… , «»
( ). , , , ( ).
… «», « », ?
, , . ( , , , .)
-, - … , , . NTSC, 60 , 60 fps, PAL/SECAM, 50 , 50 fps. - « ».
, — , "
",
ZX Spectrum,
C64,
Atari ST,
Amstrad CPC 464,
Amiga .. , , , 100% , .
«». ,
,
. ,
Sonic The Hedgehog Sega Genesis , ,
16 . PAL NTSC, 50 fps 60 fps. , .
— , PC «» — , . , . 3D-, , . , — , … . , .
, . ( , «» - , .)
, , . 1/60 (16,67 ), 10 /, 1/6 . 1/60 , 1/30 (33,33 ), 1/3 ( «») , .
? , . , . ,
. 90- ( «35 fps » ), .
( ,
GPU) «» «», . 3D-, . , .
GPU, "
". , GPU - , GPU , , GPU . , GPU, « », GPU . - . — - . , , .
, , , … . . , :
. — , — «»., . 16,67 ( 1/60 ), , , . () , 24,8 ( 1/60 ), , … , , 10,7 , , - . ( .)
: ,
, , , PC.
, 60 fps,
- , . - GPU
60 fps
.
— , («») .
, , —
, .
. ( , — , ?), :
«», , .«». «» , !
?
Serious Engine sim_fSyncRate=60
. , « , 60 fps». — ,
! , — , .
? ?
?
— . . , 60,
60 — PC
: - , GPU/… — .
, , , — - . ?
, / , .
, ? , — !
, . , API. , , , . , , API , : ,
. , , .
?
, .
API.
Vulkan API VK_GOOGLE_display_timing
,
proof of concept. , Android Linux.
API. ? , .
, Croteam , , .
, , The Talos Principle .
. « », . , , , , .
«»
? , . - , ?« »,
. , , , , , Skype .. 3D. , , . .
. , — ?
, GPU , , . , GPU . , , . , .
…
. :) GPU . , GPU . , .