Bagaimana cara menangani multi-pemain dalam JavaScript?


12

Saya hanya melakukan sedikit riset tentang teknologi untuk digunakan untuk permainan multi-pemain seluler.

Ini lebih merupakan eksperimen saat ini, jadi untuk saat ini, satu-satunya hal yang perlu diperhatikan oleh Pemain adalah Pemain lain.

Jika ini adalah aplikasi web biasa dan bukan game, itu hanya akan memiliki permintaan HTTP yang diaktifkan setiap saat - tetapi karena ini adalah permainan, kinerja dan akurasi akan menjadi masalah.

Karena game ini ditargetkan pada beberapa platform ponsel, katakanlah klien akan ditulis dalam JavaScript atau kerangka kerja yang didasarkan pada JavaScript. Teknologi server benar-benar terbuka.

Setiap pemain harus membuat yang setara dengan posting HTTP dan hanya menggunakan protokol yang lebih cepat. Alasan multiplayer berbasis web adalah karena multiplayer di Bluetooth atau jaringan lokal lainnya akan terlalu beragam di seluruh platform dan dapat menyebabkan masalah.

Jadi pertanyaannya bermuara pada apakah protokol / teknologi yang baik digunakan untuk JavaScript multiplayer? Adakah saran tentang hal-hal sisi server atau apakah itu penting? Apa alasan saya harus meninggalkan arsitektur dua tingkat ini dan menggunakan koneksi telepon-ke-telepon langsung?

Jawaban:


15

Anda ingin protokol komunikasi yang lebih baik daripada HTTP. Anda mungkin menginginkan UDP atau TCP. Browser tidak memiliki cara melakukan komunikasi UDP sehingga satu-satunya pilihan Anda adalah TCP.

Untuk TCP Anda ingin menggunakan WebSocket , namun dukungan browser tidak stabil di websockets.

Ini berarti Anda perlu menggunakan teknik COMET untuk meniru TCP, satu emulasi populer adalah websocket yang tertanam dalam aplikasi flash.

Socket.IO adalah pustaka (untuk node.js ) yang mendukung soket web dan mengemulasi mereka dengan fallback yang tepat pada browser web yang tidak patuh (menggunakan flash dan teknik COMET lainnya).

Untuk permainan JavaScript multi-pemain, saya akan merekomendasikan penggunaan socket.io dan node.js


1
Berikut ini contoh game real-time yang dibuat dengan HTML5 & WebSockets: rawkets.com . Kode sumber tersedia di sini: github.com/robhawkes/rawkets
Elisée

1
Berikut adalah dua contoh lagi
Raynos

4

Baik pertanyaan dan jawaban yang diterima diterbitkan pada tahun 2011, dan waktu telah berubah sejak :)

Websockets cukup lazim, tetapi teknologi yang lebih baik adalah WebRTC yang memungkinkan aliran UDP tidak dapat diandalkan. Ini jauh, jauh lebih baik untuk gim.

Selain komunikasi, ada banyak kendala lain yang harus diatasi ketika menulis game multi-pemain seperti rekonsiliasi keadaan game, prediksi sisi klien, serialisasi dan banyak lainnya.

<shameless self promotion>

Saya salah satu pengembang asli lance.gg , server permainan / perpustakaan multipemain berdasarkan node.js di mana kami telah memecahkan banyak masalah yang disebutkan (dan banyak lainnya!). Tujuan kami adalah untuk membuat pengembangan game multi-pemain lebih mudah bagi para pengembang game JavasScript. Saya dengan hangat mengundang Anda untuk menggunakannya sebagai titik awal untuk membuat game Anda.

</shameless self promotion>


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.