Jesús Bosch

XNA, programación gráfica y desarrollo de videojuegos por un Microsoft Student Partner

November 2010 - Artículos

[OT] Curiosidades del Tech-Ed Europe 2010 en Berlín

Estos días estamos con algunos compañeros de los DotNetClubs por el TechEd. Es la primera vez que asisto a este evento y la verdad es que es bastante impresionante. No sólo por el contenido de las charlas sinó por la cantidad de la gente que hay, i el entusiasmo de esta por las distintas actividades. Para mi lo único malo de este evento es que hay demasiado IT, pero de todo tiene que haber en esta vida :-D

100_1894

Keynote al inicio del TechEd 2010: a rebosar de gente!

 

 

 

 

 

100_1900

Además de las charlas hay una feria de expositores, entre los que se encuentran empresas muy importantes y conocodias por todo desarrollador que se precie, como Intel, Nokia, Seagate, Infragistics, Telerik, DevExpress y muchas otras…

Alguna de estas exponen cosas curiosas, como en esta foto de Intel, en que se ve un servidor con mogollón de procesadores! (yo no los he contado pero son muchos!).

 

 

 

100_1907

Otra cosa interesante son los expositores de los distintos productos de la propia Microsoft, entre los que están Internet Explorer 9, SQL Server 2008, y cómo no, Windows Phone. Sin duda el de Phone es el stand más concurrido. Influye el hecho de que se puede toquetear los distintos modelos disponibles fabricados por HTC :-D

 

 

100_1909

Además de la parte técnica, otra cosa muy importante es la parte lúdica y de relación con otros ponentes. Para facilitar esto hay una zona cómo esta en la que se pueden trastear distintos juegos de Kinect. El caso es que he probado un par de juegos (bolos y ping pong) en primera persona y es una pasada!

[webcast] Movilízate con Windows Phone 7 & Silverlight

El próximo 10 de noviembre a las 19:00, Raul Mayo -experto en RIA y Movilidad- nos introducirá al mundo del desarrollo de la novedosa plataforma Windows Phone 7 y Silverligth. No dejes escapar esta oportunidad para adrentarte en esta nueva tecnología!

-Arquitectura WP7
-Herramientas para desarrollar WP7 a través de Silverlight
-Animaciones en WP7(ejemplo)
-WP7 & API de Twitter(ejemplo)
-Media y almacenamiento aislado(ejempo)
-implementación de una aplicación en un terminal con WP7

Apúntate en: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032467083&Culture=es-ES

wp7_cartel_plano

[XNA] La importancia de una buena arquitectura en nuestros videojuegos

Cómo muchos ya sabéis, hará poco más de un mes terminé la primera parte del desarrollo de Robot Strike Bowling. Programar un juego es una tarea enormemente compleja, mucho más de lo que parece a simple vista. Si no se utiliza una buena arquitectura, la tarea puede convertirse en un tremendo dolor de cabeza, o en un abandono del proyecto. Así pues, ahí van algunas recomendaciones.

Si eres programador profesional, provablemente tienes experiencia en el desarrollo de aplicaciones ASP.NET, Winforms, Silverlight… básicamente aplicaciones de gestión. Olvida lo aprendido (vale, no todo, tampoco nos pasemos). En un videojuego no valen cosas como registrar eventos (es muy lento), operaciones de acceso a datos síncronas (un juego se ejecuta a 60fps en windows/xbox y a 30 fps en Windows Phone 7), y no se puede parar la ejecución/interacción del juego durante más de un segundo.

La aplicación genera gráficos, animaciones y efectos en tiempo real, y en este sentido es esencial un buen conocimiento de programación orientada a objetos: y sí, quizá álguien se ofenda, pero en las aplicaciones de gestión se hacen muchas guarradas, y realmente he visto muy pocas aplicaciones de gestión (sinó ninguna) orientada totalmente a objetos –y puedo decirlo de primera mano, he trabajado en la empresa de IT más grande de España y la tercera de europa (no diremos nombres…)-. En definitiva, que en un juego el código bien hecho es lo más sagrado.

 

En Robot Strike Bowling intenté seguir estas premisas. Era mi primer juego completo y sí, como tal cometí muchos errores. Se podría decir que algo he aprendido de ello: Es imprescindible realizar un diseño detallado de la arquitectura de la aplicación, paralelamente a pruebas realizadas directamente sobre Visual Studio (los diagramas UML son muy bonitos y quedan muy vacilones –soy arquitecto de software! dicen algunos con el pecho rebosante de orgullo…-, pero tendemos a dibujar cosas que luego en un juego pueden no funcionar como esperamos). Así que hay que tragarse el orgullo de ingeniero y usar el visual studio…

Personalmente no trabajo directamente con el diagrama de clases de visual studio. Primero me hago un Visio, y luego voy pasando algunos trozos a Visual Studio, y voy probando… detecto que he hecho fallos en el diseño, los arreglo en VStudio, lo arreglo en el Visio… y hago unas cuantas iteraciones en este sentido. No se si es la mejor forma pero a mi me está funcionando.

GameLibraries En este diseño hay que plantear muy bien que es lo que queremos hacer. Muy especialmente: la gestión de estados, forma de renderizar los gráficos, sprites, animaciones, modelos 3D… Yo recomiendo poner todo lo que sea genérico en una librería de clases. En concreto en XNA les llamamos “Game Libraries”, como se muestra en la foto.

 

Usar una Game Librarie nos permitirá separar los objetos genéricos del juego de los objetos concretos. Por ejemplo la clase “Sprite” podría estar en la Game Library y la clase “NaveMala”, que hereda de Sprite, estaría en el proyecto de XNA Game. Esta decisión puede variar… dependiendo del proyecto podríamos decidir poner “NaveMala” en la GameLibrary, o incluso en una segunda GameLibrary (seguramente esta sería la mejor opción).

Usar esta opción se traduce en que tenemos un juego separado en capas. Que nos permitirá hacer cosas como esta:

 

En este caso estamos hablando de un generador de animaciones, pero podría ser perfectamente un editor de niveles. Estas herramientas, que integran XNA con Winforms, tienen una importancia crucial en el ciclo de vida del desarrollo de un juego. Nos permite tener una lógica separada del contenido.

En este ejemplo concreto, que corresponde al próximo juego que estoy preparando, cuyo codename es “Ultimatum to Earth”, he creado un editor de animaciones que puede utilizar cualquier usuario, no necesariamente un programador –lo cual se traduciría, en una reducción de costes y aumento de la productividad-. Esta animación se serializa como XML, posteriormente este XML puede ser deserializado por la GameLibrary y utilizado en nuestro juego, evitando lo que de otra forma sería un montón de código en nuestro juego! Provablemente hacer este tipo de animaciones directamente desde código sería mucho más lento (codificar, ejecutar el juego, probar, volver a empezar, lo cual vendría a ser prueba-error!). En cambio con una aplicación que lo genere, y que permita tener una vista previa en un entorno real de XNA visualmente, hace que el proceso sea más fácil para el usuario, y seguramente se terinará traduciendo en mejores animaciones (dudo que muchos programadores sean buenos animadores).

Todo esto sería imposible (o una monumental e inviable chapuza) sin un proyecto GameLibrary.

Una última ventaja del GameLibrary, es que puede terminar convirtiéndose en un Framework própio para el desarrollo de videojuegos, por lo que hacer una saga de “Ultimatum to Earth” sería mucho menos costoso.

Posted: 6/11/2010 11:03 por Jesús Bosch | con 6 comment(s)
Archivado en: ,
[OT] Nos vemos en el Tech-Ed Europe 2010!

CCL_audio_books.indd

Cómo muchos ya sabréis, la próxima semana se celebra el Tech-Ed Europe 2010 en Berlin. Vas a asistir? Por mi parte estaré encantado de charlar con miembros de la comunidad, así que si eres de los que vas a ir mándame un mensaje! :-)

Una de las cosas más interesantes en este tipo de eventos, a parte de lo que se pueda aprender en los tracks técnicos, es tener la oportunidad de conocer desarrolladores de otras partes del mundo, charlar con ellos e intercambiar experiencias. Otro punto muy interesante es que se tiene la oportunidad de conocer a los creadores de las herramientas de desarrollo que utilizamos todos los días: entre ellas Windows Phone 7! De modo que eso no me lo pierdo por nada del mundo. Nos vemos en Berlin! :-D

Posted: 6/11/2010 9:19 por Jesús Bosch | con 3 comment(s)
Archivado en:
[XNA] Depurando las extensiones del Content Pipeline

Desarrollar extensiones del Content Pipeline es era un infierno… Hasta hoy! Hesto es así porque los proyectos tipo extensión del Content Pipeline no se pueden debugar fácilmente… lo cual convierte la tarea en un arduo infierno al que los programadores de tecnologías Microsoft, mayoritariamente, no están acostumbrados… más de uno ha llegado a sufrir alergias, otros han desistido de desarrollar extensiones del Content Pipeline.

Desarrollar extensiones del Content Pipeline puede ser muy interesante, por ejemplo para añadir nuevos formatos no soportados nativamente por XNA a nuestros proyectos (MD5, CAL3D, Collada, MD3…), o también modificar geometrías para generar terrenos, entre muchas otras cosas...

En definitiva, que Stephen Styrchak, empleado de Microsoft en Redmond, ha desarrollado un template de proyecto para XNA que permite debugar muy fácilmente las extensiones del pipeline.

Para descargar el plugin y más info:

Dbg1_AddNewProject

Y como bonus, aquí os dejo con otro plugin de Microsoft muy interesante: las Productivity Power Tools. Un plugin desarrollado oficialmente por Microsoft que te ayudará a sacar todavía más el jugo a tu Visual Studio 2010. No dejes de echarle un vistazo porque vale mucho la pena!