2010-10-25 23 views
2

Je suis assez nouveau pour les jeux multijoueurs. J'en ai fait quelques-unes pour mon plaisir, mais rien de profond.jeu multijoueur peer-to-peer avec xmpp

De toute façon, je veux faire un jeu qui est très multiplateforme. Les clients seraient connectés avec leurs comptes Facebook sur les appareils pour lesquels je lance le jeu (ordinateurs les plus probables (via flash), iPhone et Android). Je suis un développeur solo avec un budget restreint (en fait plus comme aucun budget). Donc, je veux faire le jeu avec une connexion peer-to-peer. Je voudrais éviter d'utiliser une configuration client/serveur en raison du coût de maintenance d'un serveur. Le problème que je rencontre est qu'il n'y a aucun moyen de connecter les pairs sur Internet, et le jeu n'est pas destiné à être joué sur un wifi local.

Donc, j'ai une idée. Puis-je utiliser le chat xmpp de facebook pour envoyer la communication multijoueur du jeu sur Internet? J'ai la tête de xmpp utilisée pour les jeux multijoueurs auparavant. Est-ce que quelqu'un a d'autres idées? Je comprends que xmpp peut être connecté peer-to-peer, mais peut-il être fait sur Internet en quelque sorte. Je ne veux pas que les utilisateurs doivent jouer avec les paramètres du routeur pour jouer.

Merci pour votre aide!

+0

Cela dépend si vous cherchez à ajouter un chat multi-joueurs, ou essayez-vous d'utiliser le protocole pour synchroniser les données du jeu? – mikerobi

+0

J'avais peur de ne pas avoir clarifié. Je l'utilise pour synchroniser les données. – Lance

Répondre

0

Le principal problème dans les systèmes P2P sont les NAT et les pare-feu. Les firewalls peuvent être ouverts localement, les NAT ne le peuvent pas dans 99% des cas. Dans le monde IPv6, il n'y aura pas de NAT, donc le P2P sera gratuit pour tous.

Maintenant, vous voulez utiliser les API XMPP de Facebook pour le multijoueur P2P. Eh bien ... XMPP de Facebook est pratiquement client/serveur pour la raison ci-dessus. Toutes les API de Facebook font pour cacher la couche de transport aux applications, ce qui signifie que vous pouvez envoyer des messages à "un autre utilisateur" pendant qu'ils transitent réellement par le serveur de Facebook. Skype est un autre exemple d'environnement de serveur P2P +. Si deux utilisateurs se tiennent derrière un NAT, il utilise automatiquement un serveur proxy.

Ceci est la plupart du temps la même chose avec XMPP de FB, donc vous pouvez aller avec cela, à moins que vos utilisateurs de Facebook verront beaucoup de messages étranges dans la fenêtre de chat :)

+0

Grr. J'avais peur de ça. Est-il possible de récupérer les messages avant qu'ils n'atteignent la fenêtre de discussion? Probablement pas. Avez-vous des idées sur la façon de faire de la communication peer-to-peer sur Internet? Je voulais utiliser le serveur de discussion de facebook pour que ce soit leur bande passante qui s'utilise: P J'ai lu quelque part que vous pouvez utiliser un serveur pour connecter vos utilisateurs et le jeu peut être peer-to-peer par la suite. Bien sûr, je n'ai aucune idée de comment faire ça. Merci pour votre réponse rapide! – Lance

+0

Désolé, je ne sais pas trop. Vous pouvez essayer d'expérimenter par vous-même, les messages de chat mabye ont un format spécial qui est filtré. XMPP est un protocole, et ne fait pas que discuter. Je ne suis pas expert en la matière. J'ai attrapé votre problème NATting et vous a répondu de ce point de vue. Mais je ne suis pas expert en API Facebook –

+0

Ok, merci. Je viens de réaliser que j'ai un autre problème ... Le jeu doit pouvoir connecter plus de deux personnes à la fois. – Lance

0

Je pense que vous ne pouvez pas construire un jeu multi-joueurs juste en utilisant des serveurs jabber facebook. Vous aurez besoin d'un composant jabber personnalisé installé sur votre propre serveur pour renforcer la logique de votre jeu sur les paquets xmpp transférés entre les utilisateurs du jeu.

Cela impliquera (probablement) l'écriture du composant Jabber Component Protocol personnalisé XEP-0114 et Bosh Connection Manager à votre disposition. Si vous cherchez à utiliser PHP pour développer votre application, vous pouvez jeter un oeil à la bibliothèque Jaxl (composant XMPP et bibliothèque client en PHP)

+0

D'accord, merci. Je pense que j'ai décidé d'abandonner l'idée d'utiliser xmpp pour synchroniser le jeu (au moins pour peer-to-peer).Penser volontairement, mais je ne pense pas pouvoir le retirer. – Lance

+0

Je pense que je vais essayer de construire un serveur de matchmaking simple qui utilise une très petite quantité de bande passante (au moins, par rapport à une installation client/serveur complet). Un des utilisateurs sera un super pair ou essentiellement un serveur. Je vais jeter un coup d'œil au punch-through NAT pour voir si je peux présenter des pairs et les laisser prendre en charge les afterwords (ce qui élimine le besoin d'un serveur dédié full-on). – Lance