sábado, 18 de octubre de 2008

Ciclo de ejecución de un juego XNA.

Es importante conocer el ciclo de ejecución de un juego creado con XNA.
Al crear un nuevo proyecto de juego XNA, podemos ver como se crean una serie de métodos automáticamente, estos son los métodos principales del juego.

Una aplicación normal, como cualquiera de las que usas en tu PC a diario, normalmente lo que hace al ejecutarse es esperar a que realices una acción para ejecutarla, mientras tanto esta a la espera, un juego se comporta de forma distinta, también está a la espera de que realices una acción, como pulsar un botón del mando o una tecla del PC, pero mientas lo haces, no se queda simplemente esperando ya que un juego siempre está ejecutándose en blucle (una vez tras otra), por lo tanto estará continuamente ejecutando los métodos antes mencionados, por eso es tan importante conocer que hace cada uno de esos métodos y en qué orden los ejecuta, debemos saber donde escribir nuestro código. Navegando por Internet he encontrado este diagrama que explica a la perfección el flujo que sigue un juego: (xna-para-torpes.blogspot.com/)



Ahora crea un proyecto nuevo de juego Windows y observa los métodos que crea, están colocados en el mismo orden en el que se ejecutan:
Lo primero que encontramos es el constructor del juego, aquí pondremos las cosas que queremos que se ejecuten si o si, por ejemplo inicializamos el valor de la carpeta donde guardaremos los contenidos del juego como gráficos o músicas, el tamaño de la ventana de juego, si queremos que sea a pantalla completa, etc.

[sourcecode language='csharp']
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
[/sourcecode]

Lo siguiente es el método Initialize, aquí va toda la lógica de inicialización del juego, aquí en nuestro juego hemos definido la posición donde se pinta nuestra nave en la pantalla.

[sourcecode language='csharp']
protected override void Initialize()
{
// TODO: Add your initialization logic here

base.Initialize();
}
[/sourcecode]

El método Update, este método se ejecuta constantemente y es donde actualizaremos el estado del juego, por ejemplo aquí programaremos el movimiento de los sprites al pulsar el teclado.

[sourcecode language='csharp']
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Add your update logic here

base.Update(gameTime);
}
[/sourcecode]

Y por último se ejecuta el método Draw, que es donde se pintaran en pantalla todos los elementos del juego.

[sourcecode language='csharp']
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here

base.Draw(gameTime);
}
[/sourcecode]

¡Hasta la próxima!

No hay comentarios:

Publicar un comentario