Saya membuat game online pertama saya menggunakan socket.io, dan saya ingin ini menjadi game multipemain waktu nyata seperti agar.io atau diep.io.
Tapi saya sudah mengalami masalah mencoba mencari cara untuk mendapatkan semua komputer untuk bekerja pada kecepatan yang sama.
Saya punya tiga ide untuk model, tetapi tidak ada yang tampak benar, dan saya bertanya-tanya bagaimana cara videogame yang normal melakukannya. (Anda dapat melewatkan membaca ide-ide saya; mereka hanya memberi Anda cara untuk melihat masalah yang saya alami.)
Server memungkinkan klien berjalan sendiri dan memberikan pembaruan ke server, yang kemudian menyiarkannya ke seluruh klien. Ini memiliki masalah bahwa beberapa komputer berjalan lebih cepat dari yang lain, membiarkannya memperbarui lebih cepat dan bergerak melintasi layar lebih cepat.
Minta server memberi tahu klien kapan harus memperbarui. Saya kemudian dapat menunggu sampai klien terakhir merespons (ide yang buruk jika satu orang memiliki komputer lambat), menunggu sampai klien pertama merespons (sekali lagi, menunggu komunikasi sebelum setiap frame), atau hanya mengirimnya secepat mungkin (yang tampaknya mengalami masalah yang sama dengan nomor 1).
Di awal permainan, minta server memberi tahu klien seberapa cepat untuk memperbarui. Ini berarti klien akan bertanggung jawab untuk membatasi pergerakan di antara periode waktu itu. Misalnya, jika seseorang entah bagaimana berhasil menekan tombol dua kali dalam periode waktu itu, itu hanya akan mengirim satu acara tekan tombol. Ini memiliki masalah bahwa beberapa tindakan akan diabaikan (seperti menekan tombol ganda), dan bahwa interaksi akan bergantung pada jam klien, yang mungkin tidak cocok dengan jam server. Server kemudian harus melacak setiap klien dan memastikan pembaruan mereka dikirimkan pada waktu yang tepat.
Saya telah melakukan riset , tetapi artikel yang saya baca tampaknya tidak secara khusus membahas apa yang harus dilakukan jika klien mengirim pembaruan lebih cepat daripada klien lain.
Dalam kasus khusus saya, saya berurusan dengan orang-orang yang memiliki kecepatan keyboard lebih cepat (komputer mereka akan mengirim lebih banyak pembaruan keyboard daripada komputer lain).
Bagaimana biasanya programmer menangani hal ini?