2011-10-26 14 views
8

Çok az veya hiç eklenti gerekliliği olmadan tamamen tarayıcı tabanlı bir oyun olarak bir tür çok oyunculu RPG üretmekle ilgileniyorum. Oldukça fazla araştırma yaptıktan sonra aşağıdaki plana ulaştım. Burada referans verdiğim teknolojinin bir kısmının tüm tarayıcılarda (özellikle IE) kabul edilmediğinin farkındayım ama şu an için bunu kabul etmeye hazırım.Tarayıcı çok oyunculu ağ stratejisi - bu uygulanabilir bir çözüm gibi görünüyor mu?

Ayrıca - Bir MMO'nun her durumda gayret etmenin yüce bir hedefi olduğunun farkındayım, ama benzer bir yönde geçmişte çok sayıda küçük proje yapmış olsam, bunu gerçekten çok iyi hissetmek istiyorum Sonunda git.

heres bir taslaktır, kimsenin bu düzenleme görebileceğiniz göze batan sorunlar duymak isteriz:

MÜŞTERİ: WebGL/Javascript (muhtemelen three.js). Oyun varlıklarını tutmak için tarayıcı yerel depolamasını kullanın, tarayıcı önbelleğini silerek bunları kaldıracağınızı kabul edin.

MESAJ: kolaylık ve boyut azaltılması için, google protocol buffers kullanan istemci/sunucu arasında kodlamak mesajlar. Mesaj teslimi WebSocket üzerinden yapılacaktır.

OYUN SUNUCU: Python gevent üstünde çalışan (birçok eşzamanlı sayısı ile başa çıkmak için iyi bir çözüm gibi görünüyor). veritabanı için MySQL PHP oyun sunucusu ve DB İnbetween hareket: DB SUNUCU tasarımı here:

dayalı kanatlı bir desen kullanılarak inşa edilecektir.

DETAYLAR: Ben oyun sunucusu güncelleştirme bireysel müşteri saniyede yaklaşık 15-20 defa var ve boşlukları doldurmak için istemci tarafı tahminini kullanmak niyetinde. Müşteriler, sunucuya 30 fps'lik bölgeye anahtar giriş/mesaj gönderebilir. Dönüşten ziyade, gerçek zamana en yakın olan bir deneyimi tercih etmeyi tercih ederim. Başlıca endişem, WebSocket'ın TCP tabanlı protokolü, bu her şeyi imkansız kılacak mı?

Bu çözüm SO için gerçekçi görünüyor mu?

çok teşekkürler,

cevap

1

Genellikle localStorage API ile alan 5MB olsun. Eğer gerçekten ses/müzik içeren bir 3D oyuna sahipseniz, bu sizin varlığınız tarafından gerçekten hızlı bir şekilde yenecek (bugünlerde iyi kalitede bir mp3 ne kadar büyük?). Varlıklarınızı sıkıştırarak süper agresif olmanız gerekecek ve büyük olasılıkla oyun çalışırken yerel depolama alanına giren ve çıkan şeyleri aktaracak bir mekanizma bulmak zorunda kalacaksınız.

Oyun sunucusu ile veritabanı arasında neden PHP'ye ihtiyacınız olduğunu sorarım. Oyun sunucusu doğrudan veritabanıyla konuşamaz ve size bazı işler kazandırmaz mı?

Projenizde bol şans.

+0

Ah! Tam olarak bilmediğim bir şey var, 5MB oldukça sınırlayıcı bir faktör, bu yüzden evet bir çeşit akış sırası o zaman sırayla olurdu.PHP olayına gelince, DB işlem yükünün bir kısmını oyun sunucusundan alıp, mümkün olduğunca hızlı bir şekilde müşteriye hizmet vermeye konsantre olabileceğini ve sadece periyodik olarak veri yığınlarının çıkarılmasını sağlayacağını düşündüm. DB'ye yazıldığında, bu verilerin kendisini biçimlendirmek ve yazmadan üstlenmesi için – bharling

+0

Yup, CouchDB'ye bakmayı deneyin, REST çağrılarını hemen destekler. – Anders