Ayudando al XNA Libre

31 05 2007

Bueno, tal vez sea un poco radical decir que XNA no es libre actualmente, cuando Microsoft lo licencia gratuitamente junto con los SDK y herramientas de desarrollo. Pero aún así, DirectX, que es la tecnología que funciona por debajo, sigue siendo propiedad cerrada e indiscutible de Microsoft.

Como ya sabéis por comentarios anteriores, está en desarrollo el proyecto Mono.Xna, que prentende hacer exactamente lo mismo que el XNA de Microsoft pero sobre código abierto usando SDL y OpenGL entre otros.

Tras las magníficas contribuciones de Javi a la Comunidad, y el movimiento que está teniendo el proyecto Mono.Xna en las últimas semanas, decidí avisar a los compañeros de desarrollo de Mono.Xna que en XNACommunity tenemos una sustanciosa y creciente cantidad de proyectos hechos sobre XNA en licencia MS-CL (compatible con la de Mono.Xna) que podrían servirnos para hacer pruebas. ¿La contestación? “Muchas gracias… Como mínimo seguro que nos sirven para hacer tests.” Y tened por seguro que se usarán para hacer tests en el transcurso de desarrollo del proyecto.

Actualmente el proyecto se encuentra en una fase muy alfa, en que todavía se está organizando el trabajo. Gran parte del esfuerzo se lo va a llevar el Content Manager y los archivos .fx, .xnb y shaders HLSL. El trabajo en la fijación del GraphicsDevice ya se está realizando y algunos juegos muy simples ya funcionan en esta fase de pruebas.

Con la ayuda de Moma (Mono Migration Analyzer) se van a pasar y contrastar los usos de diferentes juegos en XNA contra las funciones y clases que XNA provee para poder priorizar el trabajo y empezar por las clases y funciones que más se usan. Para eso, evidentemente, hacen falta juegos de prueba, licenciados en MS-CL o en una licencia de código abierto, como la Creative Commons, o la propia de Mono.Xna.

Así que… ¡a moverse! Con vuestras contribuciones a XNACommunity no solo estáis ayudando a la creación de una librería de componentes fácil, adaptable y reusable, sino a que en el futuro, los juegos XNA funcionen en cualquier sistema operativo. ¡A multiplataformizarlo todo!

PD. Si tenéis alguna página personal donde colguéis vuestros juegos o proyectos de juego en XNA licenciados en código abierto estaría bien que dejáseis un comentario con vuestro link. Y, por supuesto, cualquier contribución a los componentes de la comunidad es bienvenida.





Componentes de PostProcessing

31 05 2007

En XNACommunity ya disponemos de una gran gama de componentes de PostProcessing, por lo que os animo a todos a probarlos. Aquí os dejo unas cuantas de imagenes sobre los componentes:





PostProcessing in XNA

22 05 2007

Las técnicas de post processing en el desarrollo de videojuegos son muy interesantes ya que el tiempo que consumen es constante, es decir depende de la complejidad de la escena. Existen muchísimos efectos de este tipo en videojuegos, pero algunos de los más conocidos pueden ser:

- B&W (black and white): Efecto con el que conseguimos el render de la escena en monocromo, y da una sensación de las fotos antiguas pero en tiempo real, usado en juegos desde “Hollywood Monster” hasta “Max Payne”.

- Sepia: Efecto de película antigua que se usa en los juegos de aventura acción u aventuras gráficas para recordar algo que paso con anterioridad.

- Bloon: Efecto con el que los brillos te deslumbran, el cuál además está de moda ya que da una sensación de realismo y de acabado final muy profesional. Lo puedes observar en todos los juegos de última generación como “Gears Of War” ó “Need for Speed Most Wanted”.

Este efecto es algo más pesado que los anteriores porque realiza varias pasadas para conseguir el acabado final. Lo primero que hace es aplicarle al buffer del render un efecto de saturación, para quedarse con todo aquello que más brille de la escena y todo lo demás lo deja negro, el segundo paso es aplicarle un Gaussian blur horizontal a esa imagen saturada, el tercer paso es aplicar otro Gaussian blur pero esta vez en vertical, y por último lo que hacemos es combinar la imagen original con la imagen resultante de los tres pasos anteriores.

- Depth of field: efecto que tenemos con cualquier cámara de video en la que lo que enfoques está nítido, mientras lo que está delante o detrás en el eje Z estará borroso según la distancia a la que esté del plano de nitidez. Este efecto tiene un resultado muy interesante, y puedes observarlo en juegos como el “Gears of War”, “Fifa 07″ ó “Virtual Tennis”.

- Motion blur: Este efecto da una sensación de cámara lenta y era una de las cosas que más me gustaban de juegos como el “Metal Gears Solid”. Consiste en coger una tira de frames y superponerlas todas en uno solo aplicándole un grado de alfa según la antigüedad de la imagen.

- Radial Blur: Efecto usado en los juegos de coches y aviones para aplicar una sensación de velocidad, usado normalmente para cuando presionas el turbo.

Bueno en otro post me centraré más detenidamente en cada una de estas técnicas, pero por ahora simplemente comentar que acabo de subir un nuevo componente a XNACommunity de PostProcessing con el cual mediante dos líneas de código:

PostProcessing post = new PostProcessing(this);

this.Components.Add(post);

Podréis incorporar un efecto de “negativo” a vuestros juegos, y ya estoy preparando otros, por los que pronto podréis también descargarlos de http://www.codeplex.com/XNACommunity.





Tao Framework 2.0 – Un pequeño paso para el hombre, un gran paso para XNA

8 05 2007

Desde que empezamos el blog y a pesar de mis intenciones de multiplataformizar todo lo multiplataformable todavía no había escrito nada acerca de este tema que me interesa mucho, y me preocupa. Debe ser que en estas últimas semanas de universidad me queda extremadamente poco tiempo. No obstante, el poco tiempo que me queda voy a dedicarlo ahora a informar sobre un proyecto interesante para todos los interesados en XNA.

Como habéis leido en el título, ayer se liberó el Tao Framework en su versión 2.0 final (después de la última RC2 liberada en Abril). Para los que no lo sepan, Tao Framework es un proyecto que, de maneras similar a las antiguas Managed DirectX, envuelve de código manejado a librerías gráficas típicas del mundo libre (OpenGL, Glut y SDL entre otras). Eso quiere decir que con lenguajes .Net podemos usar estas librerías fácilmente.

La versión 2.0 tiene un enorme cambio con respecto a las anteriores y es que se ha comenzado una migración decidida al .Net Framework 2.0. A algunos ya se les habrá encendido la bombillita. A otros todavía les cueste saber por qué la liberación de esta versión es importante. Pensad un poco, ¿qué librería gráfica, construída sobre el .Net Framework 2.0 ha liberado Microsoft recientemente? Ahora las cosas están más claras, ¿no?

Lo cierto es que tener librerías gráficas accesibles desde código manejado es un paso enorme por muchas razones. La principal es que nos permite coger el modelo de XNA (todo su sistema de clases, modelo de programación, etc.) y hacer uno con exactamente la misma signatura, que funcione por detrás con librerías del mundo libre. Y la cuestión es… ¿Y todo eso para qué?

Ahora llega lo bueno. Una de las mayores ventajas de XNA sobre Managed DirectX es que XNA está construida sobre .Net Framework 2.0, lo cual hace que XNA sea un Framework multiplataforma. Gracias a ello, XNA funciona sobre Windows y XBox 360 actualmente. No obstante sigue dependiendo de DirectX, por lo cual la multiplataforma se queda reducida a aquellas plataformas para las que tengamos DirectX. Si conseguimos un set de librerías con la misma signatura, pero funcionando con SDL, OpenGL y demás, XNA será finalmente multilpataforma… en el sentido más amplio de la palabra.

Y de lo que os estoy hablando no es de conseguir que XNA funcione en Linux, que también. Estamos hablando de que XNA funcione en Linux, BSD, Solaris… Por decir, podemos decir en teléfonos móviles donde se pueda utilizar Mono o el .Net Framework e incluso, puestos a soñar, PlayStation 3, que ahora viene con la posibilidad de instalar Linux.

Puede que esto sea soñar mucho, pero lo que sí es cierto es que un framework XNA realmente multiplataforma es posible. Igual que es posible Mono, el .Net de Linux. El proyecto para un XNA sobre Mono ya está funcionando. Cualquier interesado es bienvenido, más aún al tener un set de librerías que facilitan el trabajo de portar XNA al mundo libre. ¿Te apuntas?





¿Quién quiere soñar? (Dream.Build.Play 2.0)

4 05 2007

¿Quién quiere una XBox 360 Premium de coleccionista? ¿Y si viene con 2 años de Creators Club de serie? ¿Y si además de eso te regalan 25 bonos para suscripciones de 4 meses a Creators Club para otras consolas (o incluso para la tuya)? ¿Y si a todo eso le añades un ordenador de sobremesa AMD Athlon 64 FX-62 Dual Core funcionando con Windows Vista Ultimate? ¿Y por qué no? Puestos a soñar, ¡tiremos la casa por la ventana! 10.000 dólares verdes del ala. ¿Te gustaría?

Pues vuelve a la tierra porque puedes conseguirlo, y lo que es más, puedes divertirte y aprender haciéndolo. ¿Cómo? Como la señorita Rachel apuntaba en su comentario, el “warm up” challenge de Dream.Build.Play ya se ha acabado, ahora llega lo bueno. Diseña y programa tu juego y envíalo antes del 2 de Julio usando las tecnologías XNA y puedes ganar todo lo de arriba más una licencia de publicador en XBox Live Arcade y uno de los mejores programas de diseño 3D de la actualidad a elegir (3DS Max, Maya o Softimage XSI).

Si te parece que no eres capaz de llegar al primer premio… lánzate a por el segundo, exactamente igual, pero con un cheque por sólamente 5.000 dólares y sin licencia XBox Live Arcade. O a por el tercero, aunque vaya un poquito más reducidito.

Y si no te decides a participar en esta edición, espérate a la siguiente. Mientras tanto aprende y disfruta con XNA. Tienes mucha gente que puede ayudarte a empezar, por ejemplo en XNACommunity.