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.

lunes, enero 22, 2007

Jornadas de Tecnología en la Universidad de Alicante

Desde el día 12 de Febrero, en la Escuela Politécnica Superior de la Universidad de Alicante, se celebrarán las Jornadas Tecnológicas. Los rumores (cada vez más fuertes) apuntan a una gran presencia de .Net, Mono y Xna en las mismas.

No es broma. Las noticias que me llegan y de las que también soy participante activo son que, si se consigue suficiente apoyo, las Jornadas Tecnológicas de la UA pueden ser espectaculares. En primer lugar, el .Net Club de Alicante está preparando una presentación del Lanzamiento de Microsoft Office, Windows Vista y Microsoft Exchange (jornada LOVE) en la que las novedades de tales tecnologías se presenten en sociedad al público universitario. Algo realmente interesante para cualquiera que quiera ver cómo funciona el futuro de Microsoft.

Pero las más interesantes para los subscriptores y asíduos a este blog serán las jornadas siguientes. Se preparan unas Jornadas .Net muy especiales. Tras la presentación de las novedades de la plataforma .Net en el Microsoft University Tour el pasado Diciembre, muchos nos quedamos con las ganas de charlas con mayor profundidad sobre estas tecnologías. Parece ser que van a conseguirse en estas jornadas. Además de presentar las bondades del Framework 3.0, en colaboración con el Grupo de Usuarios de Linux de Alicante (GULA) podremos ver las ventajas de tales tecnologías en uno de los campos más importantes para Ingenieros, Desarrolladores y Usuarios: la multiplataforma. Además podremos ver una presentación paralela de las bondades y el proceso de desarrollo de la plataforma .Net en Software Libre por excelencia: Mono, y algunos de los proyectos que se desarrollan sobre ambas, como uno al que le hemos dado bastante publicidad aquí: Mono.Xna.

¿Queréis más? Pues para Desarrolladores y mucho más, para Aficionados, se prevén unas competiciones de programación locales que ayuden a los competidores a prepararse para una competición a nivel nacional que todos los años patrocina Microsoft: La Imagine Cup. Para ello se prevén dos diferentes vías de competición. Por un lado una competición de programación de un videojuego con las librerías XNA y por otro una competición de programación y extensión de proyectos para enviar a la competición nacional de la Imagine Cup. ¿Quién se apunta?

viernes, enero 12, 2007

Mono.Xna avanza

El grupo de desarrollo de Mono.Xna consigue su primera meta.

Alan, propietario del grupo y uno de los administradores lo anunció ayer en su blog y en el foro del grupo de desarrollo. Mono.Xna ha conseguido su primera meta (milestone). Hasta el momento, el grupo de desarrollo tenía dos metas cercanas: 1) Conseguir hacer funcionar un ejemplo simple de juego de Xna, lo que implicaba poder llamar a las funciones más importantes de todos los objetos y 2) Implementar los métodos públicos necesarios para hacer funcionar un juego sencillo de Pong. Los métodos necesarios los encontraréis aquí, por si queréis echar algunas líneas de código.

La primera de estas metas, como digo, se consiguió ayer y hay un vídeo que lo demuestra. Sin embargo, para poder decir que se ha terminado completamente hay que crear todos los tests de NUnit necesarios para asegurar que los métodos funcionan. Más noticias próximamente.

martes, enero 09, 2007

Empieza Mono.Xna

El grupo de trabajo de Mono.Xna va cobrando forma.
Antes de la última desconexión del blog apunté que acababa de saltar la idea de portar las XNA de Microsoft, que corren sobre DirectX, a Mono, haciéndolas funcionar sobre OpenGl. Ahora, el proyecto está cobrando forma.

Tao es el nombre de la comunidad de desarrolladores que ha desarrollado enlaces (bindings) para Mono de algunas de las más importantes librerías gráficas y de audio del mundo del software libre, incluyendo OpenGL, OpenAL, o SDL entre otras. Al igual que Managed DirectX proveía una forma de utilizar las librerías DirectX desde .NET, Tao permite tanto a .NET como a Mono interactuar con estas otras librerías.

Por supuesto, Tao no incorpora las ventajas que hacen de XNA una herramienta verdaderamente interesante, como la sencillez de su uso, su completa integración en el Framework de .NET y, por encima de todo, el Content Pipeline. Por otro lado, portar las órdenes de XNA a una verdadera multiplataforma como es Mono, permitiría total compatibilidad tal cual de juegos escritos para XNA, independientemente de si se usa Windows, Linux, Mac o XBOX 360.

Enormes ventajas con un único inconveniente: tenemos que hacerlo nosotros a mano. Para eso, Tao promovió la idea, los chicos y chicas (aunque pocas) de Mono empezaron a moverse y, ahora, tenemos el proyecto empezando a dar sus primeros pasos.

En espera de sitio oficial, la página del proyecto es www.taoframework.com/Mono.Xna, aunque posiblemente encontréis mucha más información en los foros de Tao. Si queréis apuntaros al carro y desarrollar, entrad en el foro de Mono.XNA y decidlo, no os cortéis. Por supuesto, no a todo el mundo le van a dejar meter mano al código, pero todos podemos verlo y modificarlo, aunque no enviar nuestros parches. Para trastear con él podéis hace un checkout anónimo en el servidor del repositorio SVN:
URL: svn://svn.myrealbox.com/source/trunk/Mono.Xna
Access Method: SVN
Server: svn.myrealbox.com
Repository Path: /source/trunk/Mono.Xna

Además de todo esto, tenéis el grupo de desarrollo de Mono.Xna que empezó a funcionar el mes pasado. Aunque no seáis miembros del grupo podéis leer los debates del mismo, y podéis solicitar ser miembros si queréis participar.

Aunque no sepáis mucho de programación gráfica o del uso de las librerías gráficas y de audio, podéis ayudar al proyecto. Gran parte del trabajo que queda por hacer, que es mucho, es la implementación de una cantidad enorme de clases que proveen soporte matemático a las clases gráficas y de juego. BoundingBox, BoundingFrustum y BoundingSphere entre otras clases están prácticamente vacías en espera de alguien que se caliente la cabeza con ellas, y conseguir que funcionen no es tan difícil. Además, mientras tanto podéis aprender un montón.

Versión 1.0

Revisión de XNA Framework 1.0 y XNA GSEE
Desde que se anunció la salida de la primera Beta de XNA a finales del año pasado, la forma en que se han sucedido los acontecimientos ha sido vertiginosa. En primer lugar, en menos de tres meses ya tenemos versión definitiva del XNA Framework con el Game Studio Express Edition funcionando.

Esta versión del Game Studio incorpora finalmente el Content Pipeline que facilita enormemente la incorporación de elementos de diseño en nuestro videojuego. Además el propio Framework es el motor del juego, aunque, por supuesto, hay motores adicionales mucho más sofisticados ya funcionando por ahí.

Una de las cosas que, sin embargo se han caído por el camino ha sido la posibilidad de utilizar controles mediante Drag-and-Drop. En la primera Beta, la generación de estos controles solía dar algunos problemas, y por lo visto los chicos y chicas del grupo de desarrollo han preferido dejarlo para más adelante.

Hay que recordar que esta versión es totalmente gratuita y que todos los juegos desarrollados con ella pueden distribuirse libremente. Para XBOX360, sin embargo, necesitamos adquirir una licencia de dsitribución aparte. Pronto tendremos el XNA GS para las versiones adultas de Visual Studio, pero de momento, podemos trastear (y muy a gusto) con la versión Express.

jueves, noviembre 02, 2006

Mono.Xna, el XNA libre

Tras el bombazo que han supuesto la aparición de las tecnologías XNA en tan poco tiempo, el mundo del software libre se une a la batalla y comienza el desarrollo de una librería compatible y libre para Mono
Lo cierto es que ya tardaban los desarrolladores de Mono en pronunciarse sobre el asunto, y es que una tecnología con tantísimas posibilidades es muy importante también en el mundo del software libre.

Para los no versados en la materia, Mono es una implementación en software libre de las tecnologías .NET. Como la mayoría de los proyectos en software libre (me refiero a los proyectos serios, de gran envergadura) no se puede atribuir su desarrollo a una entidad específica, sino a la entera comunidad de desarrolladores, cada uno poniendo su granito de arena. A pesar de ello, los chicos de Novell (que desarrolla la distribución SUSE Linux y otras basadas en ella) son los que podríamos llamar, padres de la criatura.

Mono no es símplemente una copia del runtime de .NET hecha mediante software libre. Además tiene SDK, como el .NET Framework, y también se está desarrollando un IDE de desarrollo similar a Visual Studio llamado monodevelop. La gran ventaja de estos paquetes es que los programas escritos y compilados con y para tecnologías .NET se convienrten en verdaderamente interplataforma, ya que Mono, al ser software libre, puede compilarse libremente para cualquier plataforma (Linux, Mac, Solaris, etcétera).

En su actual nivel de desarrollo (que como cualquier tecnología va cambiando cada semana) Mono es capaz de desarrollar y funcionar de manera prácticamente transparente con las tecnologías .NET 1.1 y con algunas añadiduras de las .NET 2.0. De hecho ya se ha incluído el soporte para C# 2.0 y está en desarrollo el soporte para C# 3.0 del .NET Framework 3.0. La última reunión de sus desarrolladores proyectó dos grandes hitos del desarrollo de Mono, la cercana terminación de la versión 2.0 (con interoperatibilidad transparente con .NET 2.0) y la futura ampliación con las tecnologías de .NET 3.0 (Mono 3.0).

Todo esto es muy bonito, pero no tiene nada que ver con XNA, ¿no? Bueno el caso es que a partir de ahora sí. Los desarrolladores de Tao Framework (una capa para utilizar OpenGl con Mono - algo que en Mono ya estaba y en .NET no lo había visto) al ver las XNA se han puesto manos a la obra para portar las librerías XNA a software libre. Evidentemente las XNA de Mono (Mono.Xna) no funcionarán sobre DirectX ya que DirectX es código propiedad de Microsoft. Pero el hecho de portar las librerías, funcionando por debajo con OpenGL abre muchísimas puertas no solo a Mono, sino también a XNA.

Por ejemplo, actualmente uno de los objetivos de XNA es proporcionar un entorno único de desarrollo de videojuegos de manera que se consiga una verdadera interplataforma. Cuando la versión final esté disponible, XNA será un 95% interplataforma entre Windows y XBOX360, es decir, para hacer funcionar juegos de XBOX en Windows y viceversa habrán ocasiones en las que haga falta modificar mínimamente el código. No obstante, las librerías Mono.Xna funcionando sobre el runtime de Mono (que ya es operativamente 2.0) pueden extender esa multiplataforma a Windows - Linux - Mac con un 100% de compatibilidades. En otras palabras, un juego escrito y compilado con XNA para Windows podrá funcionar sin ningún problema en máquinas Linux/Unix y viceversa. Interesante, ¿eh?

Por supuesto estamos hablando del actual XNA. Los rumores y frases inacabadas de los desarrolladores en el foro dejan ver que cuando la versión actual salga de su fase beta y se convierta en oficial, el equipo se centrará en la segunda versión, incluyendo las mejoras del futuro DirectX10. Pero para eso habrá que esperar aún un poco.

Para los curiosos y los que quieran apuntarse al carro, a partir de ahora tendréis disponibles las páginas de desarrollo de Mono también en nuestra sección de links. Por supuesto también os las incluyo en este post:

Beta 2 Disponible

Microsoft presenta la nueva Beta de XNA Game Studio Express Edition
Ya está descargable, chicos. Yo la estoy bajando en este preciso momento. La nueva Beta 2 de XNA GSEE ha salido mucho antes de lo previsto en vista del enorme éxito de la primera Beta. Muchos de los que la utilizamos dimos buena cuenta de los problemillas que nos surgían y los chicos de Microsoft por lo visto nos han tenido en cuenta. Me están empezando a caer bien y todo...

El caso es que la nueva Beta 2 está ya disponible desde la página de descargas de Microsoft. Entre las notables mejoras sobre la versión Beta 2 están la inclusión en el paquete de la herramienta para sonido de XNA (XACT) que antes solo estaba disponible con el SDK de DirectX y, por fin, el tan deseado Content Pipeline. No espero gran cosa de éste último tratándose de una versión Beta, no obstante los chicos del XNA Team han estado trabajando (posiblemente centrados exclusivamente) en este aspecto de XNA que es el gran caballo de batalla de esta tecnología. Ya os contaré lo que descubro al respecto.

En otro orden de cosas, muy posiblemente el martes por la tarde a las 19.00 en la Politécnica 1 tengamos una mini reunión los que estamos apuntados a la lista del .NET Club de Alicante. Si hay ovedades del Code Camp o cualquier otra cosa las informaremos puntualmente.

miércoles, octubre 25, 2006

Anuncio: XNA GSEE Beta 2

La Beta 2 de XNA Game Studio anunciada en el blog de XNA
Aquí tenéis la traducción del post en el blog de xna (http://blogs.msdn.com/xna) con relación a la próxima salida de la Beta 2 de XNA GS.

Anuncio: XNA Game Studio Express Beta 2

Michael Klucher
Program Manager – XNA Game Studio

Nuestra primera beta de XNA Game Studio Express ha tenido un éxito rotundo. El número de descargas, la actividad online de las comunidades y muy especialmente el nivel de excitación que ha generado en general ha sido poco menos que increible. También hemos estado estudiando todos los valiosos comentarios y sugerencias en nuestro blog del equipo de MSDN, los foros de MSDN y los sitios de Microsoft Connect para esta y futuras versiones de XNA Game Studio Express.

Una de las peticiones más populares ha sido lanzar una segunda beta y, en nombre del equipo de XNA Game Studio me complace anunciar que, de hecho, vamos a lanzar otra beta de XNA Game Studio Express que estará disponible en un par de semanas

Seguid visitando el blog porque hablaremos un poco más detalladamente de lo que podéis esperar de esta nueva beta. Creemos que os gustará ver el impacto directo de todas vuestras sugerencias en la realización del producto. También colgaremos mucha información en nuestro blog y en nuestra documentación sobre cómo migrar proyectos de la primera beta de XNA Studio Express a la nueva versión.

Una cosa que vale la pena mencionar es que, como sabréis, no hay mucho tiempo entre esta segunda beta y el lanzamiento final en las próximas vacaciones. De hecho deberíais pensar en esta beta más como una Release Candidate final. Pero aún tenéis la oportunidad de ayudarnos a identificar cualquier asunto crítico en el producto que hagan difícil el uso de XNA Game Studio Express.

Esperamos que os guste usar la segunda beta tanto como la primera. ¡Y seguid mandando sugerencias para el próximo XNA Game Studio Express!

Bueno, creo que eso habla por sí mismo. A todos los que usan XNA GSEE, un saludo.

viernes, octubre 13, 2006

Ya tenemos tutorial

El tutorial, que ya está corregido aunque no ha salido de su fase beta, ya tiene publicados los capítulos 0 (Introducción) y 1 (Entorno de desarrollo).
Aprovechando la oleada de nuevas aplicaciones web que Google ha puesto a nuestra disposición en la última semana he decidido publicar los documentos de los tutoriales mediante Writely de Google. Las razones son simples: 1) Writely permite publicar el documento inmediatamente el el blog, 2) Writely permite exportar a cualquiera los documentos en el formato que prefieran (sea Word, PDF, rtf o OpenDocument) y 3) permite que los colaboradores del blog hagan retoques cuandos sea necesario, de modo que la información siempre esté actualizada. Además es totalmente accesible via web.

Veréis la entrada del documento XNAClub Tutorial - Guía del principiante - 00 Introducción y la de XNAClub Tutorial - Guía del principiante - 01 El entorno de desarrollo publicados hoy tanto en la url pública de Writely como en el Blog del XNAClub. Animo a los miembros del club a echarles un vistazo y postear comentarios sobre qué les parece.

martes, octubre 10, 2006

Bienvenida a Miguel Llopis

Tenemos un nuevo miembro
Miguel Llopis, ese "uno de tantos" coordinadores del DotNetClub de Alicante ha aceptado la invitación para formar parte del XNAClub. Bienvenido.

A través del DotNetClub de Alicante y de Miguel, tratatremos de que la infromación que se coloque en este blog sea lo más actualizada y confiable posible, ya que vendrá prácticamente de manera directa de los chicos de Microsoft. Sin embargo eso no quita que también reflejemos lo que nosotros mismos vayamos experimentando por nuestra cuenta o que reflejemos noticias interesantes de otras fuentes.

En cuanto a los tutoriales, desgraciadamente no he tenido tiempo de hacerles las correcciones que tenía que hacerles y se retrasarán, previsiblemente, hasta el jueves. Lo podríamos llamar un retraso técnico, porque tal vez podría ponerlos esta noche si me hubieran mandado ya el ADSL. Pero con 56k prefiero aprovechar el viaje a la universidad del jueves y subirlo desde allí. Tened paciencia.

Isaac Llopis

sábado, octubre 07, 2006

Noticias de fin de semana

¿Qué es XNA? Lo primero que tenemos que tener claro cuando trabajamos con algo es qué es, para qué sirve, qué se puede hacer con ello. La presentación que acabo de terminar puede ayudar.

He estado pensando en la idea que dio Miguel acerca de hacer algunas charlas antes del Microsoft University Tour para ir preparando a la gente y me he dado cuenta de que, aunque sea para tener las ideas claras, está bien esquematizarlas y hacerse una pequeña presentación. Así es que me he puesto manos a la obra.

Desde el pasado jueves por la tarde me puse a trabajar en una presentación con PowerPoint para ver si era capaz de explicar de manera sencillita qué es XNA y cómo funcionan XNA y XNA Game Studio Express Edition.

Yo no es que sea el mayor experto de XNA del mundo, pero sí que me he pateado bastante las FAQ, foros y blogs de msdn sobre el tema así como algunas otras páginas de fans de XNA. Con la información que he recogido me he creado una presentación bastante chula de lo que es XNA. La tenéis disponible aquí y como siempre en mi googlepage. Próximamente crearé un post sobre el tema que lo explique de manera sencilla.

También he cambiado los nombres de los proyectos de ejemplo que colgué el otro día de MyXNA a XNAClub. El código es el mismo, lo único que han cambiado son los namespaces. Pero no pretendo que mi conexión de casa sea capaz de soportar tal cantidad de información. Me conformaré con subir la presentación por el momento y el martes más, caballeros.

Por último, también quería haceros saber que en cuanto al tutorial de XNA ya he llegado a la lección 2. Por supuesto sigue en fase beta y aún estoy haciendo cambios a las anteriores. De todos modos podéis echar un vistazo y mandar correcciones si veis que algo está mal o puede mejorarse. También subiré las lecciones que tengo hasta ahora el próximo martes, si todo va bien.

jueves, octubre 05, 2006

Primera subida de datos

Proyecto 1: una librería de clases extendidas.
Proyecto 2: un tutorial de XNA con lo que vaya aprendiendo.
Bien, pues como lo prometido es deuda, aquí van los primeros archivos que publico en el blog. Están accesibles desde mi googlepage pero tened en cuenta que allí solo voy a publicar los índices de los archivos que vaya subiendo. Aquí es donde está el meollo de la cuestión con comentarios y eso.

En primer lugar os presento el proyecto en el que estoy enfrascado ahora. Se trata de una librería de clases que extiende las funcionalidades de algunas clases de XNA y las simplifica. El factor importante de XNA (que nunca hay que perder de vista) es que funciona como cualquier IDE de Visual Studio y puedes crear tus propios componentes para el toolbox. Así es que yo me he creado dos componentes (de momento). Los podéis encontrar en la solución MyXNA (a la que pronto rellamaré como XNAClub). En el mismo zip he incluído un juego de pruebas titulado TutorialKina que muestra el funcionamiento de ambos componentes.

El primero de los GameComponents se llama StaticSprite y encapsula un SpriteBatch y un Texture2D. Me he liado bastante pero he conseguido (cutremente, eso sí) que el dichoso elemento aparezca en el toolbox (recordad: una vez habéis compilado la solución y tengáis un proyecto de juego abierto que tenga como referencia el MyXNA). El rpoblema es que aunque pone muy bien los métodos en la pantalla de propiedades no me gusta el sistema que he escogido para hacer los métodos get y set de las mismas. He utilizado un vector de dos elementos para las posiciones en que se debe empezar a leer la textura y a dibujarla y para los tamaños de los rectángulos de entrada y salida, pero eso de "v[0]" y "v[1]" en la ventana de propiedades queda muy mal. Supongo que esto se formateará como cualquier otro componente compuesto de cualquier proyecto de Windows Forms en .NET, pero el caso es que no se hacerlo. ¿Podéis ayudarme?

El segundo de los GameComponents se llama MovableSprite y podéis imaginar qué hace. Hereda de la clase anterior todas las propiedades y métodos (incluyendo los fallos que he detallado anteriormente) y añade un control de teclado que permite mover el sprite por la pantalla (sin control de colisiones) con las teclas de dirección. Si no se tiene pulsada ninguna, el sprite se mantiene parado (no solo en el lugar de la pantalla, sino sin reproducir la setie de imágenes del mismo).

Los nombres que les he puesto son más cutres que la Gioconda con mechas verdes pero acepto sugerencias. Mis próximos objetivos son un AlphaSprite que contenga una propiedad con el color que se tiene que tomar como canal alpha y que éste aparezca transparente en un grado determinado por otra propiedad y una manera de detectar las colisiones.

En segundo lugar, el segundo proyecto en que estoy trabajando es un tutorial muy simple de cómo utilizar las diferentes clases de XNA en ejemplos sencillos. Tengo la introducción esquematizada y hecha pero me gustaría que alguien que entienda un poco más me la corrigiera (que esto es un club y hay confianza), en especial si he metido la zarpa explicando qué es realmente XNA. No pretendo usar tecnicismos raros, pero me gustaría ser exacto al definirlo. ¿Es un conjunto de clases? ¿Es una capa .NET para DirectX? ¿Qué es?

Aquí tenéis los archivos. Espero comentarios pronto.
Proyecto 1: Librería MyXNA (próximamente XNAClub)
Proyecto 2: Tutorial XNAClub (Capítulo 00-Introducción)

Por último quiero dar la bienvenida al club a Miguel Llopis, del DotNetClub de Alicante, que a partir del momento en que acepte la invitación de unirse al club pasará a poder introducir también sus comentarios.

Isaac Llopis

El "por qué" (modificado 6.10.2006)

¿Por qué narices se me ocurrió empezar a trastear con XNA?

Antes de nada, saludos al DotNetClub de la Universidad de Alicante (y a todos los Llopis del mundo mundial XD).

Puesto que XNA sigue siendo una tecnología Beta, ¿por qué se me ocurriría a mi meterme a trastearla? Bueno, creo que le debo a la comunidad de usuarios de XNA y a mi propio cerebro una explicación.

Este año espero que sea (por fin) mi último año de carrera. Para que así sea he tenido que cogerme tres asignaturas de créditos de libre elección, entre ellas Juegos y Realidad Virtual. Siempre me ha llamado la atención el tema de diseño y programación de videojuegos (no os equivoquéis: "diseño" no tiene nada que ver con hacer a los personajes o escenarios) porque me parecen una aplicación muy productiva de los poderes mágicos de la informática.

Para que la gente lo sepa, soy fan acérrimo (buscadlo en la RAE) de la saga de Monkey Island, de Grim Fandango, Indiana Jones, Sam & Max, The Day of The Tentacle y de otras tantas aventuras gráficas clásicas que han marcado historia. Me encantan los videojuegos de estrategia y, muy especialmente, la visión que tiene Nintendo del mundo del videojuego.

Además de mi propio interés, está el interés económico. Como proyecto de futuro informático (mediocre, pero informático) el hecho de que la industria del videojuego sea la que más ha crecido en Europa últimamente no me pasa desapercibido. Por tanto, aunque sea para trastear, quiero saber algo de videojuegos.

Desde siempre, trastear con librerías gráficas ha sido un apaga y vámonos. Muy poca gente iba por gusto a meterse a programar con OpenGL a saco o DirectX así de primeras. Generalmente se utilizaban librerías más tontitas como Allegro o similares para empezar. Entender el sistema de bucle contínuo de un videojuego (ya postearé algo sobre esto para los que no sepáis qué es) es un poco complicado al principio. Y diseñar el sistema de clases y estructuras de datos de un juego es para morirse.

De pronto aparecieron en escena las tecnologías .NET. A nadie se le ocurriría empezar a programar un juego en Visual Basic (ni loco) teniendo todos los motores y estructuras predefinidas históricamente en C++. Pero .NET le da una vuelta al asunto y mediante la compartición de la librería de clases (no sólo la básica sino incluso las cradas por tí mismo) permitía que esas clases se exportaran a cualquier lenguaje .NET. ¿Guay no? Pues lo primero que pensé (y no es broma) en la primera charla del Microsoft University Tour, cuando estaba en segundo haciendo POO fue: "¿Y esto también vale para videojuegos?". Pues teóricamente sí, pero técnicamente era un poco más difícil.

Luego apareció el primer acercamiento con las Managed DirectX, que no es más que una capa que permite a los lenguajes .NET acceder a DirectX (que seguían siendo librerías nativas externas a .NET). El caso es que eso tiraba, pero cualquier programador prefería sus clases en C++ a tener que hacerlo todo desde cero en C# (el mejor lenguaje del mundo mundial).

Por eso, aprovechando el tirón de XBOX 360 y el próximo lanzamiento de Vista (con .NET 3.0), ahora Microsoft se saca de la manga las librerías XNA. Están concebidas como una capa totalmente .NET con las mismas funcionalidades (o más) que DirectX, las cuales continúan siendo nativas al sistema.

Lo más difícil de programar en un videojuego es el sistema de transporte de diseños 2D o 3D a código. Pero XNA pretende incluir todo eso de serie (¡toma!). Así para meter meshes con bones en tu videojuego sólo tendrás que invocar una función de una clase XNA y ya está. Es más: se podrá utilizar como una herramienta en tu toolbox de Visual Studio. Y todo esto gracias al Content Pipeline que, desgraciadamente, no estaba disponible cuando se lanzó la beta de XNA (sniff ¬¬).

No obstante aún se puede trastear con lo que será XNA en cosas tan sencillas como la creación de sprites. Eso es en lo que he estado trabajando hasta ahora. Próximamente colgaré el proyecto de librerías que tengo en casa con dos mejoras de la clase SpriteBatch de XNA. Pondré también un proyecto de juego para que veáis cómo funcionan.

Hasta entonces descargaros el XNA y probadlo, a ver qué os parece. Colgad comentarios en los post que os interesen. Ok?

Isaac Llopis

martes, octubre 03, 2006

Novedades en la UA

La Universidad de Alicante recibirá al Microsoft University Tour el próximo 12 de Diciembre.
Hoy hemos completado la primera fase de la puesta en marcha del blog XNA Club. Le hemos dado personalidad y lo hemos retocado un poco para que todo quede bien conforme vayamos añadiendo contenido.

Como podréis ver, la cabecera ha cambiado. Tiene el logotipo "oficial" de XNA, aunque con Microsoft ya se sabe, hasta la versión final no sabremos qué es oficial y qué no lo es. Iremos actualizando la tabla de enlaces para añadir enlaces externos no sólo a páginas oficiales o autorizadas sino también a páginas de gente que, como nosotros, trastean con todo lo que cae por sus manos. Poco a poco veréis más cambios, pero la estética será muy similar a la actual. Esperamos que os guste.

Para el futuro... sólo dar una noticia de la que me he enterado hoy y que a mis compañeros de la UA les interesará. La típica charla anual de .NET en la Universidad de Alicante (conocida técnicamente como el Microsoft University Tour) será el próximo martes, 12 de Diciembre de 2006 si todo marcha bien. El programa es el siguiente (todas las charlas por la mañana) :
  • Introducción a .NET
  • ASP .NET / ATLAS Web Development
  • Interfaces 2D y 3D en aplicaciones (WPF - Vista) / Expressions tools
  • Desarrollo de aplicaciones para dispositivos móviles
  • Desarrollo de juegos DirectX /XNA (juegos para XP and XBOX360)
Los componentes del .NET Club de la Universidad de Alicante estarán expectantes. El coordinador, Miguel Llopis (como dice él "uno de tantos"), del DotNetClub de Alicante propone realizar, a título más individual, algunas charlas previas preparatorias o de introducción a algunos de los temas ya mencionados. Si alguien se apunta...

lunes, octubre 02, 2006

Bienvenido a XNA Club

Si todavía no sabes que es XNA...

... no te preocupes, de momento no es vital. La mayoría de la gente, de hecho, lo ignora. No obstante es una herramienta de programación que va a resultar muy útil desde el momento en que salga de su fase beta.

Hoy empezamos este blog que pretende ser comunitario a todos aquellos interesados en el diseño y programación de videojuegos y las tecnologías .NET. La intención es introducir los descubrimientos que hagamos en el proceso de aprendizaje (en la mayoría de los casos autoaprendizaje) sobre este tema. Si a alguien le ayuda... ¡pues genial! Si alguien tiene dudas y las sabemos contestar, mejor. Y si alguna de las ideas que se nos ocurran alguna vez no cae en saco roto, tal vez hagamos la vida más fácil a los programadores del mundo (entre los que, por suerte o por desgracia, nos encontramos).

Sigo utilizando el pronombre en plural "nosotros" porque aunque personalmente, sólo estoy yo ahora mismo, pretendo (singular) que este blog llegue a ser una comunidad o club, como dice el título, lo que lo convertirá en un "nosotros" (plural).

Si te ha interesado algún tema, escribe comentarios. Los trataremos de contestar como sea. Si te ha picado la curiosidad acerca de las tecnologías XNA puedes bajarlas desde la página de la comunidad de desarrolladores de Microsoft msdn.microsoft.com/directx/xna. Muchas ideas y preguntas están colgadas desde sus foros. Otras, las encontrarás aquí. También publicaremos los progresos que agamos y los muros con los que nos encontremos. Los pros y los contras. Todo.

Bienvenido a XNA Club.