Professional Documents
Culture Documents
XNA Game Studio Express es una nueva oferta para estudiantes y apasionados por el desarrollo de
videojuegos. XNA Game Studio está basado en Visual C# Express 2005 y permite a los desarrolladores
poder crear videojuegos en ambas plataformas Windows y Xbox 360. XNA Game Studio contiene lo
siguiente:
XNA Framework Content Pipeline, lo cual es un conjunto de herramientas que permiten a los
programadores fácilmente incorporar contenido 3D en sus propios juegos.
Game Studio Express que también contiene una completa documentación, como empezar y
starter kits que muestran la mejor manera de utilizar el content pipeline y XNA Framework
Para empezar con XNA Game Studio Express, tiene que asegurarse de que su PC con Windows cumpla
con los requisitos de hardware y software necesarios para su instalación. Después puede continuar
siguiendo estos sencillos pasos:
1. Descargar e instalar Microsoft Visual C# 2005 Express Edition. Esta versión gratuita de Microsoft
Visual C# es la que usará para crear el código de sus juegos de XNA Game Studio. Y es requerido
que se instale primero antes de instalar el Microsoft XNA Game Studio.
2. Descargar e instalar Microsoft Visual Studio 2005 Express Editions Service Pack 1
3. Si tiene Windows Vista instalado en su ordenador, se recomienda descargar e instalar Visual Studio
2005 Express Editions Service Pack 1.
4. Descargue e instale Microsoft XNA Game Studio Express. Una vez terminada la instalación, usted ya
puede comenzar a crear sus juegos para Windows.
5. Opcional: Si quiere desarrollar juegos para Xbox 360, necesitará unirse a XNA Creators Club y
empezar a desarrollar juegos para su Xbox 360. También puede seguir las instrucciones para
Conectar su Xbox 360 con XNA Game Studio Express.
Documentación sobre XNA Game Studio Express
Menu File -> New Project -> Seleccionamos la plantilla de Windows Game.
Al momento de crear el proyecto, nos crea dos clases por default, una llamada Game1.cs y otra
llamada Program.cs, además de algunos archivos de imágenes.
namespace Demostracion
{
/// <summary>
///La clase Game proporciona la inicialización de dispositivos gráficos
///la lógica del juego y el código de procesamiento.
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
//GraphicsDeviceManager maneja la configuración del dispositivo gráfico.
GraphicsDeviceManager graphics;
//ContentManager, su objetivo es cargar los objetos desde archivos,
//los cuales pueden ser texturas en 2D,3D,efectos,etc.
ContentManager content;
public Game1()
{
//Incializacion de variables
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
}
/// <summary>
/// Permite el juego realizar cualquier inicialización que se necesite antes de empezar a
/// ejecutarse.Esto es donde puede consultar para cualquier servicio necesario y cargar
/// cualquier contenido relacionado que no sea gráfico.
/// La llamada a base.Initialize enumera todos los componentes y los inicializa.
/// </summary>
protected override void Initialize()
{
base.Initialize();
}
}
}
content.Unload();
}
}
//En este metodo es en donde se ejecuta la lógica del juego, ya sea que puede
//ser colisiones,actualizaciones del mundo,audio, etc.
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
base.Update(gameTime);
}
//En este metodo se dibuja todas las texturas mediante Sprites, que son
//figuras que tienen 3 metodos principales, como son el begin, draw y end, entre otros.
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
base.Draw(gameTime);
}
}
}
Se creará un juego, en primer lugar será por pasos, declaración de primeras variables:
GraphicsDeviceManager graphics;
ContentManager content;
//Imagenes que se dibujara
Texture2D goku;
SpriteBatch misprite;
//goku
Vector2 posicionGoku;
const int velocidadGoku = 5;
Rectangle limites;
//Porcentaje de la pantalla que estara en el limite
const float porcentajeLimite = 0.05f;
Dentro del constructor de clase puede colocar o definir el tamaño de la ventana del juego:
public Game1()
{
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
//Calculando el tamaño de la ventana del juego
graphics.PreferredBackBufferWidth = 853;
graphics.PreferredBackBufferHeight = 480;
}
En el metodo LoadGraphics se cargará la textura que se importo al proyecto, cada textura tiene por
default un Asset Name que es el mismo nombre del archivo:
Ahora se le dará movimiento a la textura en el metodo update mediante entradas por teclado de esta
forma:
//Esferas
Texture2D esferas;
//Creación de lista para las posiciones de las esferas
List<Vector2> posicionEsferas = new List<Vector2>();
float cantidad = 0.01f;
const int velocidadEsferas = 2;
Random aleatorio = new Random();
esferas=content.Load<Texture2D>("esfera");
De igual forma para la lista de esferas, debera colocar dicho codigo dentro del ciclo for, para
determinar cada rectangulo a cada esfera de la lista, cuando las esferas sobrepasen la ventana del
juego se eliminarán cada esfera.
Rectangle rectanguloEsferas =
new Rectangle((int)posicionEsferas[i].X, (int)posicionEsferas[i].Y,
esferas.Width, esferas.Height);
}
else if (posicionEsferas[i].Y > Window.ClientBounds.Height)
{
posicionEsferas.RemoveAt(i);
i--;
//Fondo y Shen
Texture2D shen;
Texture2D fondo;
Metodo LoadGraphics:
shen = content.Load<Texture2D>("shen");
fondo = content.Load<Texture2D>("fondo");
misprite.Begin();
misprite.Draw(fondo, new Vector2(0, 70), Color.White);
Despues se añadirá texto al juego por medio de un Sprite Font, en agregar nuevo elemento del
explorador de soluciones.
Checar que cuando se agrega un Sprite Font, se genera un XML en donde puede editar o modificar las
propiedades de dicha fuente:
<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
<Asset Type="Graphics:FontDescription">
<FontName>Matisse ITC</FontName>
<Size>10</Size>
<Spacing>2</Spacing>
<Style>Regular</Style>
<CharacterRegions>
<CharacterRegion>
<Start> </Start>
<End>~</End>
</CharacterRegion>
</CharacterRegions>
</Asset>
</XnaContent>
//Texto
SpriteFont texto;
Metodo LoadGraphics:
texto = content.Load<SpriteFont>("texto");
Metodo Draw: