Uno de los problemas al adentrarse en el desarrollo de juegos con la plataforma Flash es como combinar numerosos SWFs que conviertan a tu juego en un solo SWF para su implementación en iOS. Como ejemplo, Machinarium, un juego desarrollado por Amanita Design, tiene 28 archivos SWF. Cuando Amanita Design uso Adobe AIR para producir la versión para iPad de Machinarium, necesitaron una forma de unir los múltiples archivos SWF dentro de uno solo.

Combinar varios SWFs

En mi artículo Tips para Proyectos Extensos de iOS con Flash, cubrí una técnica que se basa en librerías SWC que solucionan este problema. En algunos casos, sin embargo, puede que prefieras seguir utilizando archivos SWF en vez de archivos SWC. Si tu juego se ejecutara tanto en Android como en iOS, por ejemplo, tu flujo de trabajo puede ser más sencillo con SWFs. Recuerda que en Android, puedes cargar SWF en tiempo de ejecución, lo cual permite un uso de memoria más eficiente. En iOS también se puede mantener el uso de memoria en mente, especialmente cuando tienes todo tu código en un SWF. Es una buena práctica el separar cualquier recurso que no contenga ActionScript (incluyendo imágenes, vídeos y música) dentro de archivos SWF, los cuales seran cargados bajo demanda y después descartados cuando ya no se necesiten.

Después de que separar los archivos, aun puedes necesitar una forma de unir los SWFs que contengan ActionScript. En este artículo, se describe la técnica utilizada por David "Oldes" Oliva, desarrollador líder de Machinarium, para unir SWFs usando un script de REBOL. Para más información acerca de REBOL, visita http://www.rebol.com.

Combinar múltiples archivos SWF en uno solo

  1. El primer paso es construir los SWFs en Flash Professional o Flash Builder, pero haz cada SWF una clase. En vez de cargar un SWF dinámicamente a través de la clase Loader, SWFLoader, o algún mecanismo similar, instanciaras la clase SWF. Una vez que tienes todos tus SWFs juntos, instanciaras su contenido, sin cargarlo.
  2. Descarga y descomprime los archivos de ejemplo para este artículo.
  3. Descarga e instala REBOL/View, la versión grafica de REBOL.
  4. Localiza tres scripts en los archivos de ejemplo que actualizaras para tu flujo de trabajo: compile-and-run.r, Game.bat y Game.rswf.
  5. Si estas interesado, puedes explorar el archivo compile-and-run.r en un editor de texto. Este es un script de REBOL que hace la configuración inicial y ejecuta Game.bat.
  6. Abre Game.bat en un editor de texto y edita la ruta de tu SDK de AIR para que apunte a tu versión instalada del ADL (Adobe Debug Launcher). El archivo contiene las siguientes líneas:

Cámbialas de esta forma:

  1. Abre Game.rswf en un editor de texto y actualiza las líneas import-swf para especificar los SWFs que quieres combinar. El ejemplo inicial une cuatro archivos SWF:

  1. Ejecuta el script de REBOL. (Cambia la ruta para el comando rebol a donde lo instalaste).

Nota: Si vez un error de denegación de permisos cuando intentes ejecutar cualquiera de los archivos ejecutables, asegúrate de que los archivos tengan los permisos correctos. Puedes configurar los permisos usando chmod, por ejemplo (sustituye 755 o 775 por una configuración más restrictiva):

  1. Cuando el script termine, se abrirá el SWF en Flash Player y podrás usar la herramienta adt incluida en el SDK de AIR para compilar el archivo final IPA para iOS. Por ejemplo, puedes ejecutar el siguiente comando, reemplazando las secciones en corchetes:

A dónde ir desde aquí

Si piensas que el enfoque de SWCs es mejor para tus necesidades, revisa mi artículo Tips para Proyectos Extensos de iOS con Flash. Para aprender más acerca de REBOL, revisa la Guia de Inicio Rápido con REBOL. Si estas interesado en las reglas principales para el dialecto Rebol/Flash (RSWF), Oldes las ha documentado aquí. Por último, si quieres ver lo que un pequeño e independiente estudio de desarrollo de juegos puede hacer con la plataforma Flash, visita Amanita Design.

La versión original de este artículo está publicada en Adobe Devnet bajo licencia Creative Commons, fue traducido y adaptado en nuestro blog por Jesús Macedo.