FrameWork Cliente
General.png

El framework para clientes de juego permite desarrollar la parte cliente de los juegos implementando un mínimo de clases, abstrayendose de los detalles de gestion de comunicaciones con el servidor, control de recursos y demas aspectos que quedan totalmente controlados.

El núcleo del framework es la clase JuegoAbstracto. Esta clase representa la lógica de cliente del juego y es la encargada de transformar los mensajes provinientes del servidor en eventos que puedan usar cómodamente las implementaciones concretas. Para ello implementa un bucle con tiempo de repetición ajustable que realiza las siguientes operaciones.

  • Adquisición de mensajes y retransmisión a la implementación concreta
  • Ejecución de objetos preparados para ser notificados tras cada iteración del bucle
  • Preprocesado de eventos y retransmisión
  • Orden de redibujado
  • Limpieza

Para ello se basa en el patrón de diseño Template Method (el algoritmo de un juego estandard -el bucle- hace llamadas para ejecutarse a métodos que implementarán concretamente sus descendientes).

Como parte del control de la lógica de la partida instancia objetos de la clase UtilidadPartida y UtilidadJugadores que contienen en estado actual de la partida desde el punto de vista del cliente y que pueden ser usados por los implementadores de los juegos para obtener información util. También instancia la clase Recursos que actua como una caché con precarga de gráficos para evitar tiempos de espera al usuario y que implementa una variante del patron flyweight apoyandose en las clases Sprite y SpriteFW para evitar una repeticion innecesaria de imagenes cargadas en memoria.

El sistema de representanción gráfica del juego se fundamenta en la clase PanelBase, que representa el area visible para un jugador mientras juega. El refresco de este panel está dirigido por JuegoAbstracto y permite al implementador realizar las operaciones gráficas que desee sin tener que renunciar por ello a usar controles SWING estandard. Además permite el uso de componentes dibujables (implementaciones de IDibujable) que puede diseñar el implementador del juego o venir incluidos en futuras versiones del framework. A partir de la primera versión del framework existe un componente dibujable llamado PanelSprite que permite la funcionalidad clásica de un panel de SWING pero con las ventajas propias del sistema de dibujado del framework.

Para dar más posibilidades gráficas al creador de juegos, el sistema gráfico soporta dos tipos adicionales de objetos: Animadores y Efectores. Un efector realiza un efecto gráfico (rotación, tintado, desenfoque) sobre un Sprite. Los efectores son apilables de manera que un Sprite puede tener asignados varios efectos que se aplicarán en orden. Los animadores como su nombre indica permiten realizar animaciones sobre los sprites (movimiento, cambio de imagen, cambio de efectos…).

Respecto al subsistema de comunicaciones contamos con una implementación inspirada en el módulo de comunicaciones de servidor que mediante la tecnología de serialización XStream permite el paso de mensajes y objetos entre la máquina cliente y el servidor de juegos de forma sencilla. Este subsistema es a su vez encapsulado por JuegoAbstracto para ahorrar al diseñador de juegos los detalles internos y para facilitar el envio de información desde y hacia el juego en el servidor.

La clase que hace de punto de union de todos los sistemas y de punto de entrada a la aplicación cliente es AppletBase. Esta clase derivada de JApplet es cargada por el navegador web del usuario y recibe parámetros desde el portal que le permiten determinar el juego a cargar y otros parámetros de conexion. En base a estos parámetros inicializa cada uno de los subsistemas y se responsabiliza de coordinar las operaciones y comunicaciones hasta despues de que el usuario ha conseguido incorporarse a la partida, momento en el cual el grueso de la aplicacion corre en manos de JuegoAbstracto. También sirve como soporte para los dialogos de configuración de partida (DialogoConfiguracion) , para el panel de juego, y para paneles auxiliares que se quieran incorporar (por ejemplo el panel de chat)

Gracias a todo esto el framework de cliente proporciona al programador soporte para crear juegos en tiempo mínimo y de la mayor calidad.


Documentación del Framework