2011-08-04 18 views
9

Resumen rápida:flash Sugerencias servidor de juego (Node.js, Red5, etc)

Tenemos un juego flash completado similar al Tetris que está listo para ser "vinculado" para el modo multijugador. Después de investigar y preguntar aquí: Flash Sockets, Peer-to-Peer Capabilities, hemos llegado a la conclusión de que la red P2P hecha en la forma en que los juegos xbox/ps3 manejan juegos en línea no es posible sin costosos/dudosos servicios/software de adobe (FMS/Cirrus) en la plataforma flash en este punto en el tiempo. Básicamente, un cliente flash no puede convertirse en un "host" que escucha en sockets sin el protocolo RTMFP.

La pregunta que necesita Sugerencias:

Con dicho resumen, la pregunta es ... ¿cuál es la mejor manera de implementar la infraestructura de red para un juego como Tetris, que tiene un poco de pequeña E/S pasando de usuario a usuario (por ejemplo, un máximo de 4 jugadores a la vez). Dado que no podemos asignar un solo jugador como el estilo p2p anfitrión, nuestras opciones son:

1.) La grasa Server con Juego de Lógica, Light Clients actualización de pantalla/interpolar basado en las actualizaciones del servidor (ALA) Quake

2.) Light Server maneja la comunicación entre Fat Clients (simulación de Ala Concurrent como juegos RTS)

El problema es que no tenemos experiencia en juegos de redes y por lo tanto, nos encantaría dar consejos sobre los pros/contras de aquellos soluciones (o incluso otras soluciones). Nuestro juego de Tetris no es tan trivial como enviar "líneas de ataque" cuando un cliente borra las líneas para agregarlas a los otros jugadores que luchan actualmente. Necesitamos un poco más de sincronización en tiempo real que eso. Por ejemplo, la lista de los siguientes tetriminos es una única fuente compartida donde todos "pelean" por las piezas deseables.

Finalmente, dependiendo de la implementación elegida, me pregunto si alguien tiene alguna experiencia con Node.js en servidores de juegos. Asumiría que si el servidor fuera un servidor liviano solo manejando las transferencias de datos entre los clientes, ese Nodo sería un buen complemento perfecto. Sin embargo, si la lógica del juego se coloca en el servidor node.js, supongo que la naturaleza de bloqueo de los cálculos haría redundante el enfoque de E/S sin bloqueo de Nodo.js de un solo enlace. De todos modos, cualquier consejo sobre el tema es muy apreciado.

+5

Nos hemos decidido por crear una nueva arquitectura de servidor de Node.js para flash. Para aquellos de ustedes que buscan aventurarse en esta ruta, la clave para conseguir que los sockets funcionen entre Flash y Node.js es: sockets binarios en bruto de la clase de sockets flash y manejados con el buffer global en Node.js O sockets XML de flash , manejado como codificación UTF8 en Node.js con terminación/0 manejando cada mensaje O sockets binarios en bruto desde flash codificados a base64, luego recibidos como base64 en el lado Node.js. ¡Buena suerte a todos! – DnisT

+1

[Electro server] (http://www.electrotank.com/es5.html) es uno de los mejores servidores para flash. – Enkuushka

Respuesta

0

He usado Flash Media Server para desarrollar una serie de aplicaciones multiusuario (incluidos los juegos). Personalmente, creo que es demasiado caro para lo que hace por ti.

nunca he utilizado Red5 o Node.js, pero las conexiones de socket de Node.js suena prometedor.

También hemos construido un simple nunca ending- toma usando PHP la que funciona tan bien (pero no tan bueno, que es un poco nervioso) apuesto a que podría encontrar más información sobre esto y tal vez desarrollar algo ustedes mismos viendo cómo no tendrán que transferir demasiados datos entre los usuarios. En la web hay una serie de ejemplos del uso de PHP tomas de corriente con * SWF * s como esto chat room example on kirupa.com

mejor de la suerte.

1

He tenido cierto éxito con SmartFoxServer. Es gratis para menos de 100 usuarios simultáneos, pero si tiene más, necesita comprar una licencia.

Aún así, es fácil escribir la lógica del lado del servidor y es fácil de administrar e implementar.

3

Divulgación completa: soy cofundador de la plataforma sindical.

si desea comenzar a utilizarlo rápidamente, le sugiero que utilice un servidor multiusuario existente y un marco cliente, como los sugeridos anteriormente o la plataforma sindical (www.unionplatform.com, gratis para 1000 conexiones simultáneas).

las personas tienden a subestimar la cantidad de trabajo de infraestructura requerido para hacer un juego multijugador con todas las funciones con sistemas de lobby confiables y emparejamiento. Si está construyendo desde cero, puede pasar tanto tiempo, por ejemplo, en la conmutación por error de conexión y el código de reconexión como lo hace en la física del juego principal.

en un juego como multijugador tetris, implementaría una lógica de juego/lógica autorizada en el servidor (en unión, usaría un módulo de sala) y reflejaría la simulación del lado del servidor en el lado del cliente. el cliente muestra la salida, interpola el mundo del lado del servidor y proporciona entradas del jugador. aquí hay un juego de mesa multijugador ejemplo que utiliza este enfoque:

http://www.unionplatform.com/?page_id=1229

una característica potencialmente útil de unión para su situación es su soporte para Javascript WebSocket, además de la comunicación tradicional http.

http://www.unionplatform.com/?page_id=1587

el soporte javascript le da la opción de crear clientes de juegos de pleno derecho en html5, o añadir clientes de navegador web nativo para las estadísticas de indicadores o juegos de espectador que se está reproduciendo en flash. El protocolo de unión también está documentado públicamente (http://www.unionplatform.com/?page_id=86), por lo que puede crear funciones de cliente personalizadas en cualquier idioma.

por curiosidad, ¿tienes un enlace público para tu juego?

diviértase!

colin

+0

La divulgación se vería bien al principio. Todavía votó por la idea que trajo el tema. –

+0

@SamyakBhuta estuvo de acuerdo, gracias. la divulgación se movió a la cima. –

Cuestiones relacionadas