Ya que estamos con el lanzamiento de Kinect y App Hub vamos a ver como se crea un simple Hello World en XNA.
Primero tienes que descargarte el XNA Game Studio 4.0 (esta es la página de App Hub, y te viene con otras aplicaciones que te servirán más adelante).
Luego levantas el programa y creeas una nueva aplicacion XNA para windows
La estructura que te genera el proyecto es la siguiente
Tenemos 2 proyectos WindowsGame1 y WindowsGame1Content.
En WindowsGame1 irá toda la lógica del juego y en WindowsGame1Content todos los archivos necesarios, como pueden ser, fonts, sprites, imágenes, archivos de efecto y entre otros.
Si se dan cuenta hay una carpeta especial dentro del proyecto WindowsGame1 que se llama ContentReferences que sirve para hacer referencia a todos los proyectos del tipo Content, ya que no se puede agregar com una simple referencia de proyecto.
Entonces, ya que ya vimos como es la estructura vamos a ver codigo!, nos dirigmos al archivo Game1.cs y veremos los siguientes metodos:
public class Game1 : Microsoft.Xna.Framework.Game {
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpriteFont font;
public Game1() {
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = «Content»;
}
protected override void Initialize() {
base.Initialize();
}
protected override void LoadContent() {
spriteBatch = new SpriteBatch(GraphicsDevice);
}
protected override void UnloadContent() {}
protected override void Update(GameTime gameTime) {
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime) {
GraphicsDevice.Clear(Color.CornflowerBlue);
base.Draw(gameTime);
}
}
En Initialize deberias tde tener codigo que se ejecuta una sola vez durante la vida del juego(detectar plataforma, perfiles o lo que creas conveniente)
En LoadContent deberías de precargar texturas, fuentes entre otros.
El metodo Update es llamado approx. 60 veces en un segundo (60fps) aquí debes de realizar los calculos del juego, movimientos, acciones y reacciones.
El metodo Draw si te das cuenta es llamado por el metodo Update así que tmb se ejecuta tantas veces como el metodo update, pero aquí deberias de realizar la actualizacion de los gráficos en la pantalla.
Adicionalmente existen 2 variables globales (graphics y spriteBatch), graphics nos permite dibujar directamente a la pantalla, detecta nuestra interfaz grafica y la encapsula en una clase. y spriteBatch nos sirve para dibujar objetos 2D – imagenes(sprites), fuentes.
Ya que hasta ahora solo hemos visto, es hora de empezar a modificar.
En el proyecto WindowsGame1Content Agregamos un nuevo item (Sprite Font) y le ponemos el nombre que queramos – a diferencia de la programacíón de formularios tenemos que indicar cada fuente que vayamos a usar en un archivo spriteFont.
El archivo creado es un archivo XML, que podemos editar manualmente, en el tag FontName indicamos la fuente que queramos asi mismo pueden jugar con los demás tag’s.
Regresamos al archivo Game1 y en el metodo LoadContent cargamos nuestra fuente
SpriteFont font;
protected override void LoadContent() {
spriteBatch = new SpriteBatch(GraphicsDevice);
font = Content.Load<SpriteFont>(«MyFont»); //no indiquen la extension del archivo
}
Ahora nos vamos al metodo draw y colocamos el siguiente codigo.
protected override void Draw(GameTime gameTime) {
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.DrawString(font, «Hello World», new Vector2(0, 0), Color.Red);
spriteBatch.End();
base.Draw(gameTime);
}
Entonces, expliquemos un poco, primero le decimos a spriteBatch que vamos a empezar a hacer cambios con el mtodo Begin(), luego llamamos a DrawString() indicandole la fuente, el texto, la posicion(x, y), y el color.
Correr la aplicacion y listo! Hello World XNA! (Fijense que la cadena es dibuja 60 veces en un segundo)
Bueno espero que este post les haya servido, y disfruten creando sus uegos para Windows, Xbox y Windows Phone!
One more thing! los que deseen la subscripcion gratuita al App Hub, pueden ingresar por medio de DreamSpark, y les permite subir los juegos Indies al MarketPlace.