Saya telah membaca artikel Valve tentang jaringan multi-pemain yang telah diadaptasi dari makalah Yahn Bernier pada tahun 2001 yang disebut Metode Kompensasi Latensi dalam Desain dan Optimasi Protokol dalam Gim Klien / Server . Saya membuat game multi-pemain realtime menggunakan server node.js yang terhubung ke klien melalui socket.io dan saya punya beberapa pertanyaan mengenai prinsip-prinsip yang dirinci di bawah ini:
Interpolasi Entitas
[Interpolasi] mencegah gerakan gelisah yang biasanya menyebabkan buffering pembaruan server kemudian memutarnya kembali dengan celah-celah di antara keduanya. Itu juga dapat melindungi terhadap gangguan yang disebabkan oleh paket loss.
Prediksi Sisi Klien
Prediksi adalah gagasan klien yang memperkirakan efek dari tindakan pemain lokal tanpa menunggu server mengonfirmasi. Keadaan diprediksi entitas diuji terhadap perintah server saat mereka tiba sampai kecocokan atau kecocokan salah terdeteksi.
Kompensasi Lag
Kompensasi lag adalah gagasan server yang menggunakan latensi pemain untuk memundurkan waktu saat memproses [input pengguna], untuk melihat apa yang dilihat pemain saat perintah dikirim. Dalam kombinasi dengan prediksi, kompensasi keterlambatan dapat membantu memerangi latensi jaringan hingga hampir menghilangkannya dari perspektif penyerang.
Apakah prinsip-prinsip berlaku untuk TCP seperti yang mereka lakukan untuk UDP dan apakah akan ada perbedaan dalam implementasi? Saya dapat melihat bahwa interpolasi entitas tidak perlu melindungi terhadap kehilangan paket tetapi hanya itu saja.
Dapatkah saya berkomunikasi antara server dan browser web dan sebaliknya menggunakan UDP dan Node.js?
Karena makalah ini berumur lebih dari satu dekade, apakah prinsip-prinsip ini masih digunakan atau sudahkah teknologi lain muncul?
Bantuan apa pun akan sangat dihargai.
Jawaban:
sumber
Anda harus memeriksa artikel ini tentang Game Multiplayer Waktu Nyata dalam HTML5 yang diposting di situs buildnewgames.com oleh Sven Bergstrom, ia berbicara tentang hal yang sama dan ia menggunakan Node.JS. Saya memiliki sesuatu yang serupa dengan diri saya sendiri. Saya baru saja meneliti lebih lanjut tentang prediksi sisi klien dan interpolasi dan sejenisnya sebelum saya mencoba mengatasi sisanya.
Saya percaya itu pasti mungkin untuk melakukan hal ini dengan Socket.IO dan Node, namun teknologinya masih baru sehingga akan ada sedikit dokumentasi dan sedikit atau tidak ada sama sekali dalam cara panduan implementasi. Saya akan merekomendasikan melakukan apa yang saya lakukan dan mempelajari subjek dengan sangat rinci dalam istilah abstrak tingkat tinggi dan kemudian mencoba menerapkannya sendiri.
sumber
Saya percaya teknologinya hampir sama. Juga, konsep-konsep tidak tergantung pada bahasa apa yang Anda gunakan atau apakah Anda melakukan UDP atau TCP. Saya telah menulis penjelasan yang sangat rinci tentang semuanya di sini http://www.gabrielgambetta.com/fpm1.html , termasuk diagram cantik :)
sumber