martes, febrero 20, 2007

XNA Challenge en la UA

Desde el pasado 19 de Febrero y hasta el Viernes día 23 se celebran las jornadas XNA Challenge y Imagine Cup Developer Center en las Universidad de Alicante

Desde que el Miércoles 14 y el Jueves 15 de febrero se iniciaron las Jornadas Tecnológicas de la Universidad de Alicante, el Club .net de Alicante ha estado muy ocupado.

El 14 de Febrero se presentaron en la Universidad las charlas LOVE (Lanzamiento de Office, Vista y Exchange). La presentación se centró en presentar las novedades de las interfaces de los nuevos programas así como las novedades incluídas de serie con el .net Framework 3.0 que lleva Windows Vista.

El 15 de Febrero se presentó la jornada .net, centrándose en las ventajas en el ámbito multiplataforma que esta plataforma le ha dado a la programación de aplicaciones. Tras hacer una breve introducción a la tecnología .net se presentó la estructura y funcionamiento a través de su homónima del mundo libre, Mono. Además se demostró mediante un ejemplo funcionando sobre ambas tecnologías que las dos son compatibles en cuanto a la versión 1.1 del .net framework se refiere. Por último se presentaron las mejoras que los frameworks 3.0 y 3.5/4.0 añaden y añadirán a las tecnologías .net y una introducción a XNA y el proyecto Mono.Xna.

A partir del 19 de Febrero, en el aula de acceso libre de la Escuela Politécnica Superior, se están moviendo paralelamente dos competiciones-presentaciones con ayuda presencial por las tardes. La primera, XNA Challenge, intenta presentar las tecnologías XNA de Microsoft y acercarlas a los estudiantes. El objetivo es que se pierda el miedo a programar y experimentar con las nuevas tecnologías y utilizarlas para programar un videojuego, aunque sea sencillo. Los dos mejores proyectos tienen premio y además todos los proyectos que se hagan con estas tecnologías pueden presentarse a otras competiciones como el dream.build.play o la Imagine Cup. Esta última permite también enviar proyectos de otros muchos tipos. En el Imagine Cup Developer Center también se ayuda a desarrollar proyectos que se puedan presentar a esa competición.

El día 19 de Febrero se hizo una nueva presentación de las tecnologías XNA y el 20 de Febrero una demostración práctica de cómo se puede programar fácilmente con XNA Game Studio Express Edition un videojuego. El tutorial incluía la creación de un GameComponent sencillo, el uso de las funciones Update, Draw y la carga de contenidos con el Content Pipeline.

Las próximas charlas ampliarán el campo de uso de .net en muchos ámbitos y todavía tienes tiempo de prepararte para el XNA Challenge. Todos los días hasta el Viernes en el aula de prácticas libres de la EPS desde las 16.00 hasta las 20.00.

domingo, febrero 04, 2007

Construyendo SimpleExample (Mono.Xna)

Tras un poco de trabajo, he sido capaz de generar y ejecutar Mono.Xna y SimpleExample en Linux
Lo cierto es que, sabiendo poco de las tecnologías, que además siguen en desarrollo, me ha costado un poco generar el proyecto con Monodevelop y, finalmente, ejecutarlo con Mono en mi OpenSuse 10.2, pero finalmente lo he conseguido.

La cosa es que, en realidad, es bastante sencillo una vez comprendido todo lo que envuelve. No obstante, como me siento orgulloso de haberlo conseguido y puede que haya quien no pueda hacerlo, explicaré cómo lo he hecho.

En primer lugar, para que las aplicaciones con Mono.Xna funcionen correctamente en Mono-Linux, necesitamos todas las librerías dependientes del sistema a las que el Tao Framework hace referencia. En general son las librerías típicas de programación gráfica (OpenGL, SDL, etc.). Por supuesto, será necesario disponer de las últimas dll de Tao, actualmente en versión 2.0RC1.

Tras descargarnos el proyecto Mono.Xna o actualizarlo a su última revisión, utilizaremos el comando sh MonoDevelop.sh para que se genere la solución de Monodevelop que nos permita trabajar con el proyecto en Linux. Si lo abrimos y le damos a generar, nos aparecerán del orden de 64 errores de compilación. Eso es porque Mono.Xna está programado sobre el futuro Mono Framework 2.0, y tenemos que explicitarlo para cada uno de los proyectos que componen la solución. Con Monodevelop, hacer eso es sencillo. Simplemente tendremos que ir, proyecto a proyecto, haciendo clic secundario en el explorador de soluciones y cambiando en la ventana de opciones el "target" o "objetivo" por Mono 2.0 en lugar de 1.0. Tras haber hecho esto con todos los proyectos de la solución, la podremos generar sin problemas (aunque con un montón de warnings).

Una vez generada la solución, el siguiente paso obvio es probar si el SimpleExample funciona correctamente sobre Linux. Y lo hace, pero Mono, al contrario que .net, necesita unos pequeños archivos para cada dll utilizada (los dll.config). Si no los tenemos incluídos en el directorio del proyecto o las referencias de los mismos en la caché principal de Mono (con gacutil) el proyecto no se ejecutará. El comando mono SimpleExample.exe fallará porque nos faltarán dll aunque en realidad estén en el mismo directorio. ¿Qué hacemos?

En el paquete de la última versión del Tao Framework están todas las dll.config que necesitamos. En concreto la más necesaria para este proyecto es la Tao.SDL.dll.config, aunque no está de más añadir la Tao.OpenGL.dll.config y las otras para cada una de las dll que encontraréis en el directorio del proyecto. Estos archivos le dicen a Mono a qué librerías físicas (dependientes del sistema) hacen referencia los ensamblados dll.

Una vez añadidos estos archivos, hacer funcionar el SimpleExample es tan sencillo como abrirlo desde la consola con mono SimpleExample.exe o bien "Abrir con..." mono. La ventana de color azul clarito se presentará ante nuestros ojos iluminando las ilusiones de todos aquellos que quieren ver Mono.Xna funcionando algún día con todas las plataformas del mundo.

Unas ligeras modificaciones en el código del programa os permitirán cambiar el fondo de la pantalla, dependiendo de las teclas que estén pulsadas en ese momento. Pronto, cuando las primeras clases de Pong estén medianamente cubiertas, también podremos cargar texturas 2D en nuestros juegos y moverlas por la pantalla. Para eso falta verdaderamente poco. Estad atentos.