Google App Engine est-il une bonne plate-forme pour un MMO en ligne?


10

Je cherche des idées pour créer un jeu MMORPG à petite échelle, basé sur Java, c'est un projet parallèle / hobby pour aider mon processus d'apprentissage

J'ai déjà joué avec GAE et j'ai mis en place une application web simple, je pense l'utiliser comme plateforme pour un jeu

Est-ce une bonne idée? Existe-t-il des jeux qui utilisent une telle plateforme? Je ne vois pour l'instant aucune limitation, à part Google qui pourrait être «propriétaire» plutôt que moi-même

Réponses:


3

En quelque sorte, cela dépend de la latence / vitesse dont vous avez besoin.

Chaque requête http (vers un serveur dédié) prend entre 300 et 600 ms. Dans le moteur d'application, cela ressemble plus à 600-900 ms ou même plus (si vous avez beaucoup de requêtes). En même temps, une seule connexion au GAE doit durer moins de 30 secondes, alors ...

Ce que cela signifie, c'est que vous devrez effectuer une interrogation lente, ce qui pourrait être suffisant pour certains jeux au tour par tour et non en temps réel.

Si vous voulez faire un jeu en temps réel, vous devez quitter HTTP et aller sur TCP ou UDP (en particulier UDP).

Cela dit, si une connexion à latence lente / non temps réel est suffisante pour votre jeu, GAE évolue à peu de frais et résout beaucoup de problèmes (pas de limite sur la taille de la base de données, pas de problèmes de spam avec une grande quantité d'e-mails , etc)


TCP n'est pas vraiment une option si vous voulez en temps réel.
o0 '.

4
^^^ Mythe commun
U62

* Pour différentes valeurs de temps réel.
DFectuoso

1
TCP gère très bien le temps réel, si vous gérez correctement vos paquets. Inutile d'envoyer 10 paquets vers la même destination en quelques millisecondes, quand vous pouvez les regrouper.
Stephen Belanger

@Stephen: à droite. en utilisant les bonnes techniques, vous pouvez atteindre une vitesse et une fiabilité dont la seule préoccupation restante sera la vitesse de connexion.
Moshe Revah

3

Ce n'est pas exactement un MMO, mais voici un article que j'ai lu récemment sur l'utilisation d'App Engine comme serveur principal de jeu:

http://gamesfromwithin.com/google-app-engine-as-back-end-for-iphone-apps

J'ai utilisé GAE comme back-end pour quelques-uns de mes projets, dont aucun n'était un MMO, mais je l'apprécie certainement en tant que plate-forme de développement Web solide, facile à utiliser en général et décidément bon marché pour expérimenter et bootstrap de.

Comme le souligne @DFectuoso, pour un MMO en temps réel, vous allez avoir des problèmes avec n'importe quel serveur Web, et encore moins App Engine en particulier. Cependant, un MMO au tour par tour et / ou social pourrait très probablement utiliser App Engine comme seul back-end.

En fin de compte, cela dépend de votre architecture de jeu. Il existe des stratégies pour faire en temps quasi réel ou simuler en temps réel lorsque le serveur principal est un serveur Web comme App Engine:

  • Vous pouvez effectuer des communications peer-to-peer en temps réel, ne mettant à jour le serveur qu'aux moments clés.
  • Vous pouvez tenter une communication en temps réel avec des stratégies telles que l'interrogation longue, également appelée récemment «demandes de comète», dans laquelle vous faites des demandes au serveur Web et le serveur ne «termine» jamais la réponse, ce qui entraîne de très longues demandes / polling, mais permet au serveur Web de pousser continuellement de nouvelles données à mesure qu'elles deviennent disponibles. (La prise en charge plus approfondie des comètes est une fonctionnalité à venir dans App Engine, selon la feuille de route.)
  • Dans le cas d'App Engine, vous pouvez également utiliser XMPP / Jabber (un protocole de messagerie instantanée ouvert) pour communiquer rapidement (à peu près en temps réel) avec votre serveur de jeu. Ce n'est peut-être pas un bon endroit pour créer un jeu complet en temps réel, mais il existe de nombreux robots de discussion intéressants écrits avec le support XMPP d'App Engine.

Il s'agit du suivi des problèmes pour la prise en charge de Comet (car je n'ai pas encore pu intégrer le lien dans le message réel - j'ai besoin de plus de points de réputation apparemment): code.google.com/p/googleappengine/issues/detail?id=377
WorldMaker
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.