Desarrollando para Windows Phone 7
Estas dos últimas semanas, he tomado el relevo en el desarrollo de un juego para Windows Phone 7 (el nuevo smartphone que sacará Microsoft el próximo mes), un proyecto que desde Undead, con la colaboración de Miguel Murat (gran diseñador que “parió” la idea), tenemos pensado presentar en la Imagine Mobile. A priori, sólo iba a encargarme del project management, pero debido a la indisponibilidad de un colaborador, tuve que desempolvar XNA y comenzar en temas de desarrollo.
El inicio del proyecto comenzó hace varios meses, pero debido a que no encontraba un programador para ello, el “inicio real” se retrasó muchas semanas. Comenzamos a trabajar en Silverlight, debido al uso de teclado en el gameplay del juego, pero al retomarlo yo, decidí migrar a XNA, pues apenas habíamos avanzado y con tal entorno me siento más cómodo, al haberlo tocado ya en varias ocasiones. Además, por lo que he podido ver, Silverlight tiende a quedarse muy corto para el tema de juegos. :(
Al igual que la versión 3.1, la 4.0 es muy productiva. 15 días dándole duro, contando la “pérdida” de mucho tiempo mirando documentación, “trasteando“, haciendo pruebas… y estamos en un punto muy avanzado. Más en concreto,
Puntos positivos
- Ahora la carpeta “content“, donde se alojaba todo el contenido (texturas, modelos, sonidos, xml…) está en un proyecto aparte, dentro de la solución. Me convence este aislamiento, parece que queda todo más estructurado.
- La lectura de XML, no recuerdo si ha mejorado algo respecto a la versión anterior, pero es gloria bendita.
- Los “game components“, algo así como componentes u objetos del juego, sigue siendo un acierto. Es tan cómodo para gestionar elementos…
- La gestión del “multitouch” parece currada. Todavía no le acabo de pillar el sentido a algunas cosas, pero en principio resulta fácil, y parece que hay mucho control.
- El Visual Studio 2010, seguro de sol. ;) Si no es el mejor IDE que he tocado, poco le falta. La documentación del msdn, es con lo que he ido tirando, sin problemas. (Aunque la organización del concurso también me ha resuelto dudejas :P)
Puntos negativos
- Si leer un XML con los datos de los niveles es fácil, para leer un simple fichero de texto, la cosa no es tan inmediata. Dentro del Content, no te los reconoce, además que está pensado para serializar, con una clase y demás. Así que hay que montar una movidilla con funciones típicas del IO / Stream. Para un sólo dato, no es demasiado sangrante, pero para guardar una tabla de puntuaciones, o varios datos de configuración de usuario, hay que “parsear” a mano, según el formato que le demos al fichero de texto, que está en el sistema a saber dónde, haciendo difícil tocarlo a mano. Vamos, que no entiendo por qué no se permite el mismo proceso de leer xml, para escribir, desde la misma clase que serializa.
- Desde XNA, no se pueden llamar a la mayoría de funciones básicas implementadas en Silverlight, del mismo modo que a la inversa. Esto nos ha supuesto un problema, pues no tenemos manera de llamar a la API relacionada con teclado. Y desde Silverlight, no tenemos acceso a clases básicas en juegos, como la “Game” ó “Graphics“. No me parece mal este hecho, pero sí que la API de XNA para la gestión de teclado sólo consista en un par de funciones que solo sirven para coger un dato del usuario, pero no para interactuar con el gameplay. En iPhone sí es posible!
- Alguna cosilla por ahí que tampoco termino de entender (aka ¿?), siendo ya temas relativos a clases o funciones concretas.
En general, es un entorno que gusta mucho; se programa cómodo, incluso con las cosas negativas y limitaciones. El día 16 sale la versión final de las herramientas, trabajando ahora con la beta. Queda por ver cómo serán las cosas a nivel de negocio, pero como plataforma de desarrollo, me convence.