El Chigüire Literario Desarrollo de videojuegos con denominación de origen

Cómo portear una aplicación hecha en Flash Professional para plataformas móviles

Una de las preguntas comunes entre los desarrolladores de Flash Professional es “¿es posible desarrollar para un dispositivo móvil (iOS, Android, BlackBerry PlayBook) utilizando Flash Professional?”. La respuesta corta es “sí”, la respuesta mediana es: “sí, pero hace falta configurar manualmente algunas cosas”. De hecho, con esta misma metodología se puede desarrollar para todas las plataformas móviles. Y la respuesta larga viene a continuación.

Recordemos que Adobe sacó inicialmente la plataforma AIR como una forma de poder desarrollar aplicaciones nativas para escritorio (PC, Mac y Linux). Un paquete de AIR no es más que un  con un archivo .swf, un archivo manifiesto y el resto de recursos que necesite la aplicación. El .swf se compila contra una serie de librerías diferentes a las de Flash Player, librerías que tienen más funcionalidad que Flash Player (ej. acceso a archivos de la computadora), pues se asume que es una aplicación normal de escritorio.

Posteriormente Adobe pudo desarrollar AIR para los sistemas operativos Android, iOS y QNX de BlackBerry. La ventaja en este caso es que en los tres casos la aplicación se exporta como una aplicación nativa de cada sistema operativo. Sin embargo, Flash Professional no tiene todavía herramientas para exportar a plataformas móviles. El equipo de Flash Builder, el IDE integrado para hacer aplicaciones con la librería Flex, sí ha logrado automatizar este proceso.

Así que sí, se puede desarrollar usando Flash Professional, pero en principio tendrías que hacer el proceso de empaquetado y subida al dispositivo móvil a través de la línea de comandos. Sin embargo, es posible configurar Flash Builder, de manera que desarrollas con Flash Professional, y luego utilizas Flash Builder para hacer el empaquetado y depuración de tu aplicación a la tableta.

De hecho, yo encuentro el depurador de Flash Builder muy muy superior al de Flash Professional. Resumiendo los pasos, tendrías que hacer lo siguiente:

  1. Actualizar las librerías de tu Flash Professional actual para que utilice la versión 3.1 de AIR (o la versión 3.2 cuando los dispositivos móviles usen esta versión).
  2. Crear un proyecto móvil de ActionScript en Flash Builder orientado a las plataformas que necesites.
  3. Opcionalmente, crear un proyecto Flash Professional en Flash Builder donde vas a guardar tu archivo .fla y sus recursos. Esto es ideal para poder compilar desde el propio Flash Builder.
  4. Configurar el proyecto dentro de Flash Professional para que utilice la versión de AIR 3.1 y además compile hacia el directorio bin-debug del proyecto móvil de Flash Builder.
  5. Copiar los recursos extra que necesite tu aplicación al directorio bin-debug.
  6. Lo último que tienes que hacer es ejecutar tu proyecto desde Flash Builder. Él tomará el .SWF que tienes ya en el directorio bin-debug y lo empaquetará y subirá al PlayBook.

Ahora vamos a detallar cada paso.

Actualización de librerías en Flash Professional

Flash Professional CS5.5 actualmente trae por defecto las librerías correspondientes a AIR 2.6, por lo que debes copiar los archivos correspondientes a AIR 3.1 en el directorio que Flash Professional busca.

Este paso se debe realizar una sola vez después de que hayas instalado Flash Professional.

Así que sigue estos pasos en Windows: (esto es prácticamente traducido del enlace [2])

  1. Descarga el SDK de la versión 3.1 de AIR - http://helpx.adobe.com/air/kb/archived-air-sdk-version.html.
  2. Extrae los contenidos del archivo descargado.
  3. Ve al directorio de instalación de Adobe Flash CS5.5, el que está en “Program Files” o “Archivos de Programa”, o “Program Files (x86)” si estás con un Windows de 64-bit.
  4. Allí renombra el directorio AIR2.6 a AIR2.6_OLD.
  5. Crea un nuevo directorio y llámalo AIR2.6
  6. Copia el contenido del directorio del paso 2 al nuevo directorio AIR2.6.
  7. Navega hasta el directorio AIR2.6/frameworks/libs/air/ que acabas de transferir, y copia el archivo airglobal.swc.
  8. Pega el archivo SWC en Adobe Flash CS5.5/Common/Configuration/ActionScript 3.0/AIR2.6/ y sobreescribir el archivo airglobal.swc existente.\
  9. Ve hasta Adobe Flash CS5.5/Common/Configuration/Players/ y edita los siguientes archivos con un editor de texto (de pronto necesites privilegios de administrador):
    • AdobeAIR2_6.xml
    • AiriPhone.xml
    • Android.xmlCambia el atributo version de la etiqueta player de 11 a 14 en cada archivo. Guarda tus cambios.

Si usas MAC OS X, el directorio de la aplicación es Applications/Adobe Flash CS5.5, y debes descargar la versión 3.1 de AIR para Mac.

Crear un proyecto móvil en Flash Builder

Para crear un proyecto móvil, una vez que tengas instalado Flash Builder sigue los siguientes pasos:

  1. En Flash Builder, en la perspectiva de Flash, haz click en File -> New -> Actionscript Mobile Project.
  2. Escoge un nombre para el proyecto.
  3. En la siguiente pantalla haces click sobre Finalizar. Toma nota del nombre de la aplicación, porque en la siguiente parte vas a tener que configurar la aplicación en Flash Professional para que compile con ese nombre.

En la siguiente parte crearemos el proyecto en Flash Professional y lo configuraremos para que compile el archivo para un directorio dentro del proyecto que acabamos de crear.

Crear un proyecto Flash Professional en Flash Builder

Este paso es opcional, pero trae muchas comodidades poder compilar los archivos .fla directamente desde la interfaz de Flash Builder. Sigue los siguientes pasos:

  1. En Flash Builder, en la perspectiva de Flash, haz click en File -> New -> Actionscript Mobile Project.
  2. En la siguiente pantalla escoge el archivo .fla sobre el que vas a crear el proyecto.
  3. Haz click sobre Finalizar y tendrás ya un nuevo proyecto de Flash Professional en Flash Builder.

Ahora abrirermos Flash Professional para terminar de configurar lo que nos hace falta para exportar el proyecto.

Configura Flash Professional para que exporte a bin-debug

Debes ahora cambiar la versión de AIR en Flash Professional para que exporte a “AIR 2.6” (si hiciste el cambio ahora exportará a AIR 3.1) y modificar el directorio a donde va a exportar la aplicación al directorio bin-debug que está dentro del proyecto en Flash Builder.

  1. En Flash Builder, deselecciona cualquier elemento para poder acceder a las propiedades del documento.
  2. Dentro de la ventana de propiedades del documento, selecciona AIR 2.6, y quita la selección de HTML Wrapper. No necesitamos el wrapper de HTML junto con el SWF.
  3. Haz click en el icono de carpeta para seleccionar el directorio a donde vas a compilar la aplicación, selecciona el directorio bin-debug del proyecto Flash Builder que creamos al inicio de este artículo. Este proyecto espera empaquetar un .swf con el mismo nombre que la aplicación que le hayas puesto. Es decir, si el proyecto en Flash Builder se llama “pErencejo12”, entonces el .swf que compilará Flash Professional se debería llamar “pErencejo12”.

Flujo de trabajo entre ambos programas

Una vez hecho todo esto, ahora debes publicar la aplicación para que compile al nuevo directorio. Podemos hacer esto desde Flash Builder seleccionando el proyecto de Flash Professional. En la barra de herramientas tenemos acceso a 3 botones para publicar, correr y correr el debug de la aplicación.

La ventaja de tener los scripts separados de Flash Professional, es que Flash Builder tiene un editor de código mucho más poderoso que el que trae el primero. Completación verdadera de código: al contrario de FP que completa de un listado inmutable, FB analiza las clases a las que enlazas y completa el código en base a ello. Cuando guardes en FB, FP compilará automáticamente los cambios. Ten en cuenta que lo hará a través de la función de Publish de FP.

Cuando quieras ejecutarlo en tu dispositivo móvil, ve al proyecto de ActionScript móvil en Flash Builder, y córrelo.

Después de seguir los pasos descritos anteriormente, haz click en Run.

Consideraciones de desarrollo

Como el programa que realmente compilará la aplicación es Flash Professional, Flash Builder únicamente se encargará de empaquetarlo. Por lo tanto, si quieres obtener una versión debug de la aplicación, debes activar la opción correspondiente en Flash Professional.

Es probable también que si tu aplicación estaba escrita originalmente para Flash Player falle en ciertos puntos. Las librerías de AIR y de Flash Player son ligeramente distintas, sobretodo si utilizas ContextMenu, que en AIR es NativeMenu. Ten en cuenta que aunque tienen sus similitudes, la plataforma objetivo puede tener una manera de interactuar muy distinta a una aplicación para el navegador, o incluso distinta a la interfaz mouse-teclado a la que estamos acostumbrados en las PCs. Como siempre, evita cualquier suposición cuando hagas una migración tan importante como ir de Flash Player a una aplicación nativa. Y practica con alguna aplicación que ya tengas hecha, para poder reproducir estos pasos con mayor

Referencias:

  1. http://www.adobe.com/menafr/devnet/devices/articles/blackberryplaybook_battery.html
  2. http://www.flashdeveloper.co/post/20583114199/air32-in-flash-cs-55
  3. http://renaun.com/blog/2010/11/building-blackberry-playbook-apps-with-flash-professional-cs5/

Consideraciones a la hora de desarrollar sobre AIR para la BlackBerry PlayBook

*Click para ir a la página oficial de BlackBerry de Adobe AIR*

Después de haber desarrollado un par de juegos para BlackBerry PlayBook utilizando la plataforma Adobe AIR tengo algunas reflexiones sobre la misma, y quisiera compartirlas con aquellos que están en ello para discutir y probablemente ayudarles a tomar decisiones.

En pocas palabras: para juegos más allá de lo más simple, Adobe AIR sobre PlayBook actualmente no es una buena opción. Explicado mejor: al momento de escribir este artículo, la versión de Adobe AIR sobre la PlayBook no ha llegado a la 3.2, que implementa Stage3D y permite acceder a la tarjeta gráfica de la tableta. Esto implica que el render gráfico con AIR lo hace el CPU. Los juegos no van a superar los 30 frames por segundo, y unos pocos sprites agregados irán llevando abajo esa velocidad.

Probablemente muchos de ustedes van a seleccionar la plataforma AIR para el desarrollo de sus juegos debido a la experiencia que tienen desarrollando con Flash. Sin embargo, la plataforma de AIR sobre PlayBook tiene algunas limitaciones con respecto al desarrollo sobre desktop que deberían tener en cuenta.

Principalmente, la versión actual de AIR en la PlayBook es la 3.1, previo a la 3.2 que tiene el soporte a Stage3D. Esto significa que actualmente no hay (o no he conseguido) manera de poder desarrollar en la PlayBook usando el GPU. Lo que deja al CPU todo el trabajo de render gráfico.

Por lo tanto, mi recomendación va a que Adobe AIR es una plataforma adecuada si tu juego o aplicación va a tener una baja interactividad, o si consiste en una serie de componentes estándar de interfaces gráficas, como Dope Wars. Algo más complejo que eso, y bien te podrías ir con desarrollo para la plataforma nativa con C/C++ de PlayBook, que sí ofrece acceso a la tarjeta gráfica y puedes alcanzar fácilmente 60 frames por segundo y un excelente rendimiento.

Finalmente, dejo algunos tips útiles para el desarrollo con AIR:

  • No utilizar Away3D u otros engines 3D. El rendimiento con ellos es muy pobre y no vale la pena utilizarlos más que para cosas muy sencillas. El rendimiento que he alcanzado, como máximo, usando Away3Dlite es de 15 a 20 frames por segundo. Eso no le hace justicia al poder del PlayBook, que puede correr a 60fps con el SDK nativo.
  • Eso nos deja usar el sistema de DisplayObject. Mantengamos al mínimo el uso de filtros de bitmaps. Si hace falta que lo utilices, precalcúlalo al momento de carga de tu aplicación, y muéstralo en el momento que lo necesites, pero evita crear el filtro y aplicarlo en el momento. Esto implica el uso fuerte de Bitmap y BitmapData.
  • Flex 4 ya trae una serie de componentes de interfaces gráficas interesantes para usar de una vez en tu juego. Eso ahorra mucho tiempo. Sin embargo, tengo entendido que puede tener su peso en el rendimiento de la aplicación. Hasta ahora yo no he tenido problemas, pero quizás alguien se atreva a desarrolar un juego desde cero usando MovieClip.
  • Los bitmaps grandes hacen peso en el desempeño. Ten cuidado con ellos.
  • Desconozco el rendimiento de la plataforma usando gráficos vectoriales. Si alguien ha trabajado con ellos puede mejorar esta entrada con sus comentarios.

Hackathon (Sábado 30 de junio) y Webinars (mañana) del Reto BlackBerry

Reto BlackBerry

La gente del reto BlackBerry ha anunciado los próximos eventos que harán. Se dará a lugar un hackathon el próximo sábado 30 de junio, y se harán 3 webinars, mañana 26 de junio, y el 3 y 10 de julio.

Las temáticas de las webinars:

  • Accediendo a los secretos de la PlayBook con Adobe AIR.
  • Descubriendo Webworks (HTML5)
  • Cómo hacer dinero con la PlayBook de BlackBerry.

Para registrarse debes acceder a http://retoblackberryc.eventbrite.com/. Y luego debes ingresar a la URL del evento que es en http://experts.adobeconnect.com/augcolombia/.

La sala se abrirá a las 6:45PM hora de Venezuela, y el webinar será de 7PM a 9PM.

Por otra parte, les paso los datos del Hackathon:

Fecha: Sábado 30 de junio de 2012, de 9 a 1, hora de Venezuela. El registro se abre a las 8AM. Lugar: Caracas Palace, Plaza Altamira, Av. Luis Roche. (Lo que era antes el Four Seasons)

Durante el Hackathon se darán las siguientes charlas:

  • Uso de las librerías nativas de QNX en Adobe AIR para interfaz de usuario (UI), por Richardo Black y Edgardo Bermúdez.
  • Uso de jQuery Mobile para interfaces de usuario nativas usando HTML5 en Blackberry Playbook, por Carlos Marcano y Miguel Ángel Sucre.
  • Principios de UI utilizando Native Code / Ejemplos de Código, por Pedro Martínez.

Mayor información sobre el Hackathon en su página de EventBrite.

Muestra de Desarrolladores de Juegos de Video en Maracaibo el 11 de julio

Este miércoles 11 de julio de 2012 a las 9:00AM estaré conversando sobre videojuegos en la Facultad de Ingeniería de la Universidad Dr. José Gregorio Hernández, en Maracaibo. Estaré de ponente en una Muestra de Desarrolladores de Juegos de Video, y estaré conversando sobre cómo iniciarse en el desarrollo y posibles vías de emprendimiento con los videojuegos. La entrada al evento es libre.

La dirección de la Facultad es Calle 89B entre Av. 15 Delicias y Av. 14C. Pueden servirse también de ver el punto en Google Maps.

Space Trash

Hernán Valdez, participante del Caracas Game Jam 2011 con el juego biobot, está ahora en Panamá, pero me escribe para hablarme del juego que publicaron recientemente al Kongregate, llamado Space Trash. En este juego hay que sobrevivir la mayor cantidad de tiempo posible al agujero negro que está atrayéndolo todo, incluyendo la basura espacial. Vale la pena alejar la basura del agujero negro para evitar que éste crezca y su poder aumente. El juego fue hecho con Unity, y prototipado en el Global Game Jam 2012 en Panamá.