miércoles, abril 11, 2007

Nuevo componente añadido en XNACommunity

Los componentes son la esencia de los juegos XNA y la base de la simplicidad en el desarrollo. Uno muy interesante (en realidad dos) acaban de subir a XNACommunity.

Los componentes en cuestión son GameState y GameStateManager que colaboran en el trabajo de manejar los estados de una aplicación tan compleja como puede llegar a ser un videojuego.

El modelo de programación de XNA nos obliga a generar una enorme cantidad de GameComponents. Por supuesto esto simplifica muchísimo el sistema de programación y reutilización de código ya que encapsula funcionalidades de una manera intuitiva y automática. Lo difícil llega cuando tenemos que gestionar miles de GameComponents a la vez. En proyectos relativamente pequeños, no será difícil tener que gestionar cientos de GameComponents; en proyectos mayores, la cifra puede incrementarse. Saber cuándo hay que activar o desactivar cada GameComponent y, lo que es más, organizar el código para que el videojuego lo haga y sea intuitivo al programador, puede ser imposible.

Para eso existen los GameState, o los estados del juego. Cada estado refleja una situación en la que se encuentra el juego. Puede ser desde un simple "pausa" y "no pausa" a una estructura más elaborada en que cada estado contenga un nivel del juego o una pantalla. Visto así, el GameState se conforma como una clase contenedora de otras clases que debe de encargarse de manejarlas correctamente en el momento apropiado.

Un GameState se encarga, por lo tanto, de registrar sus GameComponents asociados en el objeto Game cuando se activa, y des-registrarlos cuando se desactiva.

Por supuesto, no tiene sentido tener más de un estado de juego activo al mismo tiempo. Por ejemplo, es absurdo tener activos los estados "pausa" y "no pausa" al tiempo, o los niveles 5 y 9 a la vez. Por eso necesitamos un GameStateManager que se encargue de gestionar la activación y desactivación de los GameState.

Para más información sobre el tema, podéis dirigiros a XNACommunity, donde está publicado el componente con su ejemplo de uso. Hay otros ocho componentes adicionales y la comunidad está abierta a más colaboradores con ideas interesantes y, sobre todo, con ganas de aprender. Todos somos novatos alguna vez, y los genios de verdad lo son siempre. Así que no tengáis miedo y apuntaros. Os esperamos.

No hay comentarios: