Apa cara terbaik untuk menjaga semua klien disinkronkan dengan server dan satu sama lain?
Saat ini, kami memiliki dua pendekatan dalam pikiran:
- Ketika klien mengirim sesuatu ke server, server segera mengirimkan pesan ke semua klien, yang langsung bereaksi.
- Memperkenalkan beberapa waktu tunda, di mana server mengirimkan pesan ke semua klien, dengan arahan, "bertindak berdasarkan hal ini pada waktunya
t
.
Pendekatan kedua sepertinya akan lebih memungkinkan klien dalam sinkronisasi yang lebih baik (karena melayani beberapa tingkat kelambatan); tapi saya bertanya-tanya apakah daya tanggap akan hilang ke tingkat yang terlalu tinggi (yaitu pengguna mengklik 'lompatan' dan ada kesenjangan yang nyata antara menekan tombol dan benar-benar melompat).
Ada juga kemungkinan memiliki klien menghitung posisi mereka sendiri (dan tidak menunggu server mengatakan "Anda telah melompat"); tetapi karena jeda yang tak terhindarkan, klien akan menjadi sangat tidak sinkron.
Lalu ada seluruh pertanyaan TCP vs UDP; karena kami ingin cepat, tetapi saya juga benci server mengatakan Anda berada di lokasi yang sama sekali berbeda dari yang Anda kira.
Dengan semua tuntutan yang saling bersaing ini, semuanya menjadi sangat tidak pasti bagaimana kita harus mendekati masalah ini. Manakah dari pendekatan ini (atau yang lainnya) yang terbaik untuk menjaga agar klien dan server tetap sinkron? Yang mana yang benar-benar digunakan dalam industri?