SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
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.

Contenu connexe

Similaire à 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
 

Similaire à 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
 

Plus de 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
 

Plus de 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アップデート
 

Dernier

Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingGDSC PJATK
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIUdaiappa Ramachandran
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServiceRenan Moreira de Oliveira
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataSafe Software
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 

Dernier (20)

Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AI
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial DataCloud Revolution: Exploring the New Wave of Serverless Spatial Data
Cloud Revolution: Exploring the New Wave of Serverless Spatial Data
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 

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.