- Simulation of all input types and layouts – In Device Central you can see a little picture of the actual device your testing and play with each and every one of the buttons and input controls it suppors
- Memory and CPU Simulation – What’s more important on a mobile device than performance? (See below!) Device Central actually simulates the capabilities of the device you’re testing to let you know how your content will do.
- Radio interference – Kevin told a story about how some developers were actually taking test devices into elevators to test how their application performs with degraded reception, so they built this into Device Central!
- Screen glare – Whaaaat? Does your application have enough contrast to be seen when the device is being used outdoors? Device Central can help you find out.
Device Central is powerful, but no tool can guarantee that your app will work as designed in real world scenarios, so don’t forget to test yourself, on a real device, because as we all know: ain’t nothing like the real thing, baby.
- Air 2.5 beta open – Open to anyone who registers. Repurposes most of the work done for iPhone development and applies it to Android.
- Bit.ly/as3performance – Grant Skinner’s performance testing framework
- Github.com/MikeChambers – Mike Chambers’ Simple Game Framework, a set of utility classes to perform various game related functions like a Centralized Game Loop, Object Pooling, Caching, etc.
- Mobile support coming to next version of Flash Builder (don’t know any details of what this means)
- ALL vector rendering in AIR 2.5 is done via the GPU, which improves performance on all devices and improves battery life on mobile devices
- All vectors on stage are rendered, regardless of screen position. i.e. If you move an object off-screen, it is still iterated over in the rendering phase, wasting resources. To improve this, set visible = false.
- A new property called “cacheAsBitmapMatrix” is now available in AIR 2.5, and will be available in the Flash Player in a near release. Right now when you set cacheAsBitmap=true, and then scale or rotate the bitmap, it has to be redrawn. By setting the cacheAsBitmapMatrix to a matrix (usually just the identity matrix), you enable bitmap caching and greatly increase the performance of any redraws that occur.
- Performance tip: Do anything you can to prevent redraws (check the redraw regions to figure out what’s being redrawn). Things that force redraws are: Using the drawing API, changing/moving an object or it’s children, removing an object/child, or occluding non-cached objects.
- Setting Array/vector.length = 0 is faster than setting array/vector = new Array/Vector
- Object instantiation is very expensive, so instead of disposing objects, you can put them back in the pool and reuse them later.
- Mouse events are cheaper than touch events on mobile devices, and single finger touch events are automatically translated to mouse events. You should use these mouse events instead of the touch events to improve performance.
- Avoid using mouse move which is fired really, REALLY fast, and can cause lots of extra calculations that are made but go unused between frames. Instead, do your updates at the framerate by using ENTER_FRAME
- In certain areas where performance is super-important, consider using callbacks rather than events. Event objects have to be created and propagated, which is expensive.
- If you’re listening to an object that is deeply-nested in the display list, stop its propagation
- Bytearray.org/?p=1363 – A whitepaper called “Optimizing Performance for the ADOBE® FLASH® PLATFORM” (attached), this is the single greatest resource for performance tweaks I’ve ever come across. It validates a lot of the techniques I’m already applying for game development, and points out a few others to consider.
All in all, the 1st annual FITC SF was a resounding success, and you can bet I’ll be back next year!
