Framework Servidor

El cometido de el framework para el servidor de juego es permitir al programador centrarse en desarrollar un programa que administre la lógica de juego, sin tener que preocuparse de una gran parte de los problemas que pueden afectar a un servidor que gestione diferentes partidas: la correcta identificación de los jugadores, la gestión de las comunicaciones cliente-servidor, la ejecución de distintas partidas al mismo tiempo, el acceso a una base de datos persistente, etc.

El diseño orientado a objetos permite también que el programador pueda trabajar con elementos bastante intuitivos, como por ejemplo objetos de la clase Jugador. Sacando partido de este paradigma de programación, también se hace un buen uso de características como la herencia y el polimorfismo.

La tarea más importante para realizar la parte del servidor de un juego haciendo uso del framework, es crear una clase que extienda la clase Partida. En el caso de un juego muy básico, bastará con implementar una serie de métodos que en la superclase se han dejado abstractos. Estos métodos se corresponden con determinados eventos, como la recepción de un mensaje por parte de un cliente o el transcurso de cierta cantidad de tiempo. Otros juegos más complejos, requerirán la redefinición de algunos otros métodos que contienen un comportamiento por defecto (puntos de variación). Estos métodos definen una plantilla para la creación de juegos siguiendo las especificaciones del patrón Template Method. La información concreta de los métodos redefinibles de la clase Partida se encuentra en la documentación de diseño del framework.

Como se ha dicho, el desarrollo de la parte del servidor de un juego concreto debe estar, preferiblemente, orientada al lanzamiento de ciertos eventos. Una de las dos funcionalidades principales de la clase Partida es detectar y lanzar dichos eventos, que serán procesados por la partida concreta. La otra funcionalidad importante de esta clase es proporcionar al desarrollador mecanismos para interactuar con los demás módulos del servidor, como son el envío de mensajes a ordenadores remotos (módulo de comunicaciones), acceder a los datos contenidos en almacenamiento persistente (módulo de base de datos), generar información sobre errores ocurridos (módulo de log), etc. Sin embargo, para acceder a los servicios proporcionados por módulos tan dispersos no es necesario que la clase Partida conozca todos y cada uno de ellos. En lugar de eso, se ha proporcionado una interfaz única que reduce enormemente el número de dependencias de compilación. La clase encargada de ejercer esta labor de "fachada" es el módulo de juegos. El diseño del módulo de juegos está detallado en la sección de diseño.

Documentación de diseño del framework servidor