Saya mengembangkan game strategi waktu nyata untuk kursus ilmu komputer yang saya ikuti. Salah satu aspek yang lebih sulit dari itu adalah jaringan dan sinkronisasi klien-server. Saya sudah membaca tentang topik ini (termasuk 1500 pemanah ), tetapi saya telah memutuskan untuk mengambil pendekatan client-server yang bertentangan dengan model lain (misalnya melalui LAN).
Game strategi waktu nyata ini dilengkapi dengan beberapa masalah. Untungnya, setiap tindakan yang dilakukan pemain adalah deterministik. Namun, ada beberapa peristiwa yang terjadi pada interval yang dijadwalkan. Misalnya, permainan terdiri dari ubin, dan ketika seorang pemain mengambil ubin, 'tingkat energi', nilai pada ubin itu, harus tumbuh satu setiap detik setelah diambil. Ini adalah penjelasan yang sangat cepat yang seharusnya membenarkan kasus penggunaan saya.
Saat ini saya sedang melakukan thin client, yang hanya mengirim paket ke server dan menunggu jawaban. Namun, ada beberapa masalah.
Ketika permainan antara pemain berkembang menjadi permainan akhir, sering kali ada lebih dari 50 peristiwa per detik (karena acara yang dijadwalkan, dijelaskan sebelumnya, menumpuk), dan kesalahan sinkronisasi mulai muncul saat itu. Masalah terbesar saya adalah bahwa bahkan penyimpangan kecil dalam keadaan di antara klien bisa berarti keputusan yang berbeda yang diambil klien, yang berubah menjadi permainan yang sepenuhnya terpisah. Masalah lain (yang tidak sepenting sekarang) adalah bahwa ada latensi dan seseorang harus menunggu beberapa milidetik, bahkan beberapa detik setelah mereka bergerak untuk melihat hasilnya.
Saya bertanya-tanya strategi dan algoritma apa yang dapat saya gunakan untuk menjadikan ini lebih mudah, lebih cepat, dan lebih menyenangkan bagi pengguna akhir. Ini sangat menarik mengingat tingginya jumlah acara per detik, bersama dengan beberapa pemain per game.
TL; DR membuat RTS dengan> 50 acara per detik, bagaimana cara menyinkronkan klien?