This project is read-only.

¿Qué es XNA?

Definición

XNA no son el acrónimo de ningún nombre. Es el nombre que recibe la nueva tecnología para la programación multimedia de videojuegos basada en DirectX y manejada por .Net.

Se trata de un API de programación que simplifica y hace más intuitivo el uso de las librerías nativas DirectX y, en consecuencia, simplifica de manera notable la programación de videojuegos.

Estructura

En esencia, XNA se compone de dos librerías de ensamblados (dll) para .Net 2.0 que manejan por debajo las librerías nativas del sistema de DirectX. Al situarse como una librería sobre el Runtime de .Net, se beneficia de todas las mejoras que .Net proporciona incluyendo el manejo de la memoria por el recolector de basuras, la posibilidad de trabajar con cualquier lenguaje .Net y la multiplataforma.

Previamente a XNA existían las librerías de ensamblados Managed DirectX que, de manera similar a XNA, permitían el acceso desde lenguajes .Net a las librerías nativas de DirectX. En este caso, sin embargo, el acceso era mucho menos intuitivo y se componía, básicamente, de un calco de las funciones de DirectX para .Net. Las librerías Managed DirectX están en desuso y no se soportarán más en el futuro.

Modelo de programación orientado a videojuegos

El modelo de programación de XNA, al contrario que Managed DirectX, está orientado a la programación de videojuegos. Para ello se definen una buena cantidad de clases básicas de tipo matemático, necesarias para la programación gráfica, pero también una nueva API y metodología de programación sobre estas clases que simplifica el proceso de desarrollo.

El desarrollo de videojuegos con XNA está orientado a componentes. Los componentes son, básicamente, pequeños trozos de código que cumplen una funcionalidad concreta. Existen componentes gráficos como podría ser una bola rebotando por la pantalla, una nave espacial o el mismo escenario del videojuego. No obstante no todos los componentes tienen por qué ser gráficos. Podemos tener un manejador de eventos o estados del videojuego, un generador de lógica u otros tipos de componentes que no necesiten ser renderizados para usarse y cumplir su función. Todos estos elementos heredan de la clase GameComponent (para los elementos no gráficos) o de la clase DrawableGameComponente (para los elementos gráficos).

Una clase central (Game) se encarga de manejar todos los GameComponents que han sido registrados. Así, un videojuego (Game) es igual a la suma de las funcionalidades de todos los GameComponents que lo componen.

XNACommunity tiene como objetivo unir a los desarrolladores interesados en esta tecnología para poner en común los GameComponents que han desarrollado y ser capaces en el futuro de símplemente añadirlos a un videojuego y usarlos tal cual, simplificando enormemente la tarea de programar videojuegos. Si quieres aprender un poco más, has llegado al lugar correcto.

Multilenguaje

En la actualidad, XNA utiliza un IDE de programación basado en el IDE de C# 2005 Express Edition, por lo tanto la mayoría de los programas basados en XNA están escritos en C#. Sin embargo, al tratarse de librerías de ensamblados totalmente compatibles con .Net, pueden utilizarse con cualquier otro lenguaje .Net del mismo modo que se utilizaría cualquier otra librería de ensamblados.

Multiplataforma

Las tecnologías base de XNA, al ser compatibles totalmente con la estructura de programación de .Net, tienen la propiedad de ser también multiplataforma. Actualmente, ese es el terreno en el que se está trabajando con más esfuerzo ya que se pretende una compatibilidad 100% entre los Frameworks para Windows y para XBox 360. De momento, todavía existen algunas incompatibilidades y diferencias, por lo que el XNA Framework para la XBox 360 se denomina XNA Compact Framework. Por la misma razón, para realizar un videojuego para XBox tendremos que volver a compilar nuestro ensamblado para orientarlo a XBox 360.

Se está trabajando en la actualidad en un proyecto para portar el API de programación de XNA a otras plataformas del mismo modo que se hizo con .Net y el proyecto de software libre Mono. Por supuesto, no se hará sobre DirectX, pero el proyecto pretende hacer funcionar un API clónica a la de XNA sobre Mono, utilizando otras librerías nativas de sistemas open source como pueden ser SDL, OpenGL y otras. Muchas de estas librerías nativas ya tienen su propia traducción a APIs soportadas por .Net a través de proyectos como el Tao Framework.

Last edited Apr 10, 2007 at 3:02 PM by neozack, version 1

Comments

erickorlando Mar 12, 2014 at 8:44 PM 
Que bacan! Capturaron mi atención