2010-01-23 15 views
21

GAE kullanarak çok oyunculu bir oyun kurmayı düşünüyorum. A oyuncusu harekete geçtiğinde, detayları kaydetmek ve B oyuncunun hareket hakkında bilgi sahibi olmasını istiyorum.GAE bir XMPP sunucusu olarak hareket edebilir mi?

Müvekkilimde açık kaynaklı bir XMPP kitaplığı alabileceğimi ve mümkün olduğunda uygulamamla durumu bildirebileceğimi düşündüm. Oyuncuyu google talk gibi bir hizmete kaydolmaya zorlamak istemem. Bu yüzden jid'leri oturum kimliğine göre anında oluşturacağım.

Sizden duymak isterim! böylece API tarafından kısıtlanan bu işlemi yapmaktan - açık yuva olamaz çünkü Sen gae yapabilmek için gidiş değildir

Teşekkür

cevap

9

bir xmpp sunucusu işlemi gerçekleştirebilirsiniz. Bununla birlikte, yapmak istediğiniz şeyi elde etmek için bir xmpp sunucusu çalıştırmanız gerekmez. Uygulamanızın 'istemcilerin' konuşmasını python API'sini görmesi için bir istemciyi yapmak için appengine API'sinde bulunan XMPP kütüphanelerini kullanabilirsiniz: http://code.google.com/appengine/docs/python/xmpp/. Tüm oyun istemcileriniz gtalk istemcileri olmasina gerek yok, ama onlarin yapabilecegine inandigim gtalk'a köprü yapabilecekler.

burada kısa bir örnek vardır: http://code.google.com/appengine/articles/using_xmpp.html

+6

Örnekte, kullanıcınızın bir xmpp istemcisi ve kimliği olduğu varsayılmaktadır. OP'nin bu varsayımı olmadan çalışmasını istediğini düşünüyorum - oyunun kendisi müşteri olacak ve isimsiz kimlikler üretecekti. Bu senaryo da işe yarar mı? –

+2

Kısa yanıt Hayır veya Evet, ancak GAE istemcisi yeni kimlikleri oluşturamadığından, bu anonim xmpp kimliklerini oluşturmak için kendi xmpp sunucusunu GAE'nin dışında çalıştırması gerekecek. Anonim xmpp kimliklerini oluşturmayı tercih ederseniz muhtemelen bunu yapıyorsunuz çünkü özel bir istemciniz var ve oyun protokolünüzü xmpp üzerinden tünelliyorsunuz, değil mi? Eğer fikir, soket kuralı yüzünden işe yaramayacak olan xmpp sunucusuna güç sağlamak için GAE kullanmaksa. Ancak harici bir xmpp sunucusu kullanabilir ve dönüş motorunu yapmak için GAE'yi kullanabilirsiniz. – dar

+0

GAE API'sının XMPP sunucu komutlarını desteklemiş olabileceğini düşündüm çünkü belgeler GAE'nin [appid] @ appspot.com veya [bir şey] @ [app-id] .appspotchat.com olabileceğini gösteriyor. Ama sonunda kafamı XMPP'nin çalışmalarına döndükten sonra, GAE'nin sadece bir müşteri olduğunu görüyorum. Aksi takdirde, evet XMPP'nin sadece GAE üzerinde soket olmaması sınırlaması için bir tünel olması gerekiyordu. Yoklama olmadan oynatıcımı anında bildirmek için bir yönteme ihtiyacım vardı. – kasuku

3

değerli harcama yapmak yaklaşık 2 sent bir saat için bir bulut sunucusu dağıtabilir Amazon'un Elastic Compute Cloud (EC2) bakmak için 15 dakika olabilirdi. İşte size güzel bir genel bakış http://www.youtube.com/watch?v=ZAB8wCg9MyE&feature=player_embedded

+0

Teşekkürler. Şu anda EC2 mikro ile oynuyor ve ejabberd ile harika çalışıyor. – kasuku

+1

Ayrıca GAE şimdi itme işlemleri için kanal API'sine sahip, ancak şu anda sadece javascript var. – kasuku

İlgili konular