Saya telah berurusan dengan beberapa masalah jittering frame-rate dengan permainan saya belakangan ini, dan tampaknya solusi terbaik adalah yang disarankan oleh Glenn Fiedler (Gaffer di Game) dalam klasik Fix Your Timestep! artikel.
Sekarang - Saya sudah menggunakan langkah waktu yang tetap untuk pembaruan saya. Masalahnya adalah bahwa saya tidak melakukan interpolasi yang disarankan untuk rendering. Hasilnya adalah bahwa saya mendapatkan bingkai yang dilipatgandakan atau dilewati jika tingkat render saya tidak cocok dengan tingkat pembaruan saya. Ini bisa terlihat secara visual.
Jadi saya ingin menambahkan interpolasi ke permainan saya - dan saya tertarik untuk mengetahui bagaimana orang lain menyusun data dan kode mereka untuk mendukung ini.
Jelas saya akan perlu menyimpan (di mana? / Bagaimana?) Dua salinan informasi kondisi permainan yang relevan dengan penyaji saya, sehingga dapat diinterpolasi di antara mereka.
Selain itu - ini sepertinya tempat yang bagus untuk menambahkan threading. Saya membayangkan bahwa utas pembaruan dapat berfungsi pada salinan ketiga dari kondisi permainan, meninggalkan dua salinan lainnya sebagai hanya-baca untuk utas render. (Apakah ini ide yang bagus?)
Tampaknya memiliki dua atau tiga versi dari kondisi permainan dapat memperkenalkan kinerja dan - yang jauh lebih penting - masalah keandalan dan produktivitas pengembang, dibandingkan dengan hanya memiliki satu versi. Jadi saya sangat tertarik pada metode untuk mengurangi masalah-masalah itu.
Dari catatan khusus, saya pikir, adalah masalah bagaimana menangani menambah dan menghapus objek dari kondisi permainan.
Akhirnya, tampaknya beberapa keadaan tidak diperlukan secara langsung untuk render, atau akan terlalu sulit untuk melacak versi yang berbeda (misalnya: mesin fisika pihak ketiga yang menyimpan satu keadaan) - jadi saya tertarik untuk mengetahui caranya orang-orang telah menangani data semacam itu dalam sistem seperti itu.