SlideShare a Scribd company logo
Going Mobile with
AIR + Starling
Lessons from Real World projects

Presented by Amos Laber
About Me

Amos Laber
Game Developer, Coder, Architect

Background in C++, Console games, 3D
Engines.
Later: Flex, AS3, Casual and 2D Games.

Blog:
www.flexwiz.net
Content and Scope

The state of AIR as a mobile ecosystem (2013)

Practical use of Starling, Feathers and ANE

Tips, Common Problems and Practices
Demo
AIR vs. Native
Trivial: Need iOS and Anrdoid at the same time
AIR = Shorter timelines (Rapid development)

Leverage existing knowledge and code - Faster to
implement

Personal preference: AS3 over Java or Obj-C
Captive Runtime: App is same as native
The AIR Ecosystem
AIR 3.5 (FP 11.5) made a big shift from enterprise
into mobile (without Flex).
A new generation of AS3 frameworks has reached
maturity
Adobe Gaming SDK: Starling, Feathers,
Away3D
Also Flare3D, Citrus, Nape, DragonBones
New Tools: ASC2, Scout, FlashBuilder 4.7
Production Goals
Get stuff done fast.
But no cutting corners!
Spend time on the game (creative),
not on boilerplate code.

UI Elements tend to be the #1 time consuming
- try to minimize and simplify them.
Choosing Tools
Code and Art Toolchain

Glyph Designer
Choosing Libraries
Frameworks

Libraries
Gestouch
Extensions (ANEs)
Services:

Game Center

In App Payments:
Game Framework
Do we need one?
Game Framework (or Engine) will provide
features and classes that are commonly used in
games / apps.
It takes time to learn how to efficiently use one
and it creates another dependency

I decided to roll my own.
The Parallel Universe

Starling forms a parallel universe where
flash display list is completely hardware
accelerated.
Migrating to Starling
Starling vs. 'classic' Flash
Rendering: CPU
flash.display.*
Vector fonts

|Flash|
|||

Rendering: GPU (H. Accel OpenGL)
starling.display.*

|Starling (Stage3D)| fonts
Bitmap

Vector Shapes

N/A (* Quad only)

Bitmap / BitmapData

Image / Texture

Sprite and DisplayObject

Same

flash.events

starling.events (faster)
Starling Basics
Compose the display list the same way as in flash.

Layering Sprites, images and
buttons

Compose your views/ screens

Alpha blending and hierarchy
works the same way as in Flash.
Starling App Setup
Load all assets (mostly bitmaps) on initialize.

Nearly all display objects are images
Best is to pack them up into sprite sheets

Determine screen size with stage_resize event. Use
it across the app for layouts.
Sprite Sheets
UI Setup - Feathers
Decide when to use custom UI, case by case
Prepare a bitmap font and skin elements
(Bitmap font text field is provided)

Works best with a theme
Integrating ANEs
Drop into project and update the manifest /permissions
Watch out for default mode - should not throw errors.
Well documented and supported ANE are a better choice.
Don't waste time on building them - too many dependencies (iOS
and Android ver, SDK compatibility)
Testing is only done on the device. They're native.

Recommended: MilkMan and FreshPlanet
Going Mobile with AIR+Starling
Example:
List and Item Renderer

import feathers.controls.List;

var list:List = new List();
list.itemRendererType= PetItemRenderer;
list.dataProvider = petList;

list.layout = new TiledColumnsLayout();
list.scrollerProperties.scrollBarDisplayMode = SCROLL_BAR_DISPLAY_MODE_FIXED;
Example:
The Item Renderer
class ItemVO {
name:String; image:Texture; locked:Boolean;
}

protected override function draw():void
{
var dataInvalid:Boolean = this.isInvalid(INVALIDATION_FLAG_DATA);
if (dataInvalid) {
|updateImage(data.image);|

|label.text = data.name;|

|label.visible = !data.locked;|

|image.blendMode = data.locked? BlendMode.ERASE :|
Composing Tips
Alpha and PNG w/Alpha works best - don't bake it

Use Tile Patterns with TiledImage.
Stretch elements with Slice9Image /Slice3Image.

Use scrollRect for simple masking and smooth
scrolling
Example:

Scroll and Mask

Castle gate was masked with scrollRect,
animated by tweening scrollRect.y

+

+
Common issues to
watch for
Touch
AIR SDK own touch handling is not very useful
3rd party libraries can fill in the gap
Gestouch is my recommended library:
Multitouch gestures for Starling or classic flash
http://github.com/fljot/Gestouch
Textures

Things to know

GPU memory on devices is limited.
iPhone 3GS has 24 MB

Standalone textures are rounded up to power of 2 size (e.g.
1024x1024 pixels).

Once created, the texture is uploaded to GPU.
When maxed out, the OS will close the app without
warning, exception or stack trace.
Textures

Best Preactices

Create the textures on demand - not when the Assets are
loaded.
Make sure to release with texture.dispose() when
removed from stage.
Pack everything to sprite sheets! We use TexturePacker

Have a central asset manager to hold textures
Textures

Sample Code

private var _textures:Dictionary;
..
public function getTexture(name:String):Texture
{
|if (_textures[name] == undefined)

{|

|

var data:Object = _loadedAssets[name];|

|

if (data is Bitmap)|

|_textures[name] = |
Texture.fromBitmap(data as Bitmap, false, false);
|}|
return _textures[name];
}

public function disposeTexture(name:String):void
{
if (_textures[name]) {
Texture(_textures[name]).dispose();
|textures[name] = |
null
|;|
Screen Size and Layout
Avoid hardcoded pixel sizes. Use relative align or
percentage
iPad Retina support No need to duplicate the assets (x1, x2, x4...)
Selective scale
Test layout in different screen sizes on simulator
and Something
extra
Deployment
Main Markets
Discoverability, Promotion

Apple App Store
Promote you App
For Zero Cost

Create a Facebook fan page.
Create a Twitter account and tweet frequently.
Make a YouTube video with actual gameplay footage.
Prepare a press kit with screenshots and marketting blurb
and send it for review to selected web sites.
Tracking Data
Weekly Downloads
iOS
Android

Chart was not exported from SlideRocket
Takedown
Is Starling Right for you?

AIR proved a viable solution for mobile

Starling is now a Solid and Mature framework

Developers can get stuff done faster
Resources
Starling Wiki:
wiki.starling-framework.org/

Starling Forum:
forum.starling-framework.org/

gotoAndLearn:

My Blog:
www.flexwiz.net

gotoandlearn.com

Flash Daily:
QA
&

[ Ask me anything ]
Thank You
@amosLaber
note@amosl.com

More Related Content

PDF
Adobe AIR for mobile games
PPTX
Creative Coders March 2013 - Introducing Starling Framework
PPTX
Unreal Engine (For Creating Games) Presentation
PPTX
Ottawa unity user_group_feb13_2015
PDF
Unreal Engine 4 Introduction
PDF
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
PPTX
Unleash 3D games with Babylon.js - JSConf 2014 talk
PPTX
XNA And Silverlight
Adobe AIR for mobile games
Creative Coders March 2013 - Introducing Starling Framework
Unreal Engine (For Creating Games) Presentation
Ottawa unity user_group_feb13_2015
Unreal Engine 4 Introduction
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unleash 3D games with Babylon.js - JSConf 2014 talk
XNA And Silverlight

What's hot (19)

PPTX
HTML5DevConf - Unleash the power of 3D with babylon.js
PPTX
Unleash 3D rendering with WebGL and Microsoft Edge
PDF
Introduction to html5 game programming with impact js
PPT
Creating a browser ready fps mmo in unity ppt-mew_final
PPTX
Making VR with Unreal Engine Luis Cataldi
PDF
The tech. behind RoboBlastPlanet
PDF
Making mobile flex apps blazing fast
PDF
Adobe AIR - Mobile Performance – Tips & Tricks
PDF
SUSE Studio - LinuxTag Berlin 2010
PPTX
Virtual Presentation using Amazon Sumerian
PPTX
Video game development for everybody
PPTX
HTML5 Gaming
PDF
The new Apple TV and the tvOS
PPTX
Develop scalable high quality apps using Google Firebase - Lior Bruder, 11sheep
PDF
Luidia eBeam Interact V2.2 Software Features VF
PPT
Creating A Game Using Microsoft’s Next Generation Technologies
PPTX
Recipe of AWS Karuta
PPT
Open Source Solutions For Live Visuals
PPTX
Introductory Virtual Reality in Unity3d
HTML5DevConf - Unleash the power of 3D with babylon.js
Unleash 3D rendering with WebGL and Microsoft Edge
Introduction to html5 game programming with impact js
Creating a browser ready fps mmo in unity ppt-mew_final
Making VR with Unreal Engine Luis Cataldi
The tech. behind RoboBlastPlanet
Making mobile flex apps blazing fast
Adobe AIR - Mobile Performance – Tips & Tricks
SUSE Studio - LinuxTag Berlin 2010
Virtual Presentation using Amazon Sumerian
Video game development for everybody
HTML5 Gaming
The new Apple TV and the tvOS
Develop scalable high quality apps using Google Firebase - Lior Bruder, 11sheep
Luidia eBeam Interact V2.2 Software Features VF
Creating A Game Using Microsoft’s Next Generation Technologies
Recipe of AWS Karuta
Open Source Solutions For Live Visuals
Introductory Virtual Reality in Unity3d
Ad

Similar to Going Mobile with AIR+Starling (20)

PDF
Minko - Targeting Flash/Stage3D with C++ and GLSL
PPT
Cross-platform mobile dev with Mono
PPTX
Windows 8 store apps development
PPTX
Adobe MAX Recap
PDF
Top Tips for Android UIs - Getting the Magic on Tablets
PPTX
Applico Android Info Session at Columbia University
PPTX
Android Introduction on Java Forum Stuttgart 11
PPTX
Android Overview (Karlsruhe VKSI)
PDF
Presentación Unity
PDF
Augmented Reality Application Development_Vuforia.pdf
PPT
PPT
Android Development with Flash Builder Burrito
DOCX
Alan Tennent Resume 2016
PPT
Implementation
PPT
Creating Flash Content for Multiple Screens
PPT
OzAltNet Fast-ANDroid-furious
PPT
Intro to Android Programming
PPT
Flash for Mobile Devices
PDF
Machine learning, WTF!?
PDF
Unite 2013 optimizing unity games for mobile platforms
Minko - Targeting Flash/Stage3D with C++ and GLSL
Cross-platform mobile dev with Mono
Windows 8 store apps development
Adobe MAX Recap
Top Tips for Android UIs - Getting the Magic on Tablets
Applico Android Info Session at Columbia University
Android Introduction on Java Forum Stuttgart 11
Android Overview (Karlsruhe VKSI)
Presentación Unity
Augmented Reality Application Development_Vuforia.pdf
Android Development with Flash Builder Burrito
Alan Tennent Resume 2016
Implementation
Creating Flash Content for Multiple Screens
OzAltNet Fast-ANDroid-furious
Intro to Android Programming
Flash for Mobile Devices
Machine learning, WTF!?
Unite 2013 optimizing unity games for mobile platforms
Ad

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Approach and Philosophy of On baking technology
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPT
Teaching material agriculture food technology
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Electronic commerce courselecture one. Pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Big Data Technologies - Introduction.pptx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
MYSQL Presentation for SQL database connectivity
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Network Security Unit 5.pdf for BCA BBA.
Mobile App Security Testing_ A Comprehensive Guide.pdf
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Approach and Philosophy of On baking technology
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Teaching material agriculture food technology
Review of recent advances in non-invasive hemoglobin estimation
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
NewMind AI Monthly Chronicles - July 2025
Spectral efficient network and resource selection model in 5G networks
Electronic commerce courselecture one. Pdf
Chapter 3 Spatial Domain Image Processing.pdf
Understanding_Digital_Forensics_Presentation.pptx
Big Data Technologies - Introduction.pptx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
MYSQL Presentation for SQL database connectivity

Going Mobile with AIR+Starling

  • 1. Going Mobile with AIR + Starling Lessons from Real World projects Presented by Amos Laber
  • 2. About Me Amos Laber Game Developer, Coder, Architect Background in C++, Console games, 3D Engines. Later: Flex, AS3, Casual and 2D Games. Blog: www.flexwiz.net
  • 3. Content and Scope The state of AIR as a mobile ecosystem (2013) Practical use of Starling, Feathers and ANE Tips, Common Problems and Practices
  • 5. AIR vs. Native Trivial: Need iOS and Anrdoid at the same time AIR = Shorter timelines (Rapid development) Leverage existing knowledge and code - Faster to implement Personal preference: AS3 over Java or Obj-C Captive Runtime: App is same as native
  • 6. The AIR Ecosystem AIR 3.5 (FP 11.5) made a big shift from enterprise into mobile (without Flex). A new generation of AS3 frameworks has reached maturity Adobe Gaming SDK: Starling, Feathers, Away3D Also Flare3D, Citrus, Nape, DragonBones New Tools: ASC2, Scout, FlashBuilder 4.7
  • 7. Production Goals Get stuff done fast. But no cutting corners! Spend time on the game (creative), not on boilerplate code. UI Elements tend to be the #1 time consuming - try to minimize and simplify them.
  • 8. Choosing Tools Code and Art Toolchain Glyph Designer
  • 11. Game Framework Do we need one? Game Framework (or Engine) will provide features and classes that are commonly used in games / apps. It takes time to learn how to efficiently use one and it creates another dependency I decided to roll my own.
  • 12. The Parallel Universe Starling forms a parallel universe where flash display list is completely hardware accelerated.
  • 13. Migrating to Starling Starling vs. 'classic' Flash Rendering: CPU flash.display.* Vector fonts |Flash| ||| Rendering: GPU (H. Accel OpenGL) starling.display.* |Starling (Stage3D)| fonts Bitmap Vector Shapes N/A (* Quad only) Bitmap / BitmapData Image / Texture Sprite and DisplayObject Same flash.events starling.events (faster)
  • 14. Starling Basics Compose the display list the same way as in flash. Layering Sprites, images and buttons Compose your views/ screens Alpha blending and hierarchy works the same way as in Flash.
  • 15. Starling App Setup Load all assets (mostly bitmaps) on initialize. Nearly all display objects are images Best is to pack them up into sprite sheets Determine screen size with stage_resize event. Use it across the app for layouts.
  • 17. UI Setup - Feathers Decide when to use custom UI, case by case Prepare a bitmap font and skin elements (Bitmap font text field is provided) Works best with a theme
  • 18. Integrating ANEs Drop into project and update the manifest /permissions Watch out for default mode - should not throw errors. Well documented and supported ANE are a better choice. Don't waste time on building them - too many dependencies (iOS and Android ver, SDK compatibility) Testing is only done on the device. They're native. Recommended: MilkMan and FreshPlanet
  • 20. Example: List and Item Renderer import feathers.controls.List; var list:List = new List(); list.itemRendererType= PetItemRenderer; list.dataProvider = petList; list.layout = new TiledColumnsLayout(); list.scrollerProperties.scrollBarDisplayMode = SCROLL_BAR_DISPLAY_MODE_FIXED;
  • 21. Example: The Item Renderer class ItemVO { name:String; image:Texture; locked:Boolean; } protected override function draw():void { var dataInvalid:Boolean = this.isInvalid(INVALIDATION_FLAG_DATA); if (dataInvalid) { |updateImage(data.image);| |label.text = data.name;| |label.visible = !data.locked;| |image.blendMode = data.locked? BlendMode.ERASE :|
  • 22. Composing Tips Alpha and PNG w/Alpha works best - don't bake it Use Tile Patterns with TiledImage. Stretch elements with Slice9Image /Slice3Image. Use scrollRect for simple masking and smooth scrolling
  • 23. Example: Scroll and Mask Castle gate was masked with scrollRect, animated by tweening scrollRect.y + +
  • 25. Touch AIR SDK own touch handling is not very useful 3rd party libraries can fill in the gap Gestouch is my recommended library: Multitouch gestures for Starling or classic flash http://github.com/fljot/Gestouch
  • 26. Textures Things to know GPU memory on devices is limited. iPhone 3GS has 24 MB Standalone textures are rounded up to power of 2 size (e.g. 1024x1024 pixels). Once created, the texture is uploaded to GPU. When maxed out, the OS will close the app without warning, exception or stack trace.
  • 27. Textures Best Preactices Create the textures on demand - not when the Assets are loaded. Make sure to release with texture.dispose() when removed from stage. Pack everything to sprite sheets! We use TexturePacker Have a central asset manager to hold textures
  • 28. Textures Sample Code private var _textures:Dictionary; .. public function getTexture(name:String):Texture { |if (_textures[name] == undefined) {| | var data:Object = _loadedAssets[name];| | if (data is Bitmap)| |_textures[name] = | Texture.fromBitmap(data as Bitmap, false, false); |}| return _textures[name]; } public function disposeTexture(name:String):void { if (_textures[name]) { Texture(_textures[name]).dispose(); |textures[name] = | null |;|
  • 29. Screen Size and Layout Avoid hardcoded pixel sizes. Use relative align or percentage iPad Retina support No need to duplicate the assets (x1, x2, x4...) Selective scale Test layout in different screen sizes on simulator
  • 32. Promote you App For Zero Cost Create a Facebook fan page. Create a Twitter account and tweet frequently. Make a YouTube video with actual gameplay footage. Prepare a press kit with screenshots and marketting blurb and send it for review to selected web sites.
  • 33. Tracking Data Weekly Downloads iOS Android Chart was not exported from SlideRocket
  • 34. Takedown Is Starling Right for you? AIR proved a viable solution for mobile Starling is now a Solid and Mature framework Developers can get stuff done faster
  • 36. QA & [ Ask me anything ]