Todo sabemos qué es iOS 7 y muchos ya lo instalamos: el cambio más importante a nivel visual que ha tenido nunca el sistema operativo móvil de Apple desde su lanzamiento. Pero, si lo analizamos fríamente, a nivel usuario la única novedad real (que no visual) es la entrada en escena del centro de control. Pero, ¿sabías que la verdadera revolución de iOS 7 está en sus posibilidades de cara al desarrollo? Esta nueva versión incorpora una serie de librerías, frameworks y nuevas herramientas que cubren un amplio espectro de posibilidades que lo convierten en una verdadera innovación como sistema operativo.
En este primer artículo, vamos a hablar de una de las partes más revolucionarias que Apple ha incluido. Algo que a todos los desarrolladores nos dejó estupefactos cuando se presentó en el pasado WWDC y que ha cambiado en gran medida el panorama del desarrollo lúdico para iOS. Se trata de Sprite Kit, framework de desarrollo de videojuegos 2D.
Sprite Kit, lo mejor de cada uno
Todos conocemos juegos como Angry Birds, Cut the Rope, Where’s my Water?, Plants vs. Zombies o Candy Crush Saga. Todos tienen un elemento en común: están desarrollados en 2D. Todos incorporan gráficos bidimensionales, algunos un motor de física de objetos que permite que los mismos interactúen con su entorno (lo que hace que las estructuras del Angry Birds se rompan cuando un pájaro choca contra ellas) y que se desarrollan sobre los ejes x e y. Opciones para realizar este tipo de juegos tanto en el mundo comercial como de código abierto hay decenas: algunas específicas para iOS y otras con opción de portar el desarrollo a otros sistemas. El más conocido o extendido es, sin duda, Cocos2D.
Cocos2D no es más que un framework de código abierto, que permite trabajar con imágenes, fondos, animaciones, efectos, etc. basado en el estándar gráfico OpenGL ES. Dada la enorme complejidad de OpenGL a la hora de trabajar, Cocos2D pone una capa de métodos, funciones y objetos que permiten crear una estructura bidimensional dentro de un mundo 3D, jugando con texturas, propiedades de las mismas y posición de estas frente a un ángulo de visión. Es como si creáis un juego 3D cuyos personajes, fondos y elementos sean planos y ponéis la cámara justo delante.
El problema de Cocos2D es ser un “añadido” al propio desarrollo para iOS y su estructura de ventanas, manejo gráfico, sonido… no se integra con la SDK en cuanto a posibilidades sino que, de alguna forma, es independiente a esta. Apple lo que ha hecho ha sido crear su propia versión de este framework de código abierto, pero bien hecho: perfectamente integrado en las tripas del SDK y con una capacidad de actualización transparente al usuario y al desarrollador.
Además incluye unas interesantes herramientas que se integran con Sprite Kit como editores de partículas o gestión de mapas de sprites. En esencia, si sabemos programar en Cocos2D, la curva de aprendizaje será mínima y conseguiremos grandes ventajas que nos permitirán hacer grandes desarrollos y juegos increíbles.
Posibilidades y funcionamiento
La estructura es simple: cargamos nuestras imágenes en PNG con fondo alfa como recursos, nuestros sonidos, creamos una escena, creamos objetos con las imágenes que añadimos a la escena y ya podemos tocar propiedades básicas como posición, escala, rotación, capa donde se sitúa un objeto en referencia a otro… A eso podemos unirle respuesta física de unos objetos contra otros y su entorno, animaciones, sonidos, secuencias, control de eventos… todo un número de recursos que nos permitirán fácilmente crear nuestro juego 2D.
En su estructura interna, Sprite Kit tiene un ciclo a 60 imágenes por segundo, que nos da posibilidad de integrar cualquier tipo de control. Como puede verse en el gráfico, cuando dibuja un fotograma ejecuta el procedimiento :update asociado a un temporizador, que nos permite preguntar o controlar la posición o interacción de los objetos, luego evalúa las acciones programadas y su desarrollo (un movimiento de un punto a otro, un cambio de rotación, una animación…), cuando las evalúa las ejecuta o refresca, luego actualiza la simulación de física de objetos, hace un render final de la escena y en el fin del ciclo la muestra. Todo eso, 60 veces por segundo.
Podemos crear flujos de ejecución, diferentes tipos de animación, interacción de objetos, eventos que radican en sonidos… los límites los ponemos nosotros y nuestra capacidad de crear.
Pros y contras
Sprite Kit integra sprites (un objeto), imágenes, acciones, efectos, integra un motor de física de objetos, mapas con desplazamiento y mejora una serie de aspectos básicos que lo hacen más fácil de desarrollar que Cocos2D, aunque también nos limita más (como es lógico).
Para empezar, todo lo que hagamos solo funcionará en iOS 7, aunque ya más del 60% de los dispositivos a día de hoy tienen esta versión instalada. Otro gran problema es que no dispone de shaders (pequeños programas que aplican filtros avanzados a objetos en concreto en tiempo real), una función que sí incorpora Cocos2D. Y la última gran pega es que no podemos anidar escenas. La escena no es más que contenedor donde va todo nuestro juego y mientras Cocos2D permitía anidar diferentes escenas a través de capas (como si fuera un Flash o un Photoshop), cada una con su propio funcionamiento, métodos y contenidos, Sprite Kit solo permite un contenedor a la vez, aunque es de suponer que esto se arreglará en futuras versiones.
Las ventajas que tiene es la perfecta integración con el kit de desarrollo de Apple, sus editores y todos sus componentes, grandes mejoras como el etiquetado de componentes o poder recuperar directamente de la escena un conjunto de objetos por su nombre. Además podemos crear menús de navegación en nuestro juego usando los storyboards que se incorporaron en iOS 5 (que permite crear interfaces e interconexión entre ellos de manera muy sencilla) y facilita ampliamente el uso de efectos, reproducción de sonidos, de vídeos, alertas… Tenemos una potente herramienta de creación de juegos que se integra a la perfección con todas las herramientas que Apple ofrece en su kit de desarrollo.
También para OS X Mavericks
Y sí, con el mismo código que hagamos con Sprite Kit en iOS, podremos tener nuestro juego también para la nueva versión de OS X: Mavericks. Solo hemos de cambiar los eventos de touch por eventos de ratón o teclado en el control y listo.
Existen otras muchas opciones compatibles con iOS. La más popular Cocos2D, que en su versión Cocos2D-x además incorpora un desarrollo C++ que permite portar el código tal cual a otras plataformas como Android. Pero si lo que queremos es vivir en el ecosistema iOS, Sprite Kit es la mejor opción. Y dicho por multitud de expertos, si lo que queremos es empezar a andar en el mundo iOS y los videojuegos, Sprite Kit es la mejor forma de hacerlo. Además, ya hay proyectos que permiten la portabilidad de esta nueva librería a otros sistemas.