Home » Análisis » Xcode Game, la otra mitad del IDE de Apple
Banner Análisis Xcode Game

Xcode Game, la otra mitad del IDE de Apple

Los videojuegos suponen hoy aproximadamente un 75% del total de beneficio económico que se genera en la App Store. Desde negocios auténticamente millonarios como el de SuperCell (que ingresa millones al día con juegos como “Clash of Clans” o “Clash Royale”) hasta empresas que hacen sostenible su negocio con ingresos mensuales más moderados de entre 30 y 60 mil euros.

Y eso si no hablamos del último fenómeno, “Pokémon Go”: un juego hecho con Unity por la propia Google (a través de su startup Niantic Labs) que reutiliza lo aprendido en el juego de realidad aumentada Ingress, adaptándolo al mundo Pokémon. Un juego con una “cuestionable calidad” en su desarrollo (aunque es obvio que a la gente le ha gustado) y que está reportando a las arcas de Google y Nintendo (además de parte también a Apple) la envidiable cifra de 3.000.000 de dólares al día en compras integradas.

Sin duda, como podemos ver los juegos mueven mucho dinero, y cada día más, y Xcode 8 es una herramienta de una increíble calidad para poder desarrollarlos.

Videojuegos y Apple

Apple hace ya unos años, se dio cuenta del potencial de este sector en sus dispositivos y buscó la forma de potenciarlo con su propio ecosistema de desarrollo de videojuegos. Algo que, hoy día, competidores directos como Google no han hecho ni se han planteado, a pesar que las cifras son similares en ambos sistemas en cuanto a la importancia del sector del videojuego en estos. Pero sí es cierto que la inversión de Apple hace que existan muchos productos de una excelente calidad que primero se desarrollan o lanzan en iOS, para ser adaptados posteriormente a Android o incluso algunos que ni siquiera llegan al sistema de Google.

Con el lanzamiento de iOS 5, Apple se puso manos a la obra para crear desarrollos propios que potenciaran este mercado al alza (en aquel momento) y que estuvieran a la altura de las posibilidades que ofrece Xcode en el desarrollo para apps. El primer paso fue Game Center, como red social enfocada en juegos, logros y puntuaciones, que ha ido expandiéndose y que en la última versión para iOS 10 ha eliminado la app nativa del sistema y centralizado todo en servicios dentro de los juegos. Una nueva versión que permite emitir partidas en streaming en tiempo real desde nuestro dispositivo o una infraestructura de juegos online con capacidad de dar soporte incluso a un RPG masivo online. Todo gratuito para los desarrolladores y todo soportado por Apple.

Pero fue en iOS 7 cuando se dio el primer y más importante salto: SpriteKit, su propio framework de desarrollo de juegos casuales con integración de físicas en 2D. Un framework que bebía principalmente del conocido y precursor Cocos2D (parte de su equipo fichó por Apple para crear este nuevo framework propio de la compañía) y del motor de físicas de código abierto Box2D. Una API cerrada (como UIKit) con una evolución año tras año que lo ha posicionado como una de las opciones más versátiles y potentes para el desarrollo de juegos 2D.

Xcode8 SpriteKit

Este último año, con su versión 4, SpriteKit ha incorporado un editor de escenas mejorado con opciones como un graph de selección de nodos en el lateral (función pedida a gritos por aquellos que usan este framework), control de jerarquías en los nodos, deformación de elementos o una impresionante implementación de mapas de tiles, que le permiten crear enormes mapas de una manera simple y rápida para una gran cantidad de géneros de juegos: desde plataformas, juegos isométricos con scroll o juegos de rol de perspectiva cenital.

Si a todo esto unimos los nuevos algoritmos de compresión de assets o la posibilidad de crear las escenas con tamaños específicos de dispositivos, tenemos que Xcode es ahora una herramienta muy superior para el desarrollo de juegos en 2D que otros motores que pretenden integrar este tipo de desarrollos como Unity o Unreal. Incluso muy superior a otros que sí están enfocados en desarrollo 2D como Corona, GameSalad. Incluso puede codearse de tú a tú con el mismísimo Cocos2D-x (versión multiplataforma basada en C++), con el que no me atrevería a decir que es mejor pues hay puntos donde la comparación es compleja y subjetiva.

Además, SpriteKit no se podía quedar fuera del cambio en Swift 3, ya que parte de su operativa depende de Core Graphics y, por lo tanto, la forma de gestionar las posiciones o colisiones en 2D cambia. Ahora ya no existen las funciones independientes que permitían controlar posiciones, intersecciones o gestión en general de cuadros o puntos, en un cambio que también afecta a UIKit (por lógica) ya que es un cambio clave de los propios tipo de Core Graphics. Los famosos CGRectContainsPoint o CGRectIntersectsRect ya no son una funciones independientes si no se convierten en métodos del nuevo tipo por valor (como struct) CGRect, donde ahora solo hemos de preguntar por el método .contains o .intersects.

De esta forma, si tenemos un nodo de nombre sprite y queremos verificar si la variable de tipo CGPoint está dentro de él, en Swift 3 sería completamente diferente que en Swift 2, como podemos ver en el ejemplo.

Como vemos es mucho más intuitivo y práctico en la versión 3 que en la 2, además, haciendo uso de las interfaces fluidas.

Y si en vez de pasarle un punto le pasamos otro CGRect, nos comprobará si el cuadro de sprite (su frame) está contenido dentro del cuadro pasado como parámetro. Es decir, contains realizará ambos métodos CGRectContainsPoint y CGRectContainsRect en un solo método, dependiendo del tipo de dato que se le envíe. Sin duda, mucho mejor.

Mucho más intuitivo e integrado como métodos dentro del tipo y no como funciones independientes (este es uno de los grandes cambios de Swift 3 en especificación a todos los niveles).

Múltiples novedades

Hasta 12 sesiones hizo Apple en la pasada WWDC 2016 enfocadas solo en videojuegos y sus propias herramientas de creación de estos. Incorporación de increíbles novedades como generación procedural de niveles a través de GameplayKit, una integración absoluta de todas las herramientas dentro de Xcode (al nivel de UIKit), sesiones persistentes de juegos en Game Center y juegos multijugador en tiempo real, mandos de control independientes para juegos en el Apple TV (ahora podrán editarse juegos que NO funcionen sin mando), técnicas avanzadas de 3D en SceneKit como el render basado en físicas, grandes mejoras en Metal y en el lenguaje que maneja sus shaders

Apple se está tomando muy en serio el mundo de los videojuegos proporcionando herramientas de una calidad increíble y que estamos seguros serán la delicia de muchos desarrolladores que buscan algo mucho más asequible y fiable que otras herramientas como Unity. Y además, ahora también multiplataforma dentro del propio ecosistema Apple porque no tenemos que olvidar, como ya adelantamos hace poco, que SpriteKit es el primer framework de Apple que permite desarrollo universal para iOS, macOS, watchOS y tvOS. Porque sí, también podremos hacer juegos para el Apple Watch.

Cada semana os iremos revelando las novedades de Xcode como IDE de desarrollo de videojuegos, para invitaros a echarle un vistazo y probarlo. No os arrepentiréis. Un saludo y Good Apple Coding.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Swift 4 Cambios

Los cambios en Swift 4 que harán tu código incompatible: 3 por ahora

El cambio de versión de Swift 3 a 4 es algo que provoca miedos e inseguridades. La memoria del pesado cambio a la versión 3 nos trae malos recuerdos, pero nada más lejos de la realidad en este caso. A fecha 31 de mayo, solo 3 cosas harán nuestro código incompatible. Descúbrelas en este análisis y cuales serán las simples soluciones en caso que esto nos afecte.