Design patterns aplicados a la industria de los videojuegos

Buenas,


Aprovechando que soy un friki asqueroso estoy desarrollando un videojuego medianamente ambicioso con XNA, voy a contaros a grandes rasgos las principales características de la fase de diseño del mismo, así como explicaros brevemente con qué tipo de patrones nos podemos encontrar a la hora de realizar el diseño de un videojuego.


De todos es sabido que los patrones de diseño (de ahora en adelante PD) nos permiten resolver problemas concretos en el diseño software sin necesidad de reinventar la rueda. Un videojuego, grosso modo, no es más que un software con una determinada estructura que lo convierte en “algo” diferente de programas de otro tipo, aunque tampoco difiere mucho.


No obstante, los objetivos que perseguimos mediante el uso de PD en nuestros diseños también son deseables en un videojuego (diseños más flexibles, elegantes y reutilizables).


Básicamente, podemos dividir los PD en tres grandes tipos:



a) Estructurales


b) Creacionales


c) De comportamiento


Ahora que ya os he soltado el sermón he hecho una introducción al tema, podemos comenzar a identificar PD clásicos en nuestro juego:



a) Singleton:



1) Intención: Restringir una clase a una sola instancia


2) Problema: Proporcionar un lugar donde varios clientes puedan comunicarse y queramos controlar el número de instancias.


3) Ejemplos en nuestro videojuego: La clase principal de nuestro juego, la clase multimedia…


b) Composite:



1) Intención: Construir objetos complejos a partir de otros más simples y similares entre sí.


2) Problema: Necesitamos guardar figuras (círculos, cuadrados…) y agruparlas


3) Ejemplos en nuestro videojuego: Nuestra GUI


Los siguientes diagramas explican más o menos lo que intento deciros aquí…




c) State:



1) Intención: Deseamos obtener información sobre el estado del juego


2) Problema: ¿Cómo guardamos dicha información?


Pues utilizaremos algo tal que así…




d) Strategy:



1) Intención: Definir una “familia” de algoritmos y hacerlos intercambiables.


2) Problema: Queremos que un personaje del juego tenga una IA diferente, según el estado del juego…


Podemos representarlo de la siguiente forma:




e) Façade:



1) Intención: Proporcionar una interfaz unificada a un conjunto de interfaces en un sistema.


2) Problema: Queremos interactuar con nuestro motor gráfico…


Marchando el diagrama…



Por el momento, esos son los PD que he identificado en mi diseño del videojuego.


Por cierto, el videojuego en cuestión es “El Gañán 5.0”, podéis ver una preview del mismo en este enlace:



http://www.youtube.com/watch.php?v=F9aN1FqVuTc


Un saludo amigos! [:)]

2 comentarios en “Design patterns aplicados a la industria de los videojuegos”

  1. Uhmmm asi de carrerilla alguno más que se me ocurra…

    Los content pipelines de XNA son similares a un Factory, en este caso cargar diferentes recursos.

    El Memento para guardar la partida (si lo vas a hacer, claro está :P).

    Quizás un observer… pero no sé, quizás a nivel de gestión de por ejemplo los enemigos respecto del jugador (si subo una escalera, informo a los bichos de abajo que ya no estoy y a los de arriba que ahora estoy en su zona). Depende del tipo de IA que le montes.

    Es bastante chungo asi por encima sin saber mas en detalle.

    Lo que estaría chulo (y para todo juego gordo que se precie ya tiene uno en sus entrañas) es un sistema de scripting, que se me antoja con un Command. Pero eso ya es palabras mayores, no cuatro clases 😛

    Lo bueno de XNA es que ya proporciona un framework muy ordenadito para trabajar con juegos (el concepto de GameComponents creo que es un gran acierto).

    Saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *