lunes, 1 de marzo de 2010

Ejemplo XNA 1

Ejemplo
XNA 1
SpaceWar

Lo primero que debemos hacer es descargarnos el starter kit que contiene el código fuente y los archivos necesarios para compilar el juego en nuestro Visual Basic 2008. Para descargar Space War, hacéis clic aquí.

Una vez descargado lo instalamos:

Una vez instalada, abrimos el Visual Studio 2008 y nos aparecerá la siguiente ventana:
Hacemos lo que muestra la imagen anterior, para crear un nuevo proyecto. Seleccionamos en el árbol de la izquierda Visual C#, XNA Game Studio 3.0 y observamos la siguiente ventana:

Como se aprecia en la imagen anterior, nos aparece "Space War Windows Starter Kit (3.0)" en el apartado "Mis plantillas". Esa será la plantilla que debemos seleccionar para cargar el código fuente de nuestro juego de ejemplo en el que realizaremos algunas modificaciones. Le podemos dar el nombre que deseemos y modificar la ubicación en la que se guardará el código fuente de nuestro juego. Una vez abierto nos muestra la siguiente ventana:

Todo ese texto que nos aparece en el cuadro de trabajo central, no es más que información sobre la aplicación que acabamos de cargar como plantilla para trabajar sobre ella. A la derecha nos aparece el Explorador de soluciones, en cuyo interior nos muestra todos los ficheros de los que se compone éste juego de ejemplo.

Para comprobar que todo ha salido a pedir de boca, haremos clic en el símbolo de Play que hay en la barra de herramientas (), también podemos pulsar la tecla F5 de nuestro teclado o bien en el menú "Depurar"-> "Iniciar Depuración". Tardará un rato en compilar el juego, pero al final debería de terminar cargando y nos aparecerá la ventana de juego:

Los cambios que nos sugiere éste StarterKit son los siguientes. Hay que tener en cuenta, en primer lugar, que se han de tener conocimientos de programación orientada a objetos para poder desarrollar éste tipo de aplicaciones, por lo que si no tienes suficientes habilidades en éste campo, te sugiero que busques ayuda para iniciarte en el mundo de la POO. En éste blog publicaremos artículos de base para aprender a programar orientado a objetos para realizar pequeñas aplicaciones, tanto web como de escritorio, que son algo más sencillas para implementar y comprender e iremos subiendo de nivel poco a poco hasta alcanzar una abstracción más elevada. Pero por el momento, como éste blog acaba de nacer, te podemos sugerir algunos blogs o webs interesantes en las que nos dan buenos ejemplos para iniciarse en la programación orientada a objetos. Suponiendo que has instalado todos los programas requeridos (ir a descargas), no necesitarás nada más, tan solo paciencia y echarle tiempo. Puedes ir mirando éstos tutoriales para ir familiarizándote con la POO.

Pues bien, comenzamos pues con las modificaciones que nos propone el StarterKit. Nos dice, que cambiemos una de las naves del player 1 por un asteróide, para que podamos jugar siendo un asteróide en vez de una nave de combate espacial. Para ello hacemos lo siguiente:
  1. Abrimos el explorador de soluciones (si no está visible, presionamos las teclas CONTROL + W, soltamos y presionamos S)
  2. Desplegamos la carpeta "Envolved"
  3. Hacemos doble clic sobre el fichero "Envolved Shape.cs"
  4. Nos daremos cuenta que aparecerá el código de dicho fichero en el área de trabajo
  5. Tenemos que buscar la región "filenames", para ello podemos ir bajando con el scroll hasta encontrarla en el código fuente, o bien podemos abrir el buscador de VS 2008 presionando las teclas CONTROL + F. Al abrirse ponemos en el campo "Buscar" lo que deseamos, que en nuestro caso es "filenames" y hacemos clic en buscar.
  6. Nos llevará a un pequeño recuadro, que si nos fijamos en la parte izquierda de la pantalla tiene un símbolo +. Hacemos clic en dicho símbolo y se nos desplegarán unas cuantas líneas de código
  7. Es ahí donde deberemos realizar los cambios pertinentes.


Y las modificaciones, tras hacer clic sobre el símbolo "+" son las siguientes:


Con ésto lo que conseguimos es darnos cuenta lo reutilizable que es el código, pues es tan sencillo modificar los objetos en la aplicación y que éstos adopten nuevos roles como modificar esa simple línea. Con ello lo que decimos es que los modelos del player 1 sean de tipo pencil, asteroid2 y wedge. Al decirle que uno de los modelos a elegir es un asteroide, el objeto de nuestra nave, será eso mismo, un asteroide, pero con las características de una nave, con sus propulsores, armas, movimientos... Heredará todas las cualidades de un objeto nave, aun siendo su forma estética un asteroide.

Bien, si hemos compilado y probado el juego, nos daremos cuenta que nuestra nave asteroide, conservaba los colores de la nave original, aun teniéndo forma de asteroide. Pues bien, ahora vamos a modificar ésto para que tenga forma de asteroide sin conservar el fuselaje de la nave espacial. Para ello, un poquito más abajo encontraremos éste fragmento de código:

Lo modificamos del siguiente modo para modificar la textura de nuestra nave. Las líneas que aparecen en color verde, son comentarios que en C# se crean mediante doble barra "//" al inicio de una línea y dichos comentarios contienen el código original, para después poder deshacer los cambios sin cometer equivocaciones. De éste modo nuestra nave ya tendrá apariencia de asteroide, pues la textura cargada para éste objeto, es la de asteroid2.

Aquí podemos ver un ejemplo de cómo queda:


Este es un ejemplo muy, pero que muy básico a la hora de tocar o modificar juegos, pero hasta aquí puedo leer hoy. Se está preparando un pequeño tutorial para crear un juego desde cero y mostraros cómo se hace, pero por el momento es lo único que puedo ofreceros por falta de tiempo. Ahora podéis intentar modificar el juego a vuestro antojo, intentando cambiar texturas, objetos, armas,... Tan sólo tenéis que leer bien el código, intentar comprenderlo y probar a realizar cambios en el mismo.

Espero que como punto de partida no esté mal, pues creo que de lo que se trata es de ir familiarizándose con los métodos de trabajo de XNA muy despacio, para aprender bien y a fondo y no dar nada por hecho o entendido y así llegar al máximo número de lectores.

No hay comentarios:

Publicar un comentario