XNA Touch es una extensión de MonoTouch y MonoDroid que permite ejecutar código XNA sobre Open GL en las plataformas Mono. Traduciendo… significa que tenemos una ENORME portabilidad multiplataforma en nuestros juegos hechos con XNA!! Es decir, que nos será relativamente fácil que nuestros juegos se ejecuten en Windows, Windows Phone 7, XBOX 360, iPhone y Android.
Vale, muy bonito. ¿Pero funciona? Eso mismo me he preguntado yo… y aquí está el resultado de mis pruebas iniciales. Tengo que decid que me he sorprendido gratamente. En mi caso quiero ejecutar código XNA en iPhone (guauuuu!), así que para ello necesitamos lo siguiente:
- Un ordenador Mac con el SO Snow Leopard (imagino que también pueden valer virtualboxes y similares… pero he oído que la gente tiene muchos problemas con la tarjeta gráfica)
- Mono SDK (plataforma base)
- Mono Touch (trial gratuito, la única limitación es publicar las apps y desplegarlas en el móvil, pero se pueden ejecutar en el emulador)
- XNA Touch
- Mono Develop (IDE de desarrollo parecido a Visual Studio)
Doy por supuesto que tenemos instalado y funcionando todo lo aquí comentado. A partir de aquí en mi caso lo único que he hecho para crear un proyecto XNA para iPhone ha sido:
- Compilar XNA Touch, y guardarme bien guardada la DLL
- Crear un proyecto MonoTouch vacío, ya que, que yo sepa, XNA Touch no tiene plantillas de proyecto a día de hoy (corregidme si me equivoco)
- Añadir la clase de inicio Program.cs y la clase Game.cs (más o menos como lo haríamos en un proyecto XNA con Visual Studio de toda la vida!!)
- Agregar un directorio «Content» a la solución. Añadir archivos (en mi caso un spritefont) y modificar la propiedad «Build action» a «Content»
- Escribir nuestro código XNA usando el namespace XNATouch… y a ejecutar!
En mi caso este es el resultado de la ejecución de un sencillo código que renderiza un spritefont y lo hace girar por la pantalla, en base a uno de los propios ejemplos de XNA Touch. En nada, en 2 minutos tenemos esto funcionando:
Espero que os haya gustado. Personalmente creo que XNA Touch es un proyecto con mucho futuro. Ah por cierto, os he adjuntado el código de este pequeño proyecto de ejemplo 🙂
Yo tambien he hecho pruebas con xnatouch y la verdad que me sorprendio pero hay cosas q deben mejorar ya que no se ejecutan exactamentr igual. Tambien he leido q la performance es un problema y muchas veces el iphone mata el proceso de nuestro juego xq tarda mucho en arrancar.
Algo muy bueno es que hay juegos en el appstore hechas con xnatouch. Creo q es un proyecto con futuro y sobre todo ahora q liberaron la version 1.5
Hay otro proyecto libre que sirve para lo mismo llamado exen. El proyecto exen comenzo basandose en xnatouch y silversprite pero le hizo una reingenieria y reestructuracion y su objetivo principal es la performance. Los invito a investigar mas sobre el tema.
Respecto a la maquina necesaria para ejecutar estos frameworks, tambien puede ser una pc con snow leopard instalado, el hackintosh dr hazard anda 10 puntos!!!
Saludos
XNA Touch es una extensión de MonoTouch y MonoDroid que permite ejecutar código XNA sobre
Muchas gracias Hernan,
Con qué tipos de juegos has oido que existen esos problemas de performance? En cuanto pueda miraré de hacer pruebas de migración con proyectos más complejos y te cuento. Supongo que en 3D es donde debe notarse más.
Provaré tambien exen. Lo cierto es que es una lástima que Novell no adopte una de estas plataformas. Daría más confianza desarrollar con ellas.
Hola. En breve yo escribiré (eso espero) mis propias impresiones. En mi caso he intentado empezar con algo un pelín más complejo directamente y la verdad que me ha resultado bastante sencillo hacer cosillas. Hay que tener en cuenta que hasta la fecha no tenía siquiera conocimientos del propio XNA y que directamente me he puesto a meterle mano con XNATouch (ahora MonoGame). Lo que a mí me sigue preocupando inmensamente es el rendimiento. En el simulador todo va de maravilla, y lo que dice Herman me preocupa. Tan sólo en licencias, simplemente para probar si la cosa tira, hay que gastarse algo más de 400 €.
También como dice Herman hay otro proyecto, ExEn (http://www.rockethub.com/projects/752-exen-xna-for-iphone-android-and-silverlight) cuyo período de aportaciones concluye mañana. Yo he apoquinado dinero y se supone que mañana tendré acceso al repositorio de código. Espero que de mejor rendimiento y que finalmente me decida a pillar tanto la licencia de Apple como la de MonoTouch.
Por cierto, yo he probado la versión 1.6 (directamente descargada del repositorio) de MonoGame y sí tiene plantillas para crearte la estructura básica del proyecto (clase Programa y clase Game). El directorio en el que se encuentra es MonoDevelop.MonoGame.1.6.0 y basta con copiar el subdirectorio templates al de la configuración personal del usuario de MonoDevelop. Te advierto, eso sí, que la plantilla tiene unos errores que hay que corregir para que funcione. Hay un ticket abierto en la web de MonoGame.
No soy experto ne mono, la verdad es que me gustaría ver como funciona la gestión de la memória en estos sistemas. ¿Qué ocurre cuando hacemos un GC.Collect?
En un juego complejo la memoria se puede ir llenando de mie…. y de ahí los posibles problemas de rendimiento. Aunque es posible que haya otras causas.
En cualquier caso, estoy seguro que el equipo del proyecto trabaja en eso, hay que darles un margen.