JavaScript'te çok oyunculu nasıl ele alınır?


12

Mobil çok oyunculu bir oyun için kullanılacak teknolojiye biraz araştırma yapıyorum.

Şu anda daha çok bir deney, bu yüzden Oyuncuların bilmesi gereken tek şey diğer Oyuncular.

Bu tipik bir web uygulamasıysa ve bir oyun olmasaydı Sadece HTTP istekleri her zaman tetiklenirdi - ama bu bir oyun olduğu için performans ve doğruluk bir sorun olacak.

Oyunun birden fazla telefon platformuna hedeflenmesi nedeniyle, istemcinin JavaScript veya JavaScript tabanlı bir çerçevede yazılacağını varsayalım. Sunucu teknolojisi tamamen açık.

Her oyuncunun bir HTTP gönderisine eşdeğer olması ve yalnızca daha hızlı bir protokol kullanarak edinmesi gerekir. Çoklu oyuncunun web tabanlı olmasının nedeni, Bluetooth veya diğer yerel ağlardaki çok oyunculu platformlar arasında çok çeşitli olması ve sorunlara neden olabilmesidir.

Yani soru, JavaScript çok oyunculu için kullanılacak iyi bir protokol / teknoloji nedir? Sunucu tarafı hakkında herhangi bir tavsiye veya önemli mi? Bu iki katmanlı mimariyi bırakıp doğrudan telefondan telefona bağlantıya geçmem için herhangi bir neden var mı?

Yanıtlar:


15

HTTP'den daha iyi bir iletişim protokolü istiyorsunuz. Muhtemelen UDP veya TCP istiyorsunuz. Tarayıcıların UDP iletişimi yapmanın bir yolu yoktur, bu nedenle tek seçeneğiniz TCP'dir.

TCP için bir WebSocket kullanmak istersiniz , ancak web desteği üzerinde tarayıcı desteği dengesizdir.

Bu , TCP'yi taklit etmek için bir COMET tekniği kullanmanız gerektiği anlamına gelir ; popüler bir emülasyon, bir flash uygulamasına gömülü bir web soketi olacaktır.

Socket.IO , web soketlerini destekleyen ve uyumlu olmayan web tarayıcılarında (flash ve diğer COMET tekniklerini kullanır) uygun bir düşüşle taklit eden bir kitaplıktır ( node.js için ).

Çok oyunculu JavaScript oyunları için socket.io ve node.js kullanılmasını öneriyorum


1
İşte HTML5 ve WebSockets ile yapılan gerçek zamanlı bir oyun örneği: rawkets.com . Kaynak kodu burada bulunabilir: github.com/robhawkes/rawkets
Elisée

1
İşte iki örnek daha
Raynos

4

Hem soru hem de kabul edilen cevap 2011'de yayınlandı ve zamanlar o zamandan beri oldukça değişti :)

Websockets oldukça yaygındır, ancak daha da iyi bir teknoloji, güvenilir olmayan UDP akışlarına izin veren WebRTC'dir. Bunlar oyunlar için çok, çok daha iyi.

İletişim dışında, oyun durumu uzlaşması, müşteri tarafı tahmini, serileştirme ve diğerleri gibi çok oyunculu oyunlar yazarken aşılması gereken birçok engel var.

<shameless self promotion>

Node.js tabanlı çok oyunculu bir oyun sunucusu / kütüphanesi olan lance.gg'in orijinal geliştiricilerinden biriyim , burada belirtilen sorunların çoğunu (ve diğerlerini!) Çözdük. Amacımız JavasScript oyun geliştiricileri için çok oyunculu oyun geliştirmeyi kolaylaştırmaktır. Sizi, oyunu yapmak için bir başlangıç ​​noktası olarak kullanmaya davet ediyorum.

</shameless self promotion>


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.