Corona y Test Flight

TestFlight-App

La llegada de iOS 8 en Septiembre del año pasado supuso la incorporación de TestFlight al workflow habitual de los desarrolladores con iTunes Connect.

Test Flight nos permite subir versiones beta de nuestras aplicaciones y distribuirlas a beta testers desde nuestra consola de administración de iTunes Connect. Ahora bien era necesario que nuestros binarios incluyeran un nuevo entitlement, beta entitlement, que activara esta nueva característica.

Hasta ahora Corona no generaba el beta entitlement impidiendo el uso Test Flight y haciendo que iTunes Connect mostrara el error «App does not contain the correct beta entitlement». Los usuarios de corona teníamos alternativas, proporcionadas por terceros, para poder usar Test Flight.

Una de las más conocidas es AirSign que entre otras cosas permite volver a firmar los binarios generados por Corona, añadirles el beta entitlement y añadirlos a Xcode para subirlos a iTunes Connect.

Sin embargo desde las últimas daily builds Corona ya incluye el beta entitlement permitiendo directamente la generación de binarios compatibles con TestFlight

Parece que poco a poco Corona va dando soporte a las nuevas características que trajo iOS 8

¿Qué está pasando? Adobe

Flex, AIREsta semana nos hemos encontrado con un nuevo anuncio-bomba de nuestros amigos de Adobe. Si la semana pasada nos sorprendían a todos anunciando la paralización de Flash Player para dispositivos móviles, esta semana golpean nuevamente con fuerza anunciando la donación a la Apache Software Foundation tanto de Flex como del conector BlazeDS que permitía conectar vía AMF aplicaciones Flash con back-ends JEE.
Este repentino anuncio ha generado un gran malestar en la comunidad de desarrollares de Adobe puesto que Flex era una grandísima herramienta para el desarrollo de interfaces de usuario ricas en todos los entornos (web, escritorio y móvil) pillando por sorpresa a todo el mundo y generando una gran incertidumbre que en estos momentos la propia Adobe se está encargando de disipar con constantes notas aclaratorias.
Muchos pensareis ¿qué es lo que ha cambiado? ¿Flex no era ya Open Source? Si y no; tanto el compilador como la inmensa mayoría del SDK si que era abierto pero tanto el IDE (Flash Builder) como algunas partes eran de pago y cerradas; además con este movimiento recae en la Apache Software Foundation la responsabilidad de trazar la hoja de ruta del producto así como de financiar su desarrollo por lo que a día de hoy negros nubarrones se ciernen sobre el producto, no hace falta recordar en qué estado se encuentra Open Office tras la «desinteresada» donación del mismo por Oracle, verdad?

Eligiendo un frameworks de desarrollo para Android

Lo primero que se nos plantea, una vez decidido emprender desarrollos nativos tanto para las versiones de Android como de iOS, es las alternativas open source en el mercado para el desarrollo de juegos en android. Tras un vistazo previo encontramos que existen una serie de frameworks tales como:

Dada la gran cantidad de alternativas, una primera selección la hicimos en función de la actividad del proyecto y de su madurez. Las opciones más atractivas nos parecieron AndEngine y Rokon.

Comparando el rendimiento y las características de ambas, podemos observar que AndEngine puede sufrir una caída de rendimiento en función de los objetos del juego algo que Rokon parece que es capaz de mantener constante, aunque para nuestro propósito ambos serian validos.

Los dos frameworks utilizan el motor de física box2d, algo fundamental en nuestro caso ya que tanto la versión Android como iOS deben usar el mismo motor, para que los juegos sean idénticos en comportamiento, y nos resulte mas sencillo calibrarlos.

En definitiva cualquier opción seria valida, pero nos decantamos por AndEngine, por la cantidad de código de ejemplos, actividad en sus foros y modularidad ya que existen extensiones para:

  • AndEngine Live-Wallpaper Extension
  • AndEngine .MOD-Player Extension
  • AndEngine Multiplayer Extension
  • AndEngine MultiTouch Extension
  • AndEngine Physics Box2D Extension
  • AndEngine Augmented-Reality Extension

Eligiendo un framework de desarrollo para iOS

Una de las primeras cosas que nos planteamos a la hora de emprender esta aventura allá por verano de 2010 fue fijar para qué dispositivos desarrollaríamos nuestras apps. Parece claro que en la actualidad es imprescindible desarrollar para iOS si se desea obtener cierta relevancia, por lo que la familia de dispositivos de Apple fue el primer objetivo que nos fijamos; inmediatamente después nos marcamos como objetivo desarrollar para Android aunque eso formará parte de otro artículo.

Para nuestro primer juego deseábamos un framework lo más sencillo posible de utilizar y cuyo coste fuera lo más bajo posible o, a ser posible, gratuito.

El primer entorno que evaluamos fue, claro está, el entorno que ofrece Apple para desarrollo; esto es usar Cocoa y Quartz para crear nuestro primer juego. Rápidamente lo descartamos ya que aunque nuestras primeras intenciones eran muy sencillas resultaba especialmente tedioso el manejo de animaciones y la temporización de las mismas. Además muchos desarrolladores han planteado problemas de rendimiento y escalabilidad usando esta solución.

Una vez descartada la opción más directa empezamos a indagar por la red para ver qué opciones eran las más potentes, viables y difundidas de entre todas las existentes en el mercado. Dada la popularidad de iOS existen una amplia cantidad de soluciones tanto libres como de pago para implementar juegos bidimensionales tales como Sparrow Framework, Sio2 Game Engine, Air Play SDK y así un vasto elenco de soluciones. En esta primera batida quedaron 3 finalistas: Unity Framework, Adobe Air y Cocos2d.

Instalamos la versión de evaluación de Unity Framework, nos gustaba su potencia y  su carácter multiplaforma pero rápidamente lo descartamos ya que era demasiado complejo para las ideas que teníamos en mente y por tanto la curva de aprendizaje era demasiado pronunciada para lo que estábamos dispuestos a asumir.

De Adobe Air nos atraía prácticamente todo, conocíamos el desarrollo en Action Script, es multiplataforma, el desarrollo es rápido e intuitivo así que asignamos un grupo de trabajo para que desarrollara un primer prototipo de nuestra primera idea sobre Adobe Air. Desde un primer momento vimos que el desarrollo era claro, rápido, estructurado y limpio tal y como imaginábamos en primera instancia si bien parecía que el rendimiento podía ser su talón de Aquiles. Efectivamente, si bien sobre Android el rendimiento era simplemente aceptable en iOS nos encontramos, suponemos que por el prematuro estado de desarrollo del Iphone Packager con un rendimiento simplemente desastroso arruinando por completo las posibilidades de implementar de forma efectiva nuestra primera idea así que aún con el prototipo bastante avanzado hemos aparcado momentáneamente el desarrollo con Adobe Air. En breve publicaremos otro artículo para entrar más en profundidad en las conclusiones llegadas durante este desarrollo.

Paralelamente, otro grupo comenzó a trabajar con Cocos2d; el hecho de que ninguno de nosotros tuviera experiencia previa con Objective-C nos asustaba mucho a pesar de que tenemos experiencia en otros lenguajes orientados a objetos como C++ o Java. Pero pronto nuestros miedos se disiparon, el framework es extremadamente sencillo de instalar y utilizar, En una tarde ya teníamos el entorno de desarrollo de iOS montado, con las librerías de Cocos2d cargadas y ejecutando las demos que acompañan la distribución del producto. La web del producto tiene documentación suficiente para desarrollos sencillos y cuenta con una comunidad de usuarios bastante activa. Se me ha olvidado comentar, que una de sus grandes virtudes es que es software libre y de código abierto por lo que siempre podemos saber qué está pasando en nuestra aplicación. En un par de tardes más, y como ya os digo sin experiencia previa con Objective-C, nos encontrábamos francamente impresionados al ver cómo cargábamos nuestros primeros gráficos y controlábamos con unas pocas líneas de código la pantalla táctil o el acelerómetro de nuestros dispositivos; poco después nuestros sprites eran animados, cargábamos tiles y otros tipo de recursos gráficos con una facilidad pasmosa. A lo largo de nuestro primer desarrollo cocos2d ha ido creciendo permitiendo la creación de forma sencilla de apps universales compatibles para iphone3G/S, iphone4 y iPad, además existen grandes juegos desarrollados con cocos2d y que han tenido una gran repercusión últimamente; así que a la luz de estos hechos concluimos que nuestro primer juego para iOS estará implementado en Cocos2d… ¿el resultado? pronto lo podréis ver en la AppStore.