Bir HTML5 oyununa çok oyunculu oyun ekleme [kapalı]


15

Şu anda kooperatif deneyimim olan bir oyun yapmakla ilgileniyorum, ancak bunu HTML5'te uygulamanın en iyi yöntemini merak ediyorum.

Düz C soketleri kullanmadan önce ve ayrıca SDL için Net kütüphanesi ile oyunlar yaptım.

Bunu tuval tabanlı bir ortamda yapmak için en iyi seçeneklerim nelerdir?

Şu anda, ben gelebilir tüm AJAX / veritabanı çözümleri (yüksek yenileme hızı ile), ya da bir şekilde veri soketleri aracılığıyla huni olacak bir PHP sunucusu uygulamak vardır.


Genel oyun 2,5D platform-ish türü bir oyun olacak, bu nedenle her iki müşterinin de oyuncu pozisyonları, düşman pozisyonları, mermiler, çevresel veriler vb.


1
Websockets ( en.wikipedia.org/wiki/WebSockets ) sonlandırıldığında (ve uygulanmış vb.) Bu muhtemelen iyi bir yol olurdu, o zamana kadar AJAX (X olmadan, bunun için gerekli XML yok) muhtemelen en iyi yol olacağını düşünüyorum (sanırım hala çok iyi bir yol değil).
Elva

Web soketleri için destek hızla düşüyor gibi görünüyor ...
the_e

Bir stand veya oyun yapmak ister misiniz? Oyun yapmak istiyorsanız; html5 için zahmet etmeyin.

@ stefan: neden ikisi de olmasın? sadece sonuçlandırılmadığı için onunla çalışamayacağım anlamına gelmez!
the_e

Yanıtlar:


12

Socket.IO , zarif bir seçim ile diğer birkaç katman (websockets, flash, comet teknikleri dahil) üzerine kurulmuş bir sistem sunar.

Node.js , sunucu tarafında çalıştırmak için bir seçenektir.


5

Bu cevaba bakınız :

Bununla birlikte, WebSocket yaygın olarak kullanılabilir olana kadar betiğinize bir geri dönüş sağlamak için mevcut olduğunda Flash'ı kullanabilirsiniz. Gimite'nin web soketi-js buna ücretsiz bir örnektir. Bununla birlikte, Flash Yuvaları ile aynı sınırlamalara tabi olursunuz, yani sunucunuzun soket bağlantı noktasına istek üzerine bir etki alanları arası ilke verebilmesi gerekir ve genellikle proxy / güvenlik duvarlarıyla ilgili zorluklarınız olacaktır. (Flaş yuvaları doğrudan yapılır; doğrudan genel IP erişimi olmayan ve yalnızca bir HTTP proxy üzerinden ağdan çıkabilen biri çalışmaz.)


3

Kuyruklu yıldız ” muhtemelen burada kullanabileceğiniz bir şemsiye terimdir. WebSockets daha güvenli bir seçenek olacaktır (güvenli olduğu için mutlu olduklarında).


3

Yanıt node.js. Gerçek zamanlı çok oyunculu bir atış oyunu geliştirmek için kullandım ve baştan sona yaklaşık 1 ay sürdü. Minimum gecikme süresine ihtiyaç duyacak şekilde bazı benzersiz zorluklar sundu ve kavramın çalışması için tüm oyuncuların diğerinde senkronize kalmaları gerekir.

İstemci tarafı ve sunucu tarafı javascript ile yazılır ve sınıfları / mantığı birbirleriyle paylaşır. Bu, her şeyi iki kez uygulamak zorunda olmadığınız için hataları düzeltmeye çalışırken sayılmaya başlar.

Oyun yeniden başlatılmadan yaklaşık 2 aydır devam etti ve binlerce maç oynandı.

Socket.io bir yuva uygulamasıdır ve node.js kullanır, ancak bu noktada bir oyun için çok şişirilir. Node.js için github'da başka websocket uygulamaları ve bunu kullanan oyun örnekleri de vardır.


2

Her zaman AJAX ve bir tür mesaj kuyruğu kullanabilirsiniz. ActiveMQ buna iyi bir örnektir. Sunucuda ActiveMQ çalıştırıyorsunuz, ardından JavaScript'iniz mesaj gönderip alabilir. Her oyuncunun benzersiz bir ada sahip olmasını sağlayın ve diğer oyuncuya mesaj gönderin.




2

İlginç bulabileceğiniz çok oyunculu bir platform üzerinde çalışıyoruz. Projemizi www.16cubes.com adresinde görebilirsiniz - eşler arası iletişimi sağlamak için basit bir javascript katmanı sunuyoruz. Bir şekilde Comet prensibine dayanıyor ve biraz daha standart hale geldikçe websocket kullanmaya geçmeyi planlıyoruz. Öte yandan, otomatik rakip eşleştirme, oyun sohbeti, facebook arkadaşları tek tıklamayla davetiye vb.

Bir demo tic-tac-toe var, eğer görürseniz muhtemelen daha iyi bir fikir edinebilirsiniz. Ve evet, anonim olarak da oynayabilirsiniz. İstemiyorsanız kayıt gerekmez. Kodlamanız gereken 10'dan az javascript API'sı var ve bu kodu www.16cubes.com/documentation adresinde bulabilirsiniz.

Aktif olarak geri bildirim arıyoruz, bu yüzden bize hem iyi hem de kötü bildirin


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.