¿Es Google App Engine una buena plataforma para un MMO en línea?

10

Estoy viendo algunas ideas para crear un juego MMORPG a pequeña escala, basado en Java, este es un proyecto paralelo / hobby para ayudar a mi proceso de aprendizaje

Ya he jugado con GAE y he puesto una aplicación web simple, estoy pensando en usar esto como mi plataforma para un juego

¿Es esta una buena idea? ¿Hay algún juego por ahí que use dicha plataforma? No puedo ver ninguna limitación hasta ahora, aparte de que Google podría ser capaz de "poseerlo" en lugar de yo mismo

usuario155695
fuente

Respuestas:

3

Más o menos, depende de cuánta latencia / velocidad necesita.

Cada solicitud http (a un servidor dedicado) tarda entre 300 y 600 ms. En el motor de la aplicación que se parece más a 600-900 ms o incluso más (si tiene muchas consultas). Al mismo tiempo, una sola conexión al GAE debe durar menos de 30 segundos, así que ...

Todo lo que eso significa es que tendrás que hacer encuestas lentas, lo que podría ser lo suficientemente bueno para algunos juegos por turnos, no en tiempo real.

Si quieres hacer un juego en tiempo real, debes abandonar HTTP e ir a TCP o UDP (especialmente UDP).

Dicho esto, si una conexión de latencia lenta / no en tiempo real es lo suficientemente buena para su juego, GAE escala bastante barato y resuelve muchos problemas (sin límite en el tamaño de la base de datos, sin problemas de spam con gran cantidad de correos electrónicos) , etc.)

DFectuoso
fuente
TCP no es realmente una opción si quieres en tiempo real.
o0 '.
44
^^^ Mito común
U62
* Para diferentes valores de tiempo real.
DFectuoso
1
TCP maneja bien en tiempo real, si administra sus paquetes correctamente. No tiene sentido enviar 10 paquetes al mismo destino en unos pocos milisegundos, cuando puede agruparlos.
Stephen Belanger el
@Stephen: correcto. Usando las técnicas correctas, puede lograr velocidad y confiabilidad que la única preocupación que queda será la velocidad de conexión.
Moshe Revah
3

No es exactamente un MMO, pero aquí hay un artículo que leí recientemente sobre el uso de App Engine como servidor de juegos:

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

He usado GAE como back-end para un par de mis proyectos, ninguno de los cuales era un MMO, pero ciertamente lo aprecio como una sólida plataforma de desarrollo web con la que es fácil trabajar en general, y es decididamente barato experimentar y bootstrap de.

Como señala @DFectuoso, para un MMO en tiempo real tendrá algunos problemas al usar cualquier servidor web, y mucho menos App Engine en particular. Sin embargo, un MMO por turnos y / o social posiblemente podría usar App Engine como el único back-end.

En última instancia, depende de la arquitectura de tu juego. Existen estrategias para hacerlo en tiempo real o en tiempo real falso donde el servidor principal es un servidor web como App Engine:

  • Puede realizar comunicaciones entre pares en tiempo real, solo actualizando el servidor en los momentos clave.
  • Podría intentar alguna comunicación en tiempo real con estrategias como sondeos largos, a los que también se hace referencia recientemente como "solicitudes de cometas", en las que realiza solicitudes al servidor web y el servidor nunca "finaliza" la respuesta que da como resultado solicitudes muy largas / polling, pero permite que el servidor web envíe continuamente nuevos datos a medida que estén disponibles. (El soporte más profundo del cometa es una característica próxima en App Engine, de acuerdo con la hoja de ruta).
  • En el caso de App Engine, también puede usar XMPP / Jabber (un protocolo de mensajería instantánea abierto) para comunicarse rápidamente (casi en tiempo real) con su servidor de juegos. Puede que no sea un gran lugar para construir un juego completo en tiempo real, pero hay muchos bots de chat interesantes escritos con el soporte XMPP de App Engine.
WorldMaker
fuente
Este es el rastreador de problemas para el soporte de Comet (ya que todavía no pude insertar el enlace en la publicación real, aparentemente necesito más puntos de reputación): code.google.com/p/googleappengine/issues/detail?id=377
WorldMaker