miércoles, 18 de febrero de 2009

Programación de videojuegos: patrones de diseño.

En el ámbito de las aplicaciones empresariales es muy común encontrar sistemas computacionales que han sido desarrollados considerando el uso de patrones de diseño. En particular, en el mundo de las aplicaciones J2EE existen los patrones de orientación a objetos y de la definición Core J2EE de Sun Microsystems, tales como los patrones Singleton, Data Access Object (DAO), etc., cuyo objetivo es entregar un conjunto de buenas prácticas y soluciones a problemas comunes que beneficien a la arquitectura, diseño y programación de sistemas complejos.

Tomando en cuenta que el desarrollo de un videojuego puede llegar a ser un proyecto de grandes dimensiones, cabe preguntarse qué tipos de estándares, recomendaciones y/o buenas prácticas pueden ser utilizadas para potenciar su desarrollo.

Un patrón de arquitectura clásico que puede ser utilizado en la creación de un videojuego corresponde al Modelo-Vista-Controlador (MVC), el cual postula realizar una separación entre la zona que posee los datos de una aplicación, la zona que considera la visualización de los datos, y la zona que permite contener la lógica de control de estos datos.

Para el caso de un videojuego, el Modelo puede estar compuesto por objetos que mantienen el estado del mundo y de los personajes que participan en el juego (ej: llevan el control de la energía de los jugadores, la cantidad de municiones de cada uno, etc.); la Vista puede estar compuesta por objetos que manejan y despliegan las animaciones y sonidos de los personajes del juegos, los cuales hacen uso de los objetos del Modelo para observar su estado y determinar qué es lo que se debe desplegar (ej: se despliega una animación de un personaje feliz cuando su energía está al máximo); y por último el Controlador puede estar compuesto por objetos que responden a los eventos enviados por el usuario del juego, tales como los movimientos que se realizan a través de un joystick/teclado/mouse, los cuales invocan cambios en el Modelo y probablemente también en la Vista (ej: el Controlador recibe una orden del usuario que le indica que el personaje debe saltar, por lo que interactúa con el Modelo para ver si es posible realizar el salto según las condiciones del juego en ese momento).

Un muy buen artículo sobre el uso del patrón MVC aplicado en un videojuego comercial puede ser visto en el sitio de Gamasutra, en el cual se ejemplifica su uso mediante el modelamiento de un tanque para un juego 3D de guerra (hacer click acá).

Próximamente discutiremos en este blog otros patrones útiles para el diseño y programación de videojuegos.

1 comentario: