jueves, 25 de noviembre de 2010

Videojuegos y programación

Los videojuegos son una de las formas de entretenimiento más utilizados en la actualidad y una de las más completas porque involucra varias formas de interacción con ellos, la vista, el oído y el tacto. Es también una de mis actividades favoritas porque es algo que puedes hacer prácticamente con quien sea y así he hecho a varios de mis amigos. Poniendo eso a un lado, los videojuegos no sólo son una gran herramienta para divertirse, también son importantes en la educación porque son una buena forma de hacer que las personas se interesen en ciertos temas.

Los videojuegos me apasionan, me gustan mucho y no tanto por lo entretenidos que son (sí, obviamente tiene mucho que ver), sino por lo complicado que es hacerlos y toda la física que involucra. Siempre se me ha hecho interesante cómo se puede aplicar la física y sacar los cálculos de todo lo que hacemos. Recuerdo cuando estaba en la preparatoria y estaba aprendiendo bien física por primera vez, cómo todo lo que veía o pensaba lo veía con un enfoque en la física, pensaba en la fricción y cómo eso ayuda para que un carro avance y cosas por el estilo. Cuando entré a la universidad y empecé a aprender programación me di cuenta que ésta también podía verse en todo lo que hacíamos, cómo nos comportábamos y qué escogíamos. Con esto no estoy diciendo que los seres humanos estamos programados, simplemente digo que en ciertos aspectos hacemos secuencialmente las cosas, hasta cuando no nos damos cuenta. Fue en segundo semestre cuando por fin pude juntar las matemáticas y la física y con esto me dí cuenta de lo interesante que era la programación de los videojuegos. Nuestro proyecto era hacer una pelota que rebotara y la pudieras aventar con el mouse y ha sido uno de los proyectos con los que más me he divertido. Ahí fue cuando me dí cuenta que eso era lo que quería hacer el resto de mi vida.

Una de las mejores formas a empezar a programar videojuegos es por medio de XNA porque es una herramienta relativamente sencilla de entender y fácil de probar su funcionalidad. Sin embargo creo que el mejor libro para empezar a programarlos es con uno de DirectX simplemente porque cubre desde lo más básico como los movimientos vectoriales y matriciales que son muy importantes en esto, hasta ya su aplicación en los videojuegos con ejemplos bien explicados. El libro es Introduction to 3D Game Programming with DirectX 10 de Frank D. Luna que también es uno de los mejores libros en general porque lleva muy bien el tema. Algunos buenos blogs y herramientas para empezar se pueden encontrar en:

Direct X tutorial que aunque tienes que pagar para ver todo el contenido, tiene suficiente para empezar a entender cómo se van haciendo los juegos.

Riemer's XNA Tutorials que aunque es de XNA tiene buenas explicaciones.

y Code Sampler que tiene buenos ejemplos de cómo hacer algunas cosas en específico.

Para poder empezar a aprender, se tienen que tener todas las herramientas sobre el tema, un compilador, el software development kit (sdk) y saber un poco del lenguaje a tratar. Para empezar en XNA se tiene que tener lo siguiente. XNA 4.0 o alguna versión anterior y Visual Studio C# Express 2010.

A continuación les explicaré un pequeño código de XNA para empezar a ver cómo se hacen algunas cosas. En este tutorial meteremos un dibujo a la pantalla.

Lo primero que se tiene que hacer es instalar el Visual Studio C# Express 2010 y XNA 4.0, sin esto no se podrá hacer nada. Después se tiene que crear un nuevo proyecto lléndose a File->New Project y escogiendo dentro de las opciones de la izquierda XNA Game Studio 4.0. En el recuadro de la derecha saldrán varias opciones de XNA y aquí escogeremos Windows Game.

Ahora sale una ventana con varias cosas, a la derecha debe salir algo llamado Solution Explorer y ahí debe de haber un proyecto que se llame igual que tu proyecto, pero que tenga la palabra Content al final. A eso le vamos a dar click derecho y poner Add Existing Item y buscar algún .bmp o .jpg para añadirlo.

En la parte de la izquierda buscaremos LoadContent() y se añadirá lo siguiente hasta que se vea algo así:


// Esta es la textura que se utilizará
Texture2D miTextura;

// Son las coordenadas donde se dibujará el archivo
Vector2 posicion = Vector2.Zero;

protected override void LoadContent()
{
    // Creas un spriteBatch que se utiliza para dibujar texturas
    spriteBatch = new SpriteBatch(GraphicsDevice);
// mitextura es el nombre de su archivo sin el .jpg o .bmp
    miTextura = Content.Load<Texture2D>("mitextura"); 

}
Eso es todo por el LoadContent, ahora en el método Draw se pone lo siguiente
protected override void Draw(GameTime gameTime)
{
    graphics.GraphicsDevice.Clear(Color.CornflowerBlue);

    // Dibuja el archivo en la posición que le hayamos puesto.
    spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
    spriteBatch.Draw(miTextura, posicion, Color.White);
    spriteBatch.End();

    base.Draw(gameTime);
}
 Y esto hará que cuando lo compilen y corren (ctrl+F5) el dibujo o archivo que escogieron se vea en una ventana aparte.
Esto es a grandes razgos una introducción de lo que se puede hacer con las herramientas que se pueden encontrar en internet y qué es lo que se puede hacer con XNA más específicamente. Espero les haya gustado este muy breve tutorial y que no se hayan aburrido con la historia de mi vida.

1 comentario:

  1. -->¿Te has dado cuenta de que estás sumamente preocupado de aburrir a las personas?
    -->Me encanta que le llames "la historia de tu vida" a unos cuantos renglones.
    -->Creo que redactaste todo de una forma muy amena, interesante ver tu redacción después de algunos años. Un par de comas de menos y un par de palabras de más, pero en general eres bueno en esto, deberías preocuparte menos por si los demás se aburren y divertirte más.

    ResponderEliminar