Framework RedDwarf a fondo (I): Comunicación |
Bueno pues, para seguir con esta temática, y sobre todo, para dejar bien claro las bondades y capacidades del framework RedDwarf, escribo este post. Recordar que RedDwarf es un framework escrito en Java que facilita enormemente el desarrollo de MMORPGs, que salió de los laboratorios de Sun Microsystems y que antes era llamado Project Darkstar.
Voy a analizar 5 áreas distintas en las que este framework nos facilita la vida: comunicación, hilos, acceso concurrente, persistencia y, por último, escalabilidad. En cada una, explicaré las herramientas de las que podemos hacer uso para ahorrarnos horas y horas de desarrollo, testeo y debug al desarrollar cualquier juego online multijugador.
Comunicación
La comunicación en un videojuego online a través de internet suele ser un tema muy delicado. Una mala implementación hará que el lag se apodere de nuestro juego. Puedes hacerte varias preguntas sobre qué tecnología utilizar: ¿Sockets, RMI,…? ¿No sería más fácil centrarnos en la lógica de nuestro juego? Además, la mayoría de los juegos online se basan en un login, enviar mensajes (atacar, moverse, chat, etc) y una desconexión o logout. Sólo implementar la base para que esto funcione costaría mucho trabajo. RedDwarf nos permite abstraernos de TODA la mecánica de la comunicación por red.
Se basa en tres interfaces por el lado del servidor:
- AppListener: puerta principal para inicializar el servidor y hacer login.
- ClientSessionListener: para atender las peticiones, eventos y mensajes de un cliente.
- ClientSession: para enviar mensajes a un cliente.
Y una clase y una interfaz en el cliente:
- SimpleClient: para hacer login y logout y para enviar mensajes. Representa la conexión de salida.
- SimpleClientListener: recibir mensajes y notificaciones como login y logout fallidos/no fallidos. Representa la conexión de entrada.
La siguiente imagen ilustra el funcionamiento de la comunicación cliente-servidor:
Pero esto no es todo. ¿Qué pasa cuando queremos enviar y recibir mensajes de un grupo de usuarios del juego, pero no de todos? Por ejemplo, un chat de clan, recibir mensajes sólo del área visible del mapa, un juego online basado en diferentes partidas (como un servidor de partidas de poker), etc… Para eso existen los Channels o canales. Los canales se crean en el servidor, el cual puede subscribir/eliminar clientes de un canal, mientras que todo lo que sea enviado al canal por alguien será recibido automáticamente por los clientes suscritos.
Fuente: ProjectDarkstar/Learn



about 3 months ago
Favor informar o nome, telefone e e-mail de um profissional do departamento de projetos ou desenvolvimento de produtos para contato!