¿Qué tecnologías web usarías para una aplicación en tiempo real? (como un juego multijugador)


Si el juego es por turnos y está utilizando HTML / JS / CSS para su IU, entonces usar un servidor de inserción en tiempo real o un servicio de inserción en tiempo real con bibliotecas asociadas cumpliría con sus criterios.

Si estás hablando de un juego multijugador en tiempo real (Quake, Unreal Tournament [que muestra mi edad] etc.), entonces el servidor / servicio en tiempo real probablemente necesite especializarse para ofrecer una experiencia de juego o tener opciones de configuración que se ocupen de Latencia de conexion.

Por ejemplo, si está publicando una actualización para proporcionar información sobre la posición de los jugadores dentro de un juego, el estado de ese jugador incluye la posición de la extremidad, etc., y ese cliente experimenta cierta latencia, entonces obviamente habrá un retraso en la actualización del jugador en todos los pantallas de otros usuarios. Estoy seguro de que esto ha sido abordado por todos los grandes servicios de juegos en línea, pero ¿ha sido realmente considerado por alguno de los servidores / servicios actuales en tiempo real? Sugeriría averiguar qué servicios pueden hacer frente a este escenario y cómo se ocupan de él. ¿Le proporcionan una estrategia detallada o sus bibliotecas la manejan? ¿Existe una opción de configuración simple en el canal / tema para ese reproductor que ayudará con la latencia?

Dado que sus mensajes pueden estar muy personalizados, le recomiendo que elija un servidor / servicio HTTP Streaming (Comet) que le permita definir sus propias estructuras de mensajes o aliente los mensajes optimizados. Cualquier buen servicio vendrá con una biblioteca JavaScript de calidad que lo ayudará a construir su aplicación multijugador.

Los WebSockets ahora son una realidad en todos los navegadores modernos, pero también necesitará una solución que admita la recuperación de la conectividad HTTP. Cualquier buena solución tendrá algún tipo de estrategia de conexión inteligente mediante la cual elegirá el mejor método de conexión para su navegador y conmutará por error a diferentes tipos de conexión hasta que se establezca una conexión.

Recomiendo echar un vistazo a la Guía de tecnologías web en tiempo real y elegir la pila tecnológica de la aplicación web en tiempo real para ayudarlo a elegir la tecnología que mejor se adapte a su caso de uso.

Puedo ofrecer algunas ideas a su segunda pregunta, ya que tengo experiencia con muchas de ellas. La elección de la tecnología dependerá del tamaño y los requisitos de escala para sus aplicaciones.

Para proyectos más pequeños, un Servidor Flash Media alojado es una muy buena opción, ya que es muy fácil trabajar con él, especialmente si tiene experiencia en ActionScript. No es gratis, pero tampoco es demasiado caro si la escala es pequeña. También es una tecnología muy madura con excelente documentación y muchas personas que pueden ayudarlo. Sin embargo, el precio y la complejidad aumentarán drásticamente si necesita configurar y alojar el Flash Media Server usted mismo.

Si no le importa ensuciarse las manos, Socket.io & Node.js es una excelente y divertida solución para trabajar. La documentación no es muy buena, pero hay una buena posibilidad de encontrar a alguien en línea que pueda ayudarlo, ya que esta tecnología está generando mucha expectación en estos días.

Red5 y BlazeDS son tecnologías excelentes y gratuitas, pero son difíciles de configurar, y la comunidad en torno a estas tecnologías en particular no es tan emocionante como la de Socket.io y Node.js.

Si necesita algo a gran escala, tengo muchas cosas buenas que decir sobre SmartFox Server. Es caro, pero definitivamente vale la pena. Lo bueno de SmartFox Server es que está diseñado para juegos, donde todas las demás tecnologías son tecnologías multipropósito que pueden usarse para juegos. El soporte y la documentación en SmartFox Server es realmente bueno y hay una gran cantidad de ejemplos y casos de uso. He sido director técnico en un gran universo multijugador donde utilizamos SmartFox Server como nuestro back-end, y solo tengo cosas buenas que decir al respecto. Mohak dice que puede esperar una respuesta lenta del servidor SmartFox, pero definitivamente esa no fue mi experiencia. Obviamente, la infraestructura del servidor tiene mucho que decir al respecto, pero experimentamos latencias muy bajas y fuimos perfectamente capaces de usarla para juegos multijugador en tiempo real.

A) Un servidor XMPP (ejabberd u OpenFire) con un cliente Strophe.
B) Flash Media Server o un servidor XMPP con el cliente Xiff. Depende de tu carga.