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! 