galaxy grab
DESCRIPTION
This presentation by Steve Easley, lead developer for RedMinnow Interactive, LLC, explains how to become an iOS developer and take a Flash application and convert it to an iOS app to be sold on the Apple App Store.TRANSCRIPT
About Me• Lead Developer Red Minnow Interactive
• Co-own the company with Duane Andrews
• Flash developer for 13 years
• Flex developer for 3 years
• Have created marketing games for:
About Presentation
2 Parts1. Becoming iOS developer, retrieving
files needed and publish a Flash app to iOS
About Presentation
2 Parts1. Becoming iOS developer, retrieving
files needed and publish a Flash app to iOS
2. Device Agnostic• Optimizing apps for mobile• Design/develop for multiple screen sizes and
processor capabilities• What you can and can’t do on devices
About Galaxy Grab
Initially created for ActiveDen last summer
• Flash component
About Galaxy Grab
Initially created for ActiveDen last summer
• Flash component
• Created for designers to modify and make own game
About Galaxy Grab
Initially created for ActiveDen last summer
• Flash component
• Created for designers to modify and make own game
• Can be resized to designer’s needs– This would be start for multiple screen sizes
About Galaxy Grab
Initially created for ActiveDen last summer
• Flash component
• Created for designers to modify and make own game
• Can be resized to designer’s needs– This would be start for multiple screen sizes
• Can change properties in Component Inspector
About Galaxy Grab
Initially created for ActiveDen last summer
• Flash component
• Created for designers to modify and make own game
• Can be resized to designer’s needs– This would be start for multiple screen sizes
• Can change properties in Component Inspector
• tiny.cc/activeDen
Galaxy Grab to iOS
Goal• Learn the process• Take current game straight to iOS to see how it
performs• Have an app on Apple App store
iOS Development
Quick Start Guide
• Join iOS Developer Program (min. $99/yr)– developer.apple.com
• iProvisioning Portal– developer.apple.com/ios/manage/overview/
• Tutorials:– tiny.cc/iOStutorial (pictures)– tiny.cc/adobeIOShelp– tiny.cc/adobePackagerForum
Galaxy Grab to iOSInitial Results – the good
• Mouse Down, Move and Release worked
•
•
•
•
Galaxy Grab to iOSInitial Results – the good
• Mouse Down, Move and Release worked
• Text Entry worked well
•
•
•
Galaxy Grab to iOSInitial Results – the good
• Mouse Down, Move and Release worked
• Text Entry worked well
• SharedObjects worked (surprisingly)
•
•
Galaxy Grab to iOSInitial Results – the good
• Mouse Down, Move and Release worked
• Text Entry worked well
• SharedObjects worked (surprisingly)
• Background music with on/off button worked
•
Galaxy Grab to iOSInitial Results – the good
• Mouse Down, Move and Release worked
• Text Entry worked well
• SharedObjects worked (surprisingly)
• Background music with on/off button worked
• And it actually ran on an iPad!
Galaxy Grab to iOSInitial Results – the bad
• Game play was not so good – animation jerky
•
•
•
•
Galaxy Grab to iOSInitial Results – the bad
• Game play was not so good – animation jerky
• Tested several projects and all were S-L-O-W
•
•
•
Galaxy Grab to iOSInitial Results – the bad
• Game play was not so good – animation jerky
• Tested several projects and all were S-L-O-W
• Online search revealed similar results from others
•
•
Galaxy Grab to iOSInitial Results – the bad
• Game play was not so good – animation jerky
• Tested several projects and all were S-L-O-W
• Online search revealed similar results from others
• Shelved idea but came back to it a few weeks later
•
Galaxy Grab to iOSInitial Results – the bad
• Game play was not so good – animation jerky
• Tested several projects and all were S-L-O-W
• Online search revealed similar results from others
• Shelved idea but came back to it a few weeks later
• Goal: optimize game as much as possible and change game play to run better
Optimizing Apps for Mobile
What works for web may not work for mobile• Vector vs. Bitmap
– Processor intensive vs. file size– Animation – Blitting over Tweening– Animation only when needed and when little else is
going on
Optimizing Apps for Mobile
What works for web may not work for mobile• Vector vs. Bitmap
– Processor intensive vs. file size– Animation – Blitting over Tweening– Animation only when needed and when little else is
going on
• OOP vs. fast code– Big MVC architectures slow down mobile apps– Balance between reusable code and performance
Optimizing Apps for Mobile
What works for web may not work for mobile• Vector vs. Bitmap
– Processor intensive vs. file size– Animation – Blitting over Tweening– Animation only when needed and when little else is
going on
• OOP vs. fast code– Big MVC architectures slow down mobile apps– Balance between reusable code and performance
• Gaming and Optimization Techniques– 8bitrocket.com– moock.org– gskinner.com/blog– tiny.cc/adobeMobileOptimization
Optimizing Apps for Mobile
Some ideas will help any app - mobile or online1. Declaring variables before loops
Optimizing Apps for Mobile
Some ideas will help any app - mobile or online1. Declaring variables before loops
2. Data type variables – Double Advantage– App runs faster and takes up less memory
Optimizing Apps for Mobile
Some ideas will help any app - mobile or online1. Declaring variables before loops
2. Data type variables – Double Advantage– App runs faster and takes up less memory
3. Vectors vs. Array
Optimizing Apps for Mobile
Some ideas will help any app - mobile or online1. Declaring variables before loops
2. Data type variables – Double Advantage– App runs faster and takes up less memory
3. Vectors vs. Array
4. Object Pooling– If it has been made. Don’t delete and recreate if
needed
– Creating/Destroying objects is memory intensive and slows system down
Optimizing Apps for Mobile
Some ideas will help any app - mobile or online1. Declaring variables before loops
2. Data type variables – Double Advantage– App runs faster and takes up less memory
3. Vectors vs. Array
4. Object Pooling– If it has been made. Don’t delete and recreate if
needed
– Creating/Destroying objects is memory intensive and slows system down
5. Drawing API is slow – try not to use
Optimizing Apps for Mobile
Some ideas will help any app - mobile or online1. Declaring variables before loops
2. Data type variables – Double Advantage– App runs faster and takes up less memory
3. Vectors vs. Array
4. Object Pooling– If it has been made. Don’t delete and recreate if
needed
– Creating/Destroying objects is memory intensive and slows system down
5. Drawing API is slow – try not to use
6. Avoid filters – create bitmaps for them instead
Galaxy Grab Game Changes
• Changed all vectors to bitmaps
•-
•---
•----
Galaxy Grab Game Changes
• Changed all vectors to bitmaps
• Limit moving items on screen- New items “transport” in (used blitting)
•---
•----
Galaxy Grab Game Changes
• Changed all vectors to bitmaps
• Limit moving items on screen- New items “transport” in (used blitting)
• Created Test to check speed of processor- Math problem run 1 million times- Returns how long it took to run- Based on testing of devices, number indicates how many
items to animate on-screen at once
•----
Galaxy Grab Game Changes
• Changed all vectors to bitmaps
• Limit moving items on screen- New items “transport” in (used blitting)
• Created Test to check speed of processor- Math problem run 1 million times- Returns how long it took to run- Based on testing of devices, number indicates how many
items to animate on-screen at once
• Tested on several different devices: - iPhone 3G (900ms)- iPhone 3GS (600ms)- iPhone 4 (300ms)- iPad (300ms)
Galaxy Grab Game Changes
• Created 2 sizes of game pieces- Resize Handler functions load the correct size for screen
size
•
•
•---
Galaxy Grab Game Changes
• Created 2 sizes of game pieces- Resize Handler functions load the correct size for screen
size
• Added resize listener to have the app change size based on size of screen in app
- This.stage.addEventListener(Event.RESIZE, resizeHandler)
•
•---
Galaxy Grab Game Changes
• Created 2 sizes of game pieces- Resize Handler functions load the correct size for screen
size
• Added resize listener to have the app change size based on size of screen in app
- This.stage.addEventListener(Event.RESIZE, resizeHandler)
• Event.Resize over StageDisplayState.FULL_SCREEN - Host doing vs. App doing- FULL_SCREEN has limited keyboard control
•---
Galaxy Grab Game Changes
• Created 2 sizes of game pieces- Resize Handler functions load the correct size for screen
size
• Added resize listener to have the app change size based on size of screen in app
- This.stage.addEventListener(Event.RESIZE, resizeHandler)
• Event.Resize over StageDisplayState.FULL_SCREEN - Host doing vs. App doing- FULL_SCREEN has limited keyboard control
• Created Deployment – Apple App Store version- 6 days from submission to selling- No problems with submission (have heard horror stories)- Just released Blackberry Playbook version and Android
version is coming soon
Galaxy Grab to iOS
• Watch a video of Galaxy Grab on the iPad and iPhone
youtube.com/redMinnowInteractive
What is Flash to iOS Good For
• Games
•
•
•
What is Flash to iOS Good For
• Games
• Non Apple UI-based apps
•
•
What is Flash to iOS Good For
• Games
• Non Apple UI-based apps
• Visualization/Aggregator from web data
•
What is Flash to iOS Good For
• Games
• Non Apple UI-based apps
• Visualization/Aggregator from web data
• Apps that don’t need to tap into device-specific functionality
What is Flash to iOS Good For
• Games
• Non Apple UI-based apps
• Visualization/Aggregator from web data
• Apps that don’t need to tap into device-specific functionality
tiny.cc/comparisonChart
Questions?
Thank You!Steve [email protected]
twitter: steveRedMinnowblog: www.redminnow.com/blog