Many developers use Flash Professional as their primary tool for creating browser and mobile games for Android and iOS due to its ability to easily work with game assets and also work with ActionScript code. The tool is unique because it allows you to exercise both your right and left brains. With Adobe’s new game-centric focus for the Flash player and AIR, future versions of Flash Professional would benefit from features that make visual & code based game development even easier. In this article, I discuss three features that I feel would greatly improve project workflow and add exceptional value to Flash Professional.
1. Mobile UI Components & Touch Gestures
While the advent of Adobe AIR gives Flash developers the potential to create non-gaming mobile apps, replicating a perfect representation of an OS-specific UI (scrolling lists, menus, pinch zoom, etc.) is often best deferred to native language programming. Both Android and iOS provide built in API’s for implementing native user interfaces. However, there are still many situations where a ready-to-use UI component is useful in game development and would save hours of development time.
Consider a multiplayer game with a lobby of users or a game option screen with multiple possibilities for customizing the level. A list of users can be quickly represented by a list component, while game options could be selected via a touch and scroll drop menu. Imagine the time visual layout designers could save by simply dragging and dropping a component built into the IDE directly to your display list, selecting a few color choices and parameters to configure, and publishing a ready-to-go interface.
This is the workflow I’m trying to create with AURA, a multiscreen UI suite: http://www.indieflashblog.com/aura-multiscreen-components.html. In addition to the visual compatibility, AURA takes UI design a step further by intelligently identifying the target platform and adapting the input controls of the UI. Does the user have a mouse? Use a mouse-based scroll bar. Is the user on an iPhone? Control the component via finger swipe.
The same concept is applicable to mobile gestures, with the most readily demanded feature being an iOS-style “pinch zoom gesture”. Game maps or battle grids could be dropped directly into a component that automatically handles the process of zooming with touch gestures.
2. Assets Management
Experienced developers know that it’s best to reuse existing assets whenever possible. Flash Professional currently provides an excellent environment to create assets like vector artwork, animation, and reusable interface components, but the tool lacks a way to manage these assets effectively.
Let’s say I work with a team of animators that creates animations and UI components for my game projects. I want to reuse these assets throughout multiple projects. Currently, I have two options:
- Package the elements as a compiled SWF (in the FLA library) or export a SWC that I can add to my project during compile phase
- Export the definitions in a SWF library that can be loaded into my application at runtime
The first option allows me to have compile-time knowledge of the definitions so I can reference and use the objects effectively as well as benefit from code hinting. However, this also requires that I compile the assets into my application each time. If I host multiple games on my website that all use these shared assets and need to make a change to the assets, I would need to recompile every game on the server. Additionally, each game is bloated by additional file space by having to include their own copy of the assets when it gets compiled into the application.
The second option, loading the definitions at runtime, only requires that I have one instance of the assets library on the server. If I change this assets SWF, all games on the server will receive the update automatically the next time they are launched since the definitions are being loaded at runtime. This method also saves loading time for the user since they only have to download the assets once for all games. The downside is that I no longer have compile-time awareness of the definitions, so I cannot strong type class properties that depend on these assets and I must disable “Strict Mode” to permit my application to compile. This is undesirable as Strict Mode is very handy for catching common coding errors that might lead to serious problems while running the application. Additionally, loading assets at runtime requires additional coding to setup the file load and delay the operating of application until all assets are ready.
Now, imagine if Flash Professional had a built in “assets” designation. Developers could choose to package their artwork, audio, animations, and more into a designated assets library file, and Flash Professional would automatically handle the task of compile-time checking and loading the assets file for you at runtime. The difference between this new assets library method and using a SWC would be that the compiler would only scan the definitions from the assets library to ensure proper usage- it would not actually bundle the definitions into the application. Developers could select (from a simple menu similar to adding assets to an AIR application) which asset files they want to include in their game application. Doing so would add code to automatically setup up the loading of these assets files at runtime so that, prior to starting the app, all necessary definitions are loaded first.
Having a designated assets library feature would improve workflow by allowing artists, designers, and developers to build their respective pieces of the game in Flash Professional separately, reliably compile their application, and allow multiple projects to effectively share created assets.
3. Application Packager
Flash Professional currently allows developers to package applications as AIR desktop applications and as mobile applications by automatically implementing the ADT compiler via a built in graphical user interface. This tool could be improved in three ways:
- Package Only Option: Sometimes, you need to repackage an application without modifying the code (perhaps an external asset such as a music file has changed or you need to add/remove permissions in the application XML). Flash Professional should include the option to “package only” vs. republishing the FLA into a SWF and then packaging.
- Bundle Installer: When creating an AIR application for Windows desktop or MAC, it would be helpful to have the option to bundle a basic installer with a Captive Runtime enabled application. This would save developers the extra task of using a third party tool to create the installer. Users installing the app should have basic choices such as install location, whether to include desktop/start menu short cuts, and the ability to uninstall (remove all application files).
- Multi-SWF Packager for iOS: Since iOS applications cannot load assets stored in separate SWF files, it would be highly beneficial to have a feature that automatically processes multiple SWF files into a single SWF file that can then be converted to an IPA file. As loading domain issues could crop up, this feature should simply tie all of the individual SWF files’ definitions into the same application domain in the order specified by the developer. Any duplicate definitions across the multiple files would be ignored. In essence, the packager would serve the same function for external SWF files as a developer might combine multiple SWFs by compiling the files together as SWC’s. For more information, see Tom Krcha’s posts on the ADC here http://www.adobe.com/devnet/flash/articles/join-multiple-swf-files.html.
Share Your Thoughts
Flash Professional is an exceptional tool for creating browser and mobile games. By incorporating built-in mobile/multiscreen UI components, enhancing the way created assets are managed, and improving the application packager, making games with Flash would be even easier.
What are your thoughts on these ideas?