Monday, August 20, 2007

Pizza Hut Commander

En esta ocación quiero hablar de este pequeño proyecto que realice en el posgrado para la materia de Temas Selectos de Imagenes y Ambientes Virtuales con el tema de diseño y programación de videojuegos pero para resumir llamamos simplemente a la materia: Videojuegos.

Pues bien, es la primera vez que se impartía esta asignatura asi que cualquier cosa que llegaramos a realizar sería algo bueno, pues desde el inicio no se tenia una idea clara de lo que obtendriamos del curso, sin embargo despues de algunas platicas, decisiones y busqueda de ejemplos por fin se determino el uso de XNA como herramienta para el desarrollo con el insentivo de tener algo funcionando en el Xbox360. Ya que teniamos la herramienta ahora necesitabamos de una idea y esta debia ser sencilla para poder realizarla en el poco tiempo que permite el semestre.

En la busqueda de información sobre juegos, xbox y XNA encontramos el juego Rocket Commander y sus mods derivados. Este juego creado por Benjamin Nitschke originalmente para MDX y trasladado a XNA tiene algunas cosas interesantes que incluso vienen explicadas en su libro, del cual hablare en otro momento. Para nuestros fines del curso utilizamos uno de los mods de este juego, el llamado Pizza Commander que nos ofrecia una idea sencilla con un personaje animado y con objetivos claros en donde podriamos basarnos para realizar nuestra propia versión y tratar de tener un juego terminado en la medida de lo posible.

De los varios juegos que se presentaron, pues obviamente era requisito para acreditar la materia, voy a mostrarles mi proyecto el cual titule PizzaHut Commander.





Por supuesto el primer reto era aprender la funciones básicas de XNA y de un modelador 3D como 3DSMax, ya que teniamos la idea principal del juego solo era cuestión de afinar los detalles por ejemplo de como se movera el personaje, cuales serán las condiciones para ganar o perder, cuales serán los elementos en pantalla, enemigos, obstaculos, etc. Lo primero que defini fue la idea del juego que era simple: una abeja que le gusta la pizza especialmente de PizzaHut (como a mi) y que juntara los ingredientes para poder comerla y con el reto de evadir a la competencia representada por los obstaculos en el juego. Aunque formalmente no detalle todo esto, si fui haciendo un plan mental de la mayoria de estos aspectos lo que me permitia dar el siguiente paso.





Con una idea básica ahora necesitaba crear algunos assets o elementos del juego incluyendo el modelado de una pequeña ciudad y del personaje principal que en este caso fue una abeja. La cuidad tal vez no representaba un gran reto pues hay algunas disponibles de forma gratuita en la red sin embargo para dar un estilo y tener mas control sobre la apariencia y el numero de poligonos decidi modelar mi cuidad a partir de algunos cubos, aunque al principio esto parecia una tarea sencilla la dificultad la encontre al texturizar cada edificio y tener una diversidad de tamaño y color para que no fuera monótona ni aburrida. Por otro lado el personaje principal aunque estaba decidido que fuera una abeja no queria que fuera muy real pues queria darle un toque un poco más cómico al juego, asi que busque algunas imagenes de referencia, hice mi propio bosquejo, batalle un poco modelando y finalmente texture a mi personaje que apode Abeja Macoy.





A la par de todo esto me encontraba experimentando con XNA para montar los objetos en un ambiente 3D utilizando el shader más básico para no meterme en problemas, ajustando la camara y movilidad. Cuando finalmente tuve un personaje moviendose en pantalla me dedique a la parte de la interfaz de usuario, donde requería algunas imagenes para el menu principal, la ayuda y la interfaz en el juego propiamente dicho. Aunque esto no fue tan complicado pase más tiempo de lo esperado trabajando en Photoshop para sacar más texturas para tener mayor variedad dentro del juego.





Un aspecto que no he mencionado pero que es de vital relevancia en la programación gráfica actual son los shaders. Para mi proyecto utilice cuatro diferentes shaders, el primero incorporado dentro de XNA (la clase BasicEffect) para ayudar a los novatos me permitio cargar rapidamente la ciudad y la Abeja Macoy con sus texturas y una iluminación basica. El segundo shader que utilice llamado vbomb lo obtuve de la libreria en linea de Nvidia de ahi fue cuestion de jugar un poco con el código para ver que parametros requeria y poder pasarlos desde XNA (gracias a Victor que me dio algunos tips pude hacer funcionar esto sin mayor problema). El tercer shader lo utilice cada vez que se colisiona con un obstaculo, sencillamente es un shader que utiliza un pequeño sistema de particulas en dos dimenciones para generar un efecto de exposión, se puede encontrar en la página de XNA Creators Club. Finalmente el último shader que utilice, es un shader de postprocesamiento de la imagen (Bloom Postprocess Sample); este ejemplo simplemente teniamos que extraer las clases clave y agregarlas al pipeline de XNA con lo cual me permitio a mi y a algunos de mis compañeros darle un toque final mas suave y atractivo a nuetros juegos.





Despues de tanto esfuerzo solo me quedaba agregar algo de sonido y musica al juego para finalmente integrar todo y esperar que se viera como un juego terminado. Hay muchos efectos sonoros en internet, aunque no son muy buenos se puede encontrar algunos de utilidad por otro lado escoger la musica del juego es algo más del gusto personal y buscando algo que no fuera musica muy comercial pero alegre para un juego encontre el soundtrack de Naruto del cual extrai dos pistas, una para el menu principal y otra para el juego en acción.

Como verán no fue tan fácil armar un juego relativamente simple sin embargo verlo ya terminado corriendo sobre el Xbox360 fue algo agradable y estimulante para seguir creando juegos. Asi que para finalizar les pongo un video que finalmente pude sacar, pues necesitaba una maquina lo suficientemente rapida para correr el juego y grabar el video al mismo tiempo. Por cierto esto pueden hacerlo con una aplicacion llamada Fraps que aún la versión gratuita es de gran utilidad en estos casos, aunque desafortunadamente la edición la hice con Windows Movie Maker así que esto no me dejo muchas opciones y el video no tuvo la calidad que yo esperaba.




Friday, August 03, 2007

Finalistas Dream-Build-Play

Finalmente los finalistas del concurso DreamBuildPlay fueron revelados. Esta iniciativa de Microsoft para publicitar XNA parece haber atraido a una multitud de gente desde empresas hasta humildes programadores enclaustrados en sus casas con la ilusión de algún dia ser parte de la industria de los videojuegos.

Por lo que se puede apreciar de los screenshots de cada uno de los 20 finalistas, es evidente que solo se requiere de una buena idea para iniciar un juego pues aunque hay algunos juegos con gráficos bastante buenos (Burning Angels y HurricaneX) parece ser que los mas divertidos son aquellos que toman una idea sencilla y la explotan para hacer un gran juego (Gravitron Ultra).

Desafortunadamente la mayoria de estos juegos no pueden apreciarse con solo mirar algunas imagenes, así que esperemos en estos dias se puedan ver videos con más detalles del gameplay de cada uno; por lo pronto me di a la tarea de buscar un poco en youtube y aqui les paso algunos ligas.
En la UNAM finalmente se ha creado una materia en la cual se enseñe sobre la creación de videojuegos, de forma que se pueda preparar gente y algún dia se pueda fomentar esta industria en nuestro país. Aunque es un largo camino el que hay que seguir, nuestro primer intento apoyandonos de XNA parece ser un buen camino y ha dado un par de frutos, del cual pronto posteare mi aportación llamada PizzaHut Commander.