SlideShare a Scribd company logo
1 of 49
Download to read offline
60fps or Bust!
                      Flash Game Performance Tuning from A to Z


                                                                Andy Hall
                                                                Adobe Japan



© 2012 Adobe Systems Incorporated. All Rights Reserved.
Andy Hall アンディ ホール
                                       Game Evangelist ゲームエバンジェリスト
                                         Adobe Japan アドビ システムズ 株式会社
                                                       @fenomas

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Agenda

                                    •        Overview
                                    •        Tuning ActionScript 3.0
                                    •        Flash Player Internals
                                    •        Rendering Optimization
                                    •        Upcoming topics


© 2012 Adobe Systems Incorporated. All Rights Reserved.
Principles of Optimization


                                                              “Premature
                                                           optimization is the
                                                             root of all evil”
                                                                Donald Knuth


                                                          (早すぎる最適化は諸悪の根源)


© 2012 Adobe Systems Incorporated. All Rights Reserved.
Optimization Flow



                                                                Build for
             Architect for                                                      Optimize!
                                                               speed and
             performance                                                      (only the slow parts)
                                                               correctness




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Metrics

          To optimize you need measurable metrics!

                                                          •   FPS
                                                          •   Memory usage
                                                          •   CPU usage
                                                          •   Bandwidth?
                                                          •   Battery usage?
                                                          •   etc...

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Profiling
                                           Now:                       Soon:
                            Flash Builder 4.6 Profiler            Codename “Monocle”




© 2012 Adobe Systems Incorporated. All Rights Reserved.
TUNING ACTIONSCRIPT


© 2012 Adobe Systems Incorporated. All Rights Reserved.
Tuning ActionScript 3.0

          Caveats:

          • Often not as important
            as rendering



          • Beware of low-impact
            “tips and tricks”


© 2012 Adobe Systems Incorporated. All Rights Reserved.
The Basics

                                              • Always use AS3.0
  Always!
                                              • Type everything
                                              • Prefer Vector.<type> over
                                                Array or Dictionary
   Only in                                    • Prefer String methods over RegExp
   critical
    areas                                     • Be careful with E4X and XML
                                                (                             )
                                              • Callbacks are faster than Event

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Pooling
          Instantiation can be expensive!
          Pool or reuse objects to avoid the cost of frequent creation
          and collection
                • Static temps




                                • Object pooling




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Function Calls
          Function calls can be expensive too.
          Keep a shallow call stack and avoid recursion:




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Garbage Collections

          Know your GC!


          • Flash’s GC does both reference counting and
            mark-sweep.
                  (If you want to tune memory usage, you need to understand these!)
          • Use Monocle to find if GC is firing too often
          • Pooling/reuse makes GC collection less frequent
          • For large collections, prefer literals (String, int..) or plain
            objects over complex objects (Sprite, Rectangle..)

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Smart GC
          Tell Flash when to trigger a GC!




          Call this between levels, when the game pauses, etc.

          Flash’s GC marks incrementally, and this command tells it to finish
          marking and do a collection if a GC was already imminent. The
          argument specifies how long you’re willing to wait for a GC:
             imminence=0.99; // GC if ready now
             imminence=0.01; // GC even if you need to pause a while



© 2012 Adobe Systems Incorporated. All Rights Reserved.
FLASH INTERNALS


© 2012 Adobe Systems Incorporated. All Rights Reserved.
The big picture
                     // Flash’s internal loop (simplified)
                     while() {
                          sleep until (nextEvent OR externalEvent)
                          if ( various events pending ) {
                                handleEvents();
                                // handles Timer events,
                                // fills audio/video buffers
                          }
                          if ( time for next SWF frame ) {
                                parseSWFFrame();
                                executeActionScript();
                          }
                          if ( screen needs update ) {
                                updateScreen();
                          }
                     }

© 2012 Adobe Systems Incorporated. All Rights Reserved.            Gory details: http://blog.kaourantin.net/?p=82
Flash’s Internal Loop



                          Handle                          Next SWF frame
                          various                                           Rendering
                          events                          Execute scripts



                                                               sleep




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Point: Because of this, most
            recurring scripts should be handled
                 in Event.ENTER_FRAME !

                                                                        ENTER_FRAME


                        Handle                            Next SWF frame
                        external                                                 Rendering
                         events                           Execute scripts

                                                               sleep

© 2012 Adobe Systems Incorporated. All Rights Reserved.
The Display List


                                                                              Vector
                                                                              shapes


                                                                          Video
                                                                                  Bitmap

                                                                       Display List




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Dirty Rectangles
                                                                                “Dirty”
                                                                              (redrawn)



                                                             (frame update)



                                                                                 Display List




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Display Planes



                                                                                Vector
                                                                          3D
                                                                                     Video

                                                                      Display List




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Drawing Modes

          wmode (Flash),
          renderMode (AIR)


                                      direct
                                                                     GPU

                                                          gpu              CPU

                                                            cpu              Browser
                          Flash
                        Renderer
                                                            transparent
                                                            opaque
© 2012 Adobe Systems Incorporated. All Rights Reserved.
RENDERING OPTIMIZATION


© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering Basics

          The basics:
          • Keep a shallow display list.

                  Reason: everything
                  in that rectangle
                  is getting redrawn
                  every frame!                                          Display List




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering Basics

          More basics:
          • Understand that certain features are just heavy!
               • Bitmap Effects (shadow, glow, emboss...)
               • Masks (inherently vector-based)
               • Alpha channels
               • Blend modes (add, multiply...)
                                and even...

                                • Embedded fonts (especially Japanese!)


© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering Basics
          More basics:
          • Keep extraneous stuff off the stage
          • Use the right framerate
          • Simplify vector shapes




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Stage Settings
          • StageQuality.LOW:
            Lower-quality vector shapes. Never anti-alias, never
            smooth bitmaps.
          • StageQuality.MEDIUM:
            Better vectors. Some anti-aliasing but no bitmaps
            smoothing. Default value for mobile devices.
          • StageQuality.HIGH:
            Always uses anti-aliasing. Uses smoothing on bitmaps
            depending on whether the SWF is animating.
            Default value on desktop PCs.
          • StageQuality.BEST:
            Best quality. Always anti-alias, always smooth bitmaps.


© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering Internals

          Understand rasterization and the conditions
          for cached bitmaps to get redrawn!
          (Designers need to know this too!)




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Bitmap Caching

          • Lets complex assets
            be rasterized once
            instead of every frame.

          • Turned on automatically if you use bitmap
            effects

                      Caching is the single most important thing to
                       understand for tuning display list content!

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Bitmap Caching
          foo.cacheAsBitmap = true;

                                                                                    (redrawn)
                                                               (cached)



          foo.cacheAsBitmapMatrix = new Matrix();

                                                                          (cached)
                                                                          (drawn with GPU)
                                                                          (only in AIR!)




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Bitmap Caching




                              Use Monocle to see what’s being cached
© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering
          One more technique:
               Adjust visual effects at runtime!




                                                          500 particles   200 particles

© 2012 Adobe Systems Incorporated. All Rights Reserved.
RENDERING MODELS


© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering Models

                         There are four main rendering models
                             in use today for Flash games.

                                                            1. Display List
                                                            2. GPU mode
                                                            3. Blitting
                                                            4. Stage3D

© 2012 Adobe Systems Incorporated. All Rights Reserved.
1. Display List Rendering

         • Plain vanilla flash content, made in Flash Pro

         • Easiest to build – worst performance.

         • Suitable for prototypes and light desktop content.
                 Bad for mobile! (because the GPU is not used)

         • Your key tuning technique will be bitmap caching.




© 2012 Adobe Systems Incorporated. All Rights Reserved.
2. GPU Mode
          • GPU mode is a publish setting available for AIR apps on
                  devices (Android and iOS)

          • When selected, Flash uses the GPU – vectors and cached
                  surfaces are rendered through hardware.

          • Can be very powerful with careful, correct use of
                  movieclip.cacheAsBitmapMatrix

          • Powerful technique today, but not recommended for
                  new/future projects

© 2012 Adobe Systems Incorporated. All Rights Reserved.
GPU Mode Example
          Monster Planet SMASH!

          (GREE)




              More info:




© 2012 Adobe Systems Incorporated. All Rights Reserved.
3. Blitting
          • Blitting refers to putting a Bitmap object on the stage for
                  your game area and manually drawing contents into it
                  with BitmapData.copyPixels().

          • Hence, you manage your own rendering, caching, etc.

          • Can be very fast in certain restricted cases

          • Does not scale up for retina/hi-res devices!




© 2012 Adobe Systems Incorporated. All Rights Reserved.
4. Stage3D




© 2012 Adobe Systems Incorporated. All Rights Reserved.
4. Stage3D
          • New feature from Flash 11.0, allowing ActionScript to
                  load shader programs directly to the GPU.

          • Based on AGAL (Adobe Graphics Assembly Language)

          • AGAL looks like this:                              m44   op, va0, vc0
                                                               dp4   op.x, va0, vc0
                                                               dp4   op.y, va0, vc1
          • You probably want                                  dp4   op.z, va0, vc2
                                                               dp4   op.w, va0, vc3
                  to use a 2D/3D library!                      m44   op, va0, vc0
                                                               mov   v0, va1
                                                               (It’s dangerous to go alone!)
© 2012 Adobe Systems Incorporated. All Rights Reserved.
4. Stage3D
                                                            (Take this!)

          • Two officially supported libraries:

                                • Starling (2D)

                                • Away3D



          • And many, many more...


              N2D2
                                              Genome2D

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Stage3D examples




© 2012 Adobe Systems Incorporated. All Rights Reserved.
NEW / FUTURE TOPICS


© 2012 Adobe Systems Incorporated. All Rights Reserved.
AS3 Workers

                                                                create

                                   Main                                      Background
                                  Worker                                       Worker
                                                            MessageChannel
                                (regular                         API             (some
                              Flash player)                                   limitations)


                                                                mutex


                                                              Shared
                                                              memory
© 2012 Adobe Systems Incorporated. All Rights Reserved.
AS3 Workers

                                                                create

                                   Main                                      Background
                                  Worker                                       Worker
                                                            MessageChannel
                                (regular                         API             (some
                              Flash player)                                   limitations)


                                                                mutex


                                                              Shared
                                                              memory
© 2012 Adobe Systems Incorporated. All Rights Reserved.
ASC2.0

          • All new ActionScript compiler!
          • Included with the Flash Builder 4.7 preview:
                                http://labs.adobe.com/technologies/flashbuilder4-7/

          • Key features:
                                •     Faster compiles! More optimized bytecode!
                                •     Error messages localized to JA, FR, ZH
                                •     Inline functions, get/setters (when possible) (use –inline arg)
                                •     goto statement (!?!?!?)


          • Details: http://www.bytearray.org/?p=4789

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Longer term




                                                  Project     Better        Better
                                                 Monocle!   Flash Pro!   ActionScript!




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Thanks!




                                                           andhall@adobe.com
                                                           @fenomas

© 2012 Adobe Systems Incorporated. All Rights Reserved.
© 2012 Adobe Systems Incorporated. All Rights Reserved.

More Related Content

Similar to Flash performance tuning (EN)

HBase and Hadoop at Adobe
HBase and Hadoop at AdobeHBase and Hadoop at Adobe
HBase and Hadoop at AdobeCosmin Lehene
 
eLearning Suite 6 Workflow
eLearning Suite 6 WorkfloweLearning Suite 6 Workflow
eLearning Suite 6 WorkflowKirsten Rourke
 
CEDEC2012 Starling開発
CEDEC2012 Starling開発CEDEC2012 Starling開発
CEDEC2012 Starling開発Andy Hall
 
CEDEC2012 Starling 開発
CEDEC2012 Starling 開発CEDEC2012 Starling 開発
CEDEC2012 Starling 開発Andy Demo
 
TAUS OPEN SOURCE MACHINE TRANSLATION SHOWCASE, Beijing, Yu Gong, Adobe, 23 Ap...
TAUS OPEN SOURCE MACHINE TRANSLATION SHOWCASE, Beijing, Yu Gong, Adobe, 23 Ap...TAUS OPEN SOURCE MACHINE TRANSLATION SHOWCASE, Beijing, Yu Gong, Adobe, 23 Ap...
TAUS OPEN SOURCE MACHINE TRANSLATION SHOWCASE, Beijing, Yu Gong, Adobe, 23 Ap...TAUS - The Language Data Network
 
Adobe Gaming Solutions by Tom Krcha
Adobe Gaming Solutions by Tom KrchaAdobe Gaming Solutions by Tom Krcha
Adobe Gaming Solutions by Tom Krchamochimedia
 
Oop2012 keynote Design Driven Development
Oop2012 keynote Design Driven DevelopmentOop2012 keynote Design Driven Development
Oop2012 keynote Design Driven DevelopmentMichael Chaize
 
NLJUG: Content Management, Standards, Opensource & JCP
NLJUG: Content Management, Standards, Opensource & JCPNLJUG: Content Management, Standards, Opensource & JCP
NLJUG: Content Management, Standards, Opensource & JCPDavid Nuescheler
 
Adobe AIR - Mobile Performance – Tips & Tricks
Adobe AIR - Mobile Performance – Tips & TricksAdobe AIR - Mobile Performance – Tips & Tricks
Adobe AIR - Mobile Performance – Tips & TricksMihai Corlan
 
Turbocharging php applications with zend server (workshop)
Turbocharging php applications with zend server (workshop)Turbocharging php applications with zend server (workshop)
Turbocharging php applications with zend server (workshop)Eric Ritchie
 
Node.js and Photoshop Generator - JSConf Asia 2013
Node.js and Photoshop Generator - JSConf Asia 2013Node.js and Photoshop Generator - JSConf Asia 2013
Node.js and Photoshop Generator - JSConf Asia 2013Andy Hall
 
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Bjarni Kristjánsson
 
PHP Apps on the Move - Migrating from In-House to Cloud
PHP Apps on the Move - Migrating from In-House to Cloud  PHP Apps on the Move - Migrating from In-House to Cloud
PHP Apps on the Move - Migrating from In-House to Cloud RightScale
 
Enhancing scalability with intelligent caching
Enhancing scalability with intelligent cachingEnhancing scalability with intelligent caching
Enhancing scalability with intelligent cachingEric Ritchie
 
The HaLVM: A Simple Platform for Simple Platforms
The HaLVM: A Simple Platform for Simple PlatformsThe HaLVM: A Simple Platform for Simple Platforms
The HaLVM: A Simple Platform for Simple PlatformsThe Linux Foundation
 
Turbocharging php applications with zend server
Turbocharging php applications with zend serverTurbocharging php applications with zend server
Turbocharging php applications with zend serverEric Ritchie
 
Adobe Summit EMEA 2012 : 16706 Optimise Mobile Experience
Adobe Summit EMEA 2012 : 16706 Optimise Mobile ExperienceAdobe Summit EMEA 2012 : 16706 Optimise Mobile Experience
Adobe Summit EMEA 2012 : 16706 Optimise Mobile ExperienceBen Seymour
 
High performance PHP: Scaling and getting the most out of your infrastructure
High performance PHP: Scaling and getting the most out of your infrastructureHigh performance PHP: Scaling and getting the most out of your infrastructure
High performance PHP: Scaling and getting the most out of your infrastructuremkherlakian
 
What's new in Juno
What's new in JunoWhat's new in Juno
What's new in JunoTomasz Zarna
 

Similar to Flash performance tuning (EN) (20)

HBase and Hadoop at Adobe
HBase and Hadoop at AdobeHBase and Hadoop at Adobe
HBase and Hadoop at Adobe
 
eLearning Suite 6 Workflow
eLearning Suite 6 WorkfloweLearning Suite 6 Workflow
eLearning Suite 6 Workflow
 
CEDEC2012 Starling開発
CEDEC2012 Starling開発CEDEC2012 Starling開発
CEDEC2012 Starling開発
 
CEDEC2012 Starling 開発
CEDEC2012 Starling 開発CEDEC2012 Starling 開発
CEDEC2012 Starling 開発
 
MMT 28: Adobe »Edge to the Flash«
MMT 28: Adobe »Edge to the Flash«MMT 28: Adobe »Edge to the Flash«
MMT 28: Adobe »Edge to the Flash«
 
TAUS OPEN SOURCE MACHINE TRANSLATION SHOWCASE, Beijing, Yu Gong, Adobe, 23 Ap...
TAUS OPEN SOURCE MACHINE TRANSLATION SHOWCASE, Beijing, Yu Gong, Adobe, 23 Ap...TAUS OPEN SOURCE MACHINE TRANSLATION SHOWCASE, Beijing, Yu Gong, Adobe, 23 Ap...
TAUS OPEN SOURCE MACHINE TRANSLATION SHOWCASE, Beijing, Yu Gong, Adobe, 23 Ap...
 
Adobe Gaming Solutions by Tom Krcha
Adobe Gaming Solutions by Tom KrchaAdobe Gaming Solutions by Tom Krcha
Adobe Gaming Solutions by Tom Krcha
 
Oop2012 keynote Design Driven Development
Oop2012 keynote Design Driven DevelopmentOop2012 keynote Design Driven Development
Oop2012 keynote Design Driven Development
 
NLJUG: Content Management, Standards, Opensource & JCP
NLJUG: Content Management, Standards, Opensource & JCPNLJUG: Content Management, Standards, Opensource & JCP
NLJUG: Content Management, Standards, Opensource & JCP
 
Adobe AIR - Mobile Performance – Tips & Tricks
Adobe AIR - Mobile Performance – Tips & TricksAdobe AIR - Mobile Performance – Tips & Tricks
Adobe AIR - Mobile Performance – Tips & Tricks
 
Turbocharging php applications with zend server (workshop)
Turbocharging php applications with zend server (workshop)Turbocharging php applications with zend server (workshop)
Turbocharging php applications with zend server (workshop)
 
Node.js and Photoshop Generator - JSConf Asia 2013
Node.js and Photoshop Generator - JSConf Asia 2013Node.js and Photoshop Generator - JSConf Asia 2013
Node.js and Photoshop Generator - JSConf Asia 2013
 
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
Seminar: Embedding Optimization in Applications with MPL OptiMax - April 2012
 
PHP Apps on the Move - Migrating from In-House to Cloud
PHP Apps on the Move - Migrating from In-House to Cloud  PHP Apps on the Move - Migrating from In-House to Cloud
PHP Apps on the Move - Migrating from In-House to Cloud
 
Enhancing scalability with intelligent caching
Enhancing scalability with intelligent cachingEnhancing scalability with intelligent caching
Enhancing scalability with intelligent caching
 
The HaLVM: A Simple Platform for Simple Platforms
The HaLVM: A Simple Platform for Simple PlatformsThe HaLVM: A Simple Platform for Simple Platforms
The HaLVM: A Simple Platform for Simple Platforms
 
Turbocharging php applications with zend server
Turbocharging php applications with zend serverTurbocharging php applications with zend server
Turbocharging php applications with zend server
 
Adobe Summit EMEA 2012 : 16706 Optimise Mobile Experience
Adobe Summit EMEA 2012 : 16706 Optimise Mobile ExperienceAdobe Summit EMEA 2012 : 16706 Optimise Mobile Experience
Adobe Summit EMEA 2012 : 16706 Optimise Mobile Experience
 
High performance PHP: Scaling and getting the most out of your infrastructure
High performance PHP: Scaling and getting the most out of your infrastructureHigh performance PHP: Scaling and getting the most out of your infrastructure
High performance PHP: Scaling and getting the most out of your infrastructure
 
What's new in Juno
What's new in JunoWhat's new in Juno
What's new in Juno
 

More from Andy Hall

FITC2014 モダンなWeb
FITC2014 モダンなWebFITC2014 モダンなWeb
FITC2014 モダンなWebAndy Hall
 
ソーシャルゲーム市場とアドビFlash戦略
ソーシャルゲーム市場とアドビFlash戦略ソーシャルゲーム市場とアドビFlash戦略
ソーシャルゲーム市場とアドビFlash戦略Andy Hall
 
Flashまわりのでっかいゆめを見る
Flashまわりのでっかいゆめを見るFlashまわりのでっかいゆめを見る
Flashまわりのでっかいゆめを見るAndy Hall
 
AIRにおけるゲーム創り
AIRにおけるゲーム創りAIRにおけるゲーム創り
AIRにおけるゲーム創りAndy Hall
 
Flash/AIRの最新情報及びARMとの協業
Flash/AIRの最新情報及びARMとの協業Flash/AIRの最新情報及びARMとの協業
Flash/AIRの最新情報及びARMとの協業Andy Hall
 
ごはんとFlash 2010
ごはんとFlash 2010ごはんとFlash 2010
ごはんとFlash 2010Andy Hall
 
PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発Andy Hall
 
PhoneGapでハイブリッド開発 for Firefox OS
PhoneGapでハイブリッド開発 for Firefox OSPhoneGapでハイブリッド開発 for Firefox OS
PhoneGapでハイブリッド開発 for Firefox OSAndy Hall
 
PhoneGap クイック スタート ガイド
PhoneGap クイック スタート ガイドPhoneGap クイック スタート ガイド
PhoneGap クイック スタート ガイドAndy Hall
 
Adobe&HTML 札幌 - HTML5 Caravan
Adobe&HTML 札幌 - HTML5 CaravanAdobe&HTML 札幌 - HTML5 Caravan
Adobe&HTML 札幌 - HTML5 CaravanAndy Hall
 
モダンなWebとモダンな開発ツールの新ネタ
モダンなWebとモダンな開発ツールの新ネタモダンなWebとモダンな開発ツールの新ネタ
モダンなWebとモダンな開発ツールの新ネタAndy Hall
 
HTML5 Caravan 福岡・Adobe&HTMLのスライド
HTML5 Caravan 福岡・Adobe&HTMLのスライドHTML5 Caravan 福岡・Adobe&HTMLのスライド
HTML5 Caravan 福岡・Adobe&HTMLのスライドAndy Hall
 
dotFes - Web標準にEdgeを利かそう
dotFes - Web標準にEdgeを利かそうdotFes - Web標準にEdgeを利かそう
dotFes - Web標準にEdgeを利かそうAndy Hall
 
dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由
dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由
dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由Andy Hall
 
モダンなウェブをモダンなツールで創ろう!
モダンなウェブをモダンなツールで創ろう!モダンなウェブをモダンなツールで創ろう!
モダンなウェブをモダンなツールで創ろう!Andy Hall
 
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方Andy Hall
 
Link test mac
Link test macLink test mac
Link test macAndy Hall
 
Link test win
Link test winLink test win
Link test winAndy Hall
 
Adobe & HTML5
Adobe & HTML5Adobe & HTML5
Adobe & HTML5Andy Hall
 
Dragon bones ボーンアニメーション紹介&v2.0アップデート
Dragon bones ボーンアニメーション紹介&v2.0アップデートDragon bones ボーンアニメーション紹介&v2.0アップデート
Dragon bones ボーンアニメーション紹介&v2.0アップデートAndy Hall
 

More from Andy Hall (20)

FITC2014 モダンなWeb
FITC2014 モダンなWebFITC2014 モダンなWeb
FITC2014 モダンなWeb
 
ソーシャルゲーム市場とアドビFlash戦略
ソーシャルゲーム市場とアドビFlash戦略ソーシャルゲーム市場とアドビFlash戦略
ソーシャルゲーム市場とアドビFlash戦略
 
Flashまわりのでっかいゆめを見る
Flashまわりのでっかいゆめを見るFlashまわりのでっかいゆめを見る
Flashまわりのでっかいゆめを見る
 
AIRにおけるゲーム創り
AIRにおけるゲーム創りAIRにおけるゲーム創り
AIRにおけるゲーム創り
 
Flash/AIRの最新情報及びARMとの協業
Flash/AIRの最新情報及びARMとの協業Flash/AIRの最新情報及びARMとの協業
Flash/AIRの最新情報及びARMとの協業
 
ごはんとFlash 2010
ごはんとFlash 2010ごはんとFlash 2010
ごはんとFlash 2010
 
PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発
 
PhoneGapでハイブリッド開発 for Firefox OS
PhoneGapでハイブリッド開発 for Firefox OSPhoneGapでハイブリッド開発 for Firefox OS
PhoneGapでハイブリッド開発 for Firefox OS
 
PhoneGap クイック スタート ガイド
PhoneGap クイック スタート ガイドPhoneGap クイック スタート ガイド
PhoneGap クイック スタート ガイド
 
Adobe&HTML 札幌 - HTML5 Caravan
Adobe&HTML 札幌 - HTML5 CaravanAdobe&HTML 札幌 - HTML5 Caravan
Adobe&HTML 札幌 - HTML5 Caravan
 
モダンなWebとモダンな開発ツールの新ネタ
モダンなWebとモダンな開発ツールの新ネタモダンなWebとモダンな開発ツールの新ネタ
モダンなWebとモダンな開発ツールの新ネタ
 
HTML5 Caravan 福岡・Adobe&HTMLのスライド
HTML5 Caravan 福岡・Adobe&HTMLのスライドHTML5 Caravan 福岡・Adobe&HTMLのスライド
HTML5 Caravan 福岡・Adobe&HTMLのスライド
 
dotFes - Web標準にEdgeを利かそう
dotFes - Web標準にEdgeを利かそうdotFes - Web標準にEdgeを利かそう
dotFes - Web標準にEdgeを利かそう
 
dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由
dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由
dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由
 
モダンなウェブをモダンなツールで創ろう!
モダンなウェブをモダンなツールで創ろう!モダンなウェブをモダンなツールで創ろう!
モダンなウェブをモダンなツールで創ろう!
 
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
 
Link test mac
Link test macLink test mac
Link test mac
 
Link test win
Link test winLink test win
Link test win
 
Adobe & HTML5
Adobe & HTML5Adobe & HTML5
Adobe & HTML5
 
Dragon bones ボーンアニメーション紹介&v2.0アップデート
Dragon bones ボーンアニメーション紹介&v2.0アップデートDragon bones ボーンアニメーション紹介&v2.0アップデート
Dragon bones ボーンアニメーション紹介&v2.0アップデート
 

Recently uploaded

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 

Recently uploaded (20)

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 

Flash performance tuning (EN)

  • 1. 60fps or Bust! Flash Game Performance Tuning from A to Z Andy Hall Adobe Japan © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 2. Andy Hall アンディ ホール Game Evangelist ゲームエバンジェリスト Adobe Japan アドビ システムズ 株式会社 @fenomas © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 3. Agenda • Overview • Tuning ActionScript 3.0 • Flash Player Internals • Rendering Optimization • Upcoming topics © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 4. Principles of Optimization “Premature optimization is the root of all evil” Donald Knuth (早すぎる最適化は諸悪の根源) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 5. Optimization Flow Build for Architect for Optimize! speed and performance (only the slow parts) correctness © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 6. Metrics To optimize you need measurable metrics! • FPS • Memory usage • CPU usage • Bandwidth? • Battery usage? • etc... © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 7. Profiling Now: Soon: Flash Builder 4.6 Profiler Codename “Monocle” © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 8. TUNING ACTIONSCRIPT © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 9. Tuning ActionScript 3.0 Caveats: • Often not as important as rendering • Beware of low-impact “tips and tricks” © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 10. The Basics • Always use AS3.0 Always! • Type everything • Prefer Vector.<type> over Array or Dictionary Only in • Prefer String methods over RegExp critical areas • Be careful with E4X and XML ( ) • Callbacks are faster than Event © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 11. Pooling Instantiation can be expensive! Pool or reuse objects to avoid the cost of frequent creation and collection • Static temps • Object pooling © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 12. Function Calls Function calls can be expensive too. Keep a shallow call stack and avoid recursion: © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 13. Garbage Collections Know your GC! • Flash’s GC does both reference counting and mark-sweep. (If you want to tune memory usage, you need to understand these!) • Use Monocle to find if GC is firing too often • Pooling/reuse makes GC collection less frequent • For large collections, prefer literals (String, int..) or plain objects over complex objects (Sprite, Rectangle..) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 14. Smart GC Tell Flash when to trigger a GC! Call this between levels, when the game pauses, etc. Flash’s GC marks incrementally, and this command tells it to finish marking and do a collection if a GC was already imminent. The argument specifies how long you’re willing to wait for a GC: imminence=0.99; // GC if ready now imminence=0.01; // GC even if you need to pause a while © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 15. FLASH INTERNALS © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 16. The big picture // Flash’s internal loop (simplified) while() { sleep until (nextEvent OR externalEvent) if ( various events pending ) { handleEvents(); // handles Timer events, // fills audio/video buffers } if ( time for next SWF frame ) { parseSWFFrame(); executeActionScript(); } if ( screen needs update ) { updateScreen(); } } © 2012 Adobe Systems Incorporated. All Rights Reserved. Gory details: http://blog.kaourantin.net/?p=82
  • 17. Flash’s Internal Loop Handle Next SWF frame various Rendering events Execute scripts sleep © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 18. Point: Because of this, most recurring scripts should be handled in Event.ENTER_FRAME ! ENTER_FRAME Handle Next SWF frame external Rendering events Execute scripts sleep © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 19. The Display List Vector shapes Video Bitmap Display List © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 20. Dirty Rectangles “Dirty” (redrawn) (frame update) Display List © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 21. Display Planes Vector 3D Video Display List © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 22. Drawing Modes wmode (Flash), renderMode (AIR) direct GPU gpu CPU cpu Browser Flash Renderer transparent opaque © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 23. RENDERING OPTIMIZATION © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 24. Rendering Basics The basics: • Keep a shallow display list. Reason: everything in that rectangle is getting redrawn every frame! Display List © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 25. Rendering Basics More basics: • Understand that certain features are just heavy! • Bitmap Effects (shadow, glow, emboss...) • Masks (inherently vector-based) • Alpha channels • Blend modes (add, multiply...) and even... • Embedded fonts (especially Japanese!) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 26. Rendering Basics More basics: • Keep extraneous stuff off the stage • Use the right framerate • Simplify vector shapes © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 27. Stage Settings • StageQuality.LOW: Lower-quality vector shapes. Never anti-alias, never smooth bitmaps. • StageQuality.MEDIUM: Better vectors. Some anti-aliasing but no bitmaps smoothing. Default value for mobile devices. • StageQuality.HIGH: Always uses anti-aliasing. Uses smoothing on bitmaps depending on whether the SWF is animating. Default value on desktop PCs. • StageQuality.BEST: Best quality. Always anti-alias, always smooth bitmaps. © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 28. Rendering Internals Understand rasterization and the conditions for cached bitmaps to get redrawn! (Designers need to know this too!) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 29. Bitmap Caching • Lets complex assets be rasterized once instead of every frame. • Turned on automatically if you use bitmap effects Caching is the single most important thing to understand for tuning display list content! © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 30. Bitmap Caching foo.cacheAsBitmap = true; (redrawn) (cached) foo.cacheAsBitmapMatrix = new Matrix(); (cached) (drawn with GPU) (only in AIR!) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 31. Bitmap Caching Use Monocle to see what’s being cached © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 32. Rendering One more technique: Adjust visual effects at runtime! 500 particles 200 particles © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 33. RENDERING MODELS © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 34. Rendering Models There are four main rendering models in use today for Flash games. 1. Display List 2. GPU mode 3. Blitting 4. Stage3D © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 35. 1. Display List Rendering • Plain vanilla flash content, made in Flash Pro • Easiest to build – worst performance. • Suitable for prototypes and light desktop content. Bad for mobile! (because the GPU is not used) • Your key tuning technique will be bitmap caching. © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 36. 2. GPU Mode • GPU mode is a publish setting available for AIR apps on devices (Android and iOS) • When selected, Flash uses the GPU – vectors and cached surfaces are rendered through hardware. • Can be very powerful with careful, correct use of movieclip.cacheAsBitmapMatrix • Powerful technique today, but not recommended for new/future projects © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 37. GPU Mode Example Monster Planet SMASH! (GREE) More info: © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 38. 3. Blitting • Blitting refers to putting a Bitmap object on the stage for your game area and manually drawing contents into it with BitmapData.copyPixels(). • Hence, you manage your own rendering, caching, etc. • Can be very fast in certain restricted cases • Does not scale up for retina/hi-res devices! © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 39. 4. Stage3D © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 40. 4. Stage3D • New feature from Flash 11.0, allowing ActionScript to load shader programs directly to the GPU. • Based on AGAL (Adobe Graphics Assembly Language) • AGAL looks like this: m44 op, va0, vc0 dp4 op.x, va0, vc0 dp4 op.y, va0, vc1 • You probably want dp4 op.z, va0, vc2 dp4 op.w, va0, vc3 to use a 2D/3D library! m44 op, va0, vc0 mov v0, va1 (It’s dangerous to go alone!) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 41. 4. Stage3D (Take this!) • Two officially supported libraries: • Starling (2D) • Away3D • And many, many more... N2D2 Genome2D © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 42. Stage3D examples © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 43. NEW / FUTURE TOPICS © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 44. AS3 Workers create Main Background Worker Worker MessageChannel (regular API (some Flash player) limitations) mutex Shared memory © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 45. AS3 Workers create Main Background Worker Worker MessageChannel (regular API (some Flash player) limitations) mutex Shared memory © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 46. ASC2.0 • All new ActionScript compiler! • Included with the Flash Builder 4.7 preview: http://labs.adobe.com/technologies/flashbuilder4-7/ • Key features: • Faster compiles! More optimized bytecode! • Error messages localized to JA, FR, ZH • Inline functions, get/setters (when possible) (use –inline arg) • goto statement (!?!?!?) • Details: http://www.bytearray.org/?p=4789 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 47. Longer term Project Better Better Monocle! Flash Pro! ActionScript! © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 48. Thanks! andhall@adobe.com @fenomas © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 49. © 2012 Adobe Systems Incorporated. All Rights Reserved.