Saya menerapkan klon asteroid multipemain untuk belajar tentang arsitektur jaringan klien / server dalam permainan. Saya telah menghabiskan waktu membaca publikasi GafferOnGames dan Valve tentang teknologi klien / server mereka. Saya mengalami masalah dengan dua konsep.
Saat ini saya memiliki server permainan otoritatif yang mensimulasikan fisika dengan box2d dan mengirimkan keadaan dunia kepada klien sekitar 20 kali per detik. Setiap klien melacak beberapa snapshot terakhir yang diterima dan lerps antara dua negara untuk memperlancar pergerakan sprite. Namun tidak semulus itu. Bisa mulus untuk sementara waktu, lalu sedikit tersentak-sentak, lalu kembali ke halus, dll. Saya telah mencoba TCP dan UDP, keduanya hampir sama. Adakah yang tahu apa masalah saya? (Catatan: Saya menerapkan ini untuk pemain tunggal terlebih dahulu, dan gerakan sprite sangat halus pada 60fps saat memperbarui dunia fisika hanya 20 kali per detik).
Untuk menyelesaikan masalah pertama saya pikir mungkin klien harus menjalankan simulasi box2d juga dan hanya memperbarui posisi sprite-nya untuk mencocokkan snapshot server ketika mereka tidak cocok. Saya pikir ini mungkin lebih lancar karena implementasi pemain tunggal saya lancar. Apakah ini ide yang bagus?
Bahkan jika itu tidak akan memperbaiki masalah di atas, apakah perlu untuk prediksi sisi klien? Misalnya, jika seorang pemain mencoba untuk memindahkan kapalnya, bagaimana mereka akan tahu jika mereka menabrak asteroid, dinding, atau kapal musuh tanpa simulasi fisika? Sepertinya kapal mereka akan terlihat melewati objek yang harus bertabrakan dengan mereka sebelum mereka menerima snapshot dari server yang mengatakan bahwa mereka mengenai objek tersebut.
Terima kasih!