Setelah sekali berhenti, game menghitung kerja yang tertunda sekaligus, dan perhitungan itu membuatnya tertinggal lagi.
Mengapa Simulasi game berjalan dengan interval tetap, lalu sekali berhenti → Akibatnya Step yang tertunda dihitung sekaligus dalam satu frame → Di layar Frame panjang terjadi beruntun dan melonjak, atau terbentur batas sehingga dunia game melambat
Sesekali secara acak, Saat banyak pemain berkumpul
Penanggung jawab
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game)
Tugas Tim Pengembang Game
Batasi catch-up per frame, tangani sisa waktu dengan interpolasi.
Di grafik
Melonjak acak sesekali · Frame time, jumlah fixed step per frame
Yang diperiksa
Di profiler development build, periksa berapa kali fixed step berjalan dalam satu frame (di Unity, jumlah marker tahap FixedUpdate seperti FixedBehaviourUpdate) bersama frame time
Cocok jika
Setelah satu frame panjang, menyusul beruntun frame panjang yang menjalankan banyak step, dan saat menyentuh batas (Maximum Allowed Timestep di Unity) waktu game berjalan lebih lambat dari waktu nyata
Tidak cocok jika
Frame panjang hanya terjadi sekali: lebih mungkin “Lonjakan frame time” atau “Garbage collection di klien”
Sarana pemeriksaan
Log dan metrik server atau klien game
Pelajari lebih lanjut
Perhitungan fisika Unity (FixedUpdate) adalah contoh khas fixed step (default 0,02 detik, 50 kali per detik). Maximum Allowed Timestep di pengaturan Time (waktu maksimum yang dikejar dalam satu frame, default sekitar 0,33 detik) adalah batas catch-up. Jika satu frame lebih panjang dari itu, kelebihan waktunya dibuang, sehingga jam game tertinggal dari waktu nyata sebanyak itu.
Handling variation in timeUnity Default Maximum Allowed Timestep 1/3 detik (0.3333333); walaupun game berhenti 1 detik, waktu game hanya maju 0,333 detik; batas ini mencegah lingkaran setan ketika step catch-up memperlambat game lagi
Profiler markers referenceUnity FixedBehaviourUpdate: bagian eksekusi MonoBehaviour.FixedUpdate; marker fisika dipanggil di tahap FixedUpdate