Tutorial Aspectos básicos en XNA
Hola, antes que nada debes de saber que los tutoriales que se verán en este blog se requiere de conocimientos previos en Programación, de preferencia el lenguaje C# (Aun que Java, C y C++ también es bueno) y en programación Orientada objetos ya que en la mayoría de los ejemplos se utilizaran Clases. Y por último haber jugado algunas vez en tu vida un juego de Video en 3D (No Mario, no eres tu soy yo, XD). Si cumples con estos requisitos ya puedes iniciar el tuto, sino búscate unos tutoriales simples de programación de preferencia en C# y dale una checada a la wiki http://es.wikipedia.org/wiki/Poo en su artículo de programación orientada a objetos. En este blog También planeo poner alguno que otro tutorial básico del lenguaje, nada que ver con la programación en XNA. Todo dicho.
En sus marcas… ¿listos?… fuera.
En este tutorial usare Visual Studio 2008 con XNA 3.0
Lo primero que debemos hacer es abrir el Visual Studio
Inicio->Programas->Microsoft Visual Studio 2008
Ahora que tenemos nuestra plataforma abierta debemos crear un nuevo proyecto
Archivo->Nuevo->Proyecto
Seleccionamos Visual C#-> XNA Game Studio 3.0 (en mi caso) y seleccionamos Windows Game (3.0) y en nombre pondremos MiJuego3D en el la Carpeta que más les guste.
Después de haber hecho esto se crear nuestro nuevo proyecto y se darán cuenta que les aparecerá algo como esto
Este es nuestro Archivo Game1.Cs que se crea por default a iniciar un nuevo proyecto
using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; using Microsoft.Xna.Framework.Net; using Microsoft.Xna.Framework.Storage;
Estas son todas las extenciones que usa un juego (por default) si eres perpiucas podras notar que hay alguna llamada Input aquí se encuntra todo lo necesario par controlar el juego desde el Mando 3D o el teclado, Audio sirve para reproducir Audio (¿ quien lo habria dicho?) Etc etc. Las veremos detenidamente mas adelante.
Ahora estas siguientes instruciones que se pueden ver
namespace MiJuego3D
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
Indican el espacio de nombres de nuestra aplicación que en este caso es un juego, el cosntructor del mismo, miren esta linea
public class Game1 : Microsoft.Xna.Framework.Game
Indica que Game1 es una Clase que Herada de Juego(Game).El cual tiene 2 atributos el mas imporante de mencionar en este momento es el
GraphicsDeviceManager graphics;
Que es a grandes rasgos el dispositivo de video de la PC o Xbox dependiendo del proyecto.
Ahora bien pasaremos al cosntructor de nuestro juego
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
La primera linea le dice que va usar el dispositivo de video de la maquina que esta ejecutando el juego, parece exagerado pero es muy importante. La segunda linea señala la ubicación fisica de nuestra carpeta de Contenido, esta es donde guardaremos todos los archivos externos del juegos (Musica, imagines,videos,modelos 3D , etc.)
Continuemos.
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
Esta parte de codigo espara poner todo el codigo que necesitemos para inicializar nuestro juego, aunque ahora solo tenga una linea.
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
}
El metodo LoadContent es usado para cargar los archivos que antes mencione (Musica, imagines,videos,modelos 3D , etc.) en la memoria principal para poderlos usar.
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
Por el contrario UnloadContent Elimina de la memoria los archivos que ya no usemos.
Ahora veremos uno de los metodos mas importantes de un videojuego el metodo Update, ya que el algoritmo principal de un videojuego es como muestro a continuacion:
Como se aprecia hay un ciclo infinito donde actualiza la informacion y luego dibuja algo en la pantalla.
La informacion por default en XNA nos muestra que cuando el jugador uno del Mando Xbox pulsa el boton Atrás saldra del Juego. Algo no muy comun en los videojuegos pero no se preocupen ahora lo modificamos.
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);
}
Si bien Actualizar es importante Dibujar es Igual de importante en un juego. Aquí esta el metodo Draw
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
base.Draw(gameTime);
}
Lo unico que nos aparece es que en todo momento borrara la pantalla y dibujar en su lugar un color Azulito (CornflowerBlue)
Bien ya terminamos de Explicar todo el codigo que nos muestra el Archivo Game1.cs pero que pasa parece que Visual Studio no solo ha creado este archivo si no varios,veamos.
Nos ha creado un Program.Cs 3 Menús una imagen y hasta un icono. De los menús solo diré que Content sirve para Organizar los archivos externos que manejemos, el icono es para mostrarlo en la ejecución del juego. Y el Archivo Program.Cs
using System;
namespace MiJuego3D
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main(string[] args)
{
using (Game1 game = new Game1())
{
game.Run();
}
}
}
}
Solo es para Ejecutar nuestro juego, esto, salvo alguna excepción quedara siempre igual.
No era mi intención que este tutorial se ampliara tanto pero es necesario conocer por que están aquí las cosas, así que he decidió hacerlo en dos partes. Esta la explicación y otra en donde en verdad dibujemos un modelo en 3D. Ahora solo queda pulsar F5 (Ejecutar) y deberías ver algo como esto.

