SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
60fpsへの道:
                                      Flashゲームにおける
                                  パフォーマンスチューニングの 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

                                         •        最適化の全体的な話
                                         •        ActionScript 3.0 最適化
                                         •        Flash Player 内部設計
                                         •        レンダリング最適化
                                         •        今後のトピック


© 2012 Adobe Systems Incorporated. All Rights Reserved.
最適化の原則


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


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


© 2012 Adobe Systems Incorporated. All Rights Reserved.
最適化の流れ



        パフォーマンス                                            効率よく、      最適化
        向けの設計作り                                            迅速に開発   (ボトルネックのみ)




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Metrics

          最適化の前には測定基準が必要。

                                                          •   FPS
                                                          •   メモリー使用量
                                                          •   CPU 使用率
                                                          •   Bandwidth?
                                                          •   バッテリー消費
                                                          •   etc...

© 2012 Adobe Systems Incorporated. All Rights Reserved.
プロファイリング
                                           現在:                   近未来:
                   Flash Builder 4.6 プロファイラー                   コードネーム「モノクル」




© 2012 Adobe Systems Incorporated. All Rights Reserved.
ACTIONSCRIPT 最適化


© 2012 Adobe Systems Incorporated. All Rights Reserved.
ActionScript 3.0 の最適化

          注意:

          • レンダーリングの方が
            ネックの場合が多い



          • 良く見る最適化の
            「コツ」は多くの場合
            無視しましょう

© 2012 Adobe Systems Incorporated. All Rights Reserved.
基本の基本

                                              • AS3.0 は必須
    常に!
                                              • すべての変数に型付け
                                              • Array、Dictionaryより
                                                Vector.<type>
    ネック                                       • RegExpよりStringメソッド
    の場合                                       • E4X、XML は要注意
                                                (                  )
                                              • イベントよりコールバック

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Pooling
          インスタンス化のコストが高い!
          オブジェクトのプール、再利用で、インスタンス化と
          処理のコストを抑える
             • Static temps




                                • オブジェクト pooling




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Function コール
          ファンクションコールにもコストそこそこ。
          コールスタックを浅く、再帰的定義を避けよう。




© 2012 Adobe Systems Incorporated. All Rights Reserved.
ガベージコレクション

          GCを良く知ろう!


          • Flash のGCは参照カウント、 マーク・スイープを
            両方実装している。
                  (メモリー使用量の最適化には上記の理解が絶対条件!)
          • モノクルを利用して、GC発生の頻度をチェックしよう。
          • プール、再利用してGCの発生を抑えよう。
          • リテラル(String、intなど)はヌルにするだけで処理
            が済むので、大量データをリテラルとして扱おう。

© 2012 Adobe Systems Incorporated. All Rights Reserved.
GCをスマートに
          GCの都合の良いタイミングをFlashに教えよう。




          画面切り替え、ポーズ画面等で上記を呼ぼう。

          FlashのGC処理の準備は徐々に進んでいる。上記コマンドでは、
          今のタイミングで処理するようにFlashに指示する。
          因数は緊急性を表す。
             imminence=0.99; // すぐに処理ができれば発生させる
             imminence=0.01; // 処理の準備がまだ多少残っても発生させる



© 2012 Adobe Systems Incorporated. All Rights Reserved.
参考文献:




            「ActionScript 3.0 パフォーマンスチューニング」
                             (野中 文雄 著)
© 2012 Adobe Systems Incorporated. All Rights Reserved.
FLASH 内部設計


© 2012 Adobe Systems Incorporated. All Rights Reserved.
全体像
                     // フラッシュの内部ループ(単純的に)
                     while() {
                          sleep until (nextEvent OR externalEvent)
                          if ( various events pending ) {
                                handleEvents();
                                // Timerイベント、
                                // audio/video バッファー等を処理する
                          }
                          if ( time for next SWF frame ) {
                                parseSWFFrame();
                                executeActionScript();
                          }
                          if ( screen needs update ) {
                                updateScreen();
                          }
                     }

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Flash の内部ループ



                                                               次のSWF
                 外部からの                                       フレームを処理     レンダー
                イベント処理                                                   (表示)
                                                             スクリプト実行


                                                               sleep




© 2012 Adobe Systems Incorporated. All Rights Reserved.
ポイント!
                                    定期的な処理は基本的に
                                   Event.ENTER_FRAME で!

                                                                    ENTER_FRAME


                                                            次のSWF
                 外部からの                                    フレームを処理            レンダー
                イベント処理                                                       (表示)
                                                          スクリプト実行

                                                            sleep

© 2012 Adobe Systems Incorporated. All Rights Reserved.
表示リスト


                                                                         Vector
                                                                         shapes


                                                                     Video
                                                                             Bitmap

                                                                  Display List




© 2012 Adobe Systems Incorporated. All Rights Reserved.
再描画領域
                                                                      “Dirty”
                                                                   (再描画される)




                                                           フレーム        Display List
                                                          アップデート




© 2012 Adobe Systems Incorporated. All Rights Reserved.
表示プレーン



                                                                         Vector
                                                                   3D
                                                                              Video

                                                               Display List




© 2012 Adobe Systems Incorporated. All Rights Reserved.
描画モード

          wmode (Flash )
          renderMode ( AIR)


                                      direct
                                                                     GPU

                                                          gpu              CPU

                                                            cpu             ブラウザー
                    Flash
                  レンダリング
                                                            transparent
                                                            opaque
© 2012 Adobe Systems Incorporated. All Rights Reserved.
レンダリング 最適化


© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering 基本


          • 表示リストを浅くしよう。

                  理由:再描画領域内
                  のすべてが
                  毎フレーム完全に
                  処理されるため                                            Display List




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering 基本

          ある表示機能は物理的に重い。
          気を付けながら使おう。
          • ビットマップエフェクト
            (グロー、ドロップシャドー等)
          • マスク(ベクターベースだし)
          • アルファーチャンネル・半透明
          • ブレンドモード(add、multiply等)
          • 組み込みフォント(特に日本語!)

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering 基本

          • 用が済んだものはStageから消去
          • 適切なフレームレートを
          • ベクターシェイプを簡単化しよう




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Stage設定
          • 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 内部設計

          • ラスタライズ化の条件、
            ビットマップキャッシュは
            デザイナーさんも含めて理解しよう!




© 2012 Adobe Systems Incorporated. All Rights Reserved.
Bitmap Caching
          • 複雑なアセットを
            一度ラスタライズして
            後はビットマップが
            代わりに使われる。

          • ビットマップエフェクト、ブレンドモード等を
            利用する場合に自動的に適用

                  一般的なFlashコンテンツの最適化には、
                       これは何より大事!
© 2012 Adobe Systems Incorporated. All Rights Reserved.
再ラスタライズの条件
          foo.cacheAsBitmap = true;


                                                          キャッシュ      再ラスタライズ
                                                           のまま


          foo.cacheAsBitmapMatrix = new Matrix();

                                                                  キャッシュのまま
                                                                  GPUで描画される
                                                                  AIRアプリのみ!



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




                          キャッシュ状態をモノクルで確認しよう。
© 2012 Adobe Systems Incorporated. All Rights Reserved.
Rendering 最適化
          最後の一言:
             現場のスペックに合わせよう!




                                                          500 particles   200 particles

© 2012 Adobe Systems Incorporated. All Rights Reserved.
レンダリング モデル


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

                                              現代のゲームに、
                                           レンダーモデルは主に4つ:

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

© 2012 Adobe Systems Incorporated. All Rights Reserved.
1.表示リストモデル

         • Flash Proアニーメータが作る、タイムライン
                 アニーメーションベースの一般的なコンテンツ

         • 作りやすい。パフォーマンスは低い。

         • PC向けの軽いコンテンツには十分に使える。
                 モバイルにはNG。(GPU一切使われないし)

         • 最適化のキーテクニックはビットマップ
                 キャッシュである。
© 2012 Adobe Systems Incorporated. All Rights Reserved.
2.GPU Mode

          • AIRアプリのパブリッシュ設定である。
                  Android、iOSにも対応する。

          • 設定の場合、ベクターやビットマップをGPU経由で
                  描画しようとする。

          • movieclip.cacheAsBitmapMatrix を正しく、注意深く
                  使えば、かなりパフォーマンスが出る。

          • 現代までは有力なモデルだが、今後の作品・
                  新プロジェクトにはおすすめできない。

© 2012 Adobe Systems Incorporated. All Rights Reserved.
GPU Mode 事例
          モンスタープラネットSMASH!

          (GREE)




              参考:




© 2012 Adobe Systems Incorporated. All Rights Reserved.
3.Blitting(ブリット)

          • StageにBitmapを置いて、自分で扱うビットマッ
                  プデータをBitmapData.copyPixels()で
                  ゲームエリアに手動的に描く。

          • つまり、レンダリングを完全に自分で担当。

          • 固い条件が満たされる場合、効果的である。

          • 解像度の高い(Retina)画面には
                  スケールしないので寿命が…

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




© 2012 Adobe Systems Incorporated. All Rights Reserved.
4.Stage3D
          • Flash 11.0からの新機能。ActionScriptから
                  シェーダープログラムを直接GPUに送れる。

          •         AGAL (Adobe Graphics Assembly Language) を利用する

          • AGAL とはこんな感じ:                                      m44   op, va0, vc0
                                                               dp4   op.x, va0, vc0
                                                               dp4   op.y, va0, vc1
          • 一般的な開発者には                                          dp4   op.z, va0, vc2
                                                               dp4   op.w, va0, vc3
                  ライブラリーが必要!                                   m44   op, va0, vc0
                                                               mov   v0, va1
                                                               (ヒトリデハキケンジャ!)
© 2012 Adobe Systems Incorporated. All Rights Reserved.
Stage3D ライブラリー
                                                          ( コレヲ サズケヨウ!)

          • オフィシャルライブラリー (free, open source):

                                • Starling (2D)

                                • Away3D



          • ニーズによって他にも様々…


              N2D2
                                              Genome2D

© 2012 Adobe Systems Incorporated. All Rights Reserved.
Stage3D 事例




© 2012 Adobe Systems Incorporated. All Rights Reserved.
今後のトピック


© 2012 Adobe Systems Incorporated. All Rights Reserved.
AS3 ワーカー

                                                                作成

                                メイン
                                                                            バックグラウンド
                               ワーカー                                           ワーカー
                                                           MessageChannel

                                (既存                             API          (制限付き)
                             Flash Player)


                                                               mutex



                                                           共用メモリー

© 2012 Adobe Systems Incorporated. All Rights Reserved.
AS3 ワーカー

                                                                作成

                                メイン
                                                                            バックグラウンド
                               ワーカー                                           ワーカー
                                                           MessageChannel

                                (既存                             API          (制限付き)
                             Flash Player)


                                                               mutex



                                                           共用メモリー

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




                              新コンパ                        プロジェクト   Flash Proを   ActionScript
                              イラー!                         モノクル    より進化!        の次版・・?




© 2012 Adobe Systems Incorporated. All Rights Reserved.
ご清聴ありがとうございました。




                                                          andhall@adobe.com
                                                          @fenomas

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

Mais conteúdo relacionado

Mais procurados

AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてFixstars Corporation
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
BluemixとIBM DevOps Servicesで始めるアプリケーション開発
BluemixとIBM DevOps Servicesで始めるアプリケーション開発BluemixとIBM DevOps Servicesで始めるアプリケーション開発
BluemixとIBM DevOps Servicesで始めるアプリケーション開発IBMソリューション
 
Bluemixではじめるアナリティクス
BluemixではじめるアナリティクスBluemixではじめるアナリティクス
BluemixではじめるアナリティクスIBMソリューション
 
Bluemixの基本を知る -仕組みと使い方-
Bluemixの基本を知る -仕組みと使い方-Bluemixの基本を知る -仕組みと使い方-
Bluemixの基本を知る -仕組みと使い方-IBMソリューション
 
経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005Makoto Shimizu
 
IBM Operational Decision Managerによるビジネスルール開発
IBM Operational Decision Managerによるビジネスルール開発IBM Operational Decision Managerによるビジネスルール開発
IBM Operational Decision Managerによるビジネスルール開発Satsuki Funaki
 

Mais procurados (9)

AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
BluemixとIBM DevOps Servicesで始めるアプリケーション開発
BluemixとIBM DevOps Servicesで始めるアプリケーション開発BluemixとIBM DevOps Servicesで始めるアプリケーション開発
BluemixとIBM DevOps Servicesで始めるアプリケーション開発
 
Bluemixの基本を知る -全体像-
Bluemixの基本を知る -全体像-Bluemixの基本を知る -全体像-
Bluemixの基本を知る -全体像-
 
Bluemixではじめるアナリティクス
BluemixではじめるアナリティクスBluemixではじめるアナリティクス
Bluemixではじめるアナリティクス
 
Bluemixの基本を知る -仕組みと使い方-
Bluemixの基本を知る -仕組みと使い方-Bluemixの基本を知る -仕組みと使い方-
Bluemixの基本を知る -仕組みと使い方-
 
経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005経営を支えるIT部門実現の記録2005
経営を支えるIT部門実現の記録2005
 
IBM Operational Decision Managerによるビジネスルール開発
IBM Operational Decision Managerによるビジネスルール開発IBM Operational Decision Managerによるビジネスルール開発
IBM Operational Decision Managerによるビジネスルール開発
 
Bluemixと既存システムとの連携
Bluemixと既存システムとの連携Bluemixと既存システムとの連携
Bluemixと既存システムとの連携
 

Semelhante a CEDEC2012 Flashゲームにおけるパフォーマンスチューニングの A to Z

スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果Koichiro Sumi
 
AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)
AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)
AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)Amazon Web Services Japan
 
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方Andy Hall
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
モダンなWebとモダンな開発ツールの新ネタ
モダンなWebとモダンな開発ツールの新ネタモダンなWebとモダンな開発ツールの新ネタ
モダンなWebとモダンな開発ツールの新ネタAndy Hall
 
[AWSマイスターシリーズ] Amazon DynamoDB
[AWSマイスターシリーズ] Amazon DynamoDB[AWSマイスターシリーズ] Amazon DynamoDB
[AWSマイスターシリーズ] Amazon DynamoDBAmazon Web Services Japan
 
PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発Andy Hall
 
デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013
デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013
デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013Tsuyoshi Nakao
 
AWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライト
AWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライトAWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライト
AWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライトServerworks Co.,Ltd.
 
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~Atsushi Ono
 
MySQLインストールのお作法
MySQLインストールのお作法MySQLインストールのお作法
MySQLインストールのお作法Meiji Kimura
 
更に進化するCSSの表現力と 新しいWebツール [Reloaded]
更に進化するCSSの表現力と 新しいWebツール [Reloaded]更に進化するCSSの表現力と 新しいWebツール [Reloaded]
更に進化するCSSの表現力と 新しいWebツール [Reloaded]Keisuke Todoroki
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]David Buck
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~じゅん なかざ
 
2013/12/05 Serverworks Seminar 小室分
2013/12/05 Serverworks Seminar 小室分2013/12/05 Serverworks Seminar 小室分
2013/12/05 Serverworks Seminar 小室分Serverworks Co.,Ltd.
 
dotFes - Web標準にEdgeを利かそう
dotFes - Web標準にEdgeを利かそうdotFes - Web標準にEdgeを利かそう
dotFes - Web標準にEdgeを利かそうAndy Hall
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AzareaCluster
 
[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorksAmazon Web Services Japan
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例agileware_jp
 

Semelhante a CEDEC2012 Flashゲームにおけるパフォーマンスチューニングの A to Z (20)

スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
 
AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)
AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)
AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)
 
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
モダンなWebとモダンな開発ツールの新ネタ
モダンなWebとモダンな開発ツールの新ネタモダンなWebとモダンな開発ツールの新ネタ
モダンなWebとモダンな開発ツールの新ネタ
 
[AWSマイスターシリーズ] Amazon DynamoDB
[AWSマイスターシリーズ] Amazon DynamoDB[AWSマイスターシリーズ] Amazon DynamoDB
[AWSマイスターシリーズ] Amazon DynamoDB
 
Adobe Anywhere for Video
Adobe Anywhere for VideoAdobe Anywhere for Video
Adobe Anywhere for Video
 
PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発PhoneGapとハイブリッド開発
PhoneGapとハイブリッド開発
 
デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013
デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013
デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013
 
AWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライト
AWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライトAWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライト
AWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライト
 
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
 
MySQLインストールのお作法
MySQLインストールのお作法MySQLインストールのお作法
MySQLインストールのお作法
 
更に進化するCSSの表現力と 新しいWebツール [Reloaded]
更に進化するCSSの表現力と 新しいWebツール [Reloaded]更に進化するCSSの表現力と 新しいWebツール [Reloaded]
更に進化するCSSの表現力と 新しいWebツール [Reloaded]
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
 
2013/12/05 Serverworks Seminar 小室分
2013/12/05 Serverworks Seminar 小室分2013/12/05 Serverworks Seminar 小室分
2013/12/05 Serverworks Seminar 小室分
 
dotFes - Web標準にEdgeを利かそう
dotFes - Web標準にEdgeを利かそうdotFes - Web標準にEdgeを利かそう
dotFes - Web標準にEdgeを利かそう
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
 
[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks[AWSマイスターシリーズ] AWS OpsWorks
[AWSマイスターシリーズ] AWS OpsWorks
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例
 

Último

UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (9)

UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

CEDEC2012 Flashゲームにおけるパフォーマンスチューニングの A to Z

  • 1. 60fpsへの道: Flashゲームにおける パフォーマンスチューニングの 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 • 最適化の全体的な話 • ActionScript 3.0 最適化 • Flash Player 内部設計 • レンダリング最適化 • 今後のトピック © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 4. 最適化の原則 “Premature optimization is the root of all evil” Donald Knuth (早すぎる最適化は諸悪の根源) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 5. 最適化の流れ パフォーマンス 効率よく、 最適化 向けの設計作り 迅速に開発 (ボトルネックのみ) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 6. Metrics 最適化の前には測定基準が必要。 • FPS • メモリー使用量 • CPU 使用率 • Bandwidth? • バッテリー消費 • etc... © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 7. プロファイリング 現在: 近未来: Flash Builder 4.6 プロファイラー コードネーム「モノクル」 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 8. ACTIONSCRIPT 最適化 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 9. ActionScript 3.0 の最適化 注意: • レンダーリングの方が ネックの場合が多い • 良く見る最適化の 「コツ」は多くの場合 無視しましょう © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 10. 基本の基本 • AS3.0 は必須 常に! • すべての変数に型付け • Array、Dictionaryより Vector.<type> ネック • RegExpよりStringメソッド の場合 • E4X、XML は要注意 ( ) • イベントよりコールバック © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 11. Pooling インスタンス化のコストが高い! オブジェクトのプール、再利用で、インスタンス化と 処理のコストを抑える • Static temps • オブジェクト pooling © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 12. Function コール ファンクションコールにもコストそこそこ。 コールスタックを浅く、再帰的定義を避けよう。 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 13. ガベージコレクション GCを良く知ろう! • Flash のGCは参照カウント、 マーク・スイープを 両方実装している。 (メモリー使用量の最適化には上記の理解が絶対条件!) • モノクルを利用して、GC発生の頻度をチェックしよう。 • プール、再利用してGCの発生を抑えよう。 • リテラル(String、intなど)はヌルにするだけで処理 が済むので、大量データをリテラルとして扱おう。 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 14. GCをスマートに GCの都合の良いタイミングをFlashに教えよう。 画面切り替え、ポーズ画面等で上記を呼ぼう。 FlashのGC処理の準備は徐々に進んでいる。上記コマンドでは、 今のタイミングで処理するようにFlashに指示する。 因数は緊急性を表す。 imminence=0.99; // すぐに処理ができれば発生させる imminence=0.01; // 処理の準備がまだ多少残っても発生させる © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 15. 参考文献: 「ActionScript 3.0 パフォーマンスチューニング」 (野中 文雄 著) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 16. FLASH 内部設計 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 17. 全体像 // フラッシュの内部ループ(単純的に) while() { sleep until (nextEvent OR externalEvent) if ( various events pending ) { handleEvents(); // Timerイベント、 // audio/video バッファー等を処理する } if ( time for next SWF frame ) { parseSWFFrame(); executeActionScript(); } if ( screen needs update ) { updateScreen(); } } © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 18. Flash の内部ループ 次のSWF 外部からの フレームを処理 レンダー イベント処理 (表示) スクリプト実行 sleep © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 19. ポイント! 定期的な処理は基本的に Event.ENTER_FRAME で! ENTER_FRAME 次のSWF 外部からの フレームを処理 レンダー イベント処理 (表示) スクリプト実行 sleep © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 20. 表示リスト Vector shapes Video Bitmap Display List © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 21. 再描画領域 “Dirty” (再描画される) フレーム Display List アップデート © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 22. 表示プレーン Vector 3D Video Display List © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 23. 描画モード wmode (Flash ) renderMode ( AIR) direct GPU gpu CPU cpu ブラウザー Flash レンダリング transparent opaque © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 24. レンダリング 最適化 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 25. Rendering 基本 • 表示リストを浅くしよう。 理由:再描画領域内 のすべてが 毎フレーム完全に 処理されるため Display List © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 26. Rendering 基本 ある表示機能は物理的に重い。 気を付けながら使おう。 • ビットマップエフェクト (グロー、ドロップシャドー等) • マスク(ベクターベースだし) • アルファーチャンネル・半透明 • ブレンドモード(add、multiply等) • 組み込みフォント(特に日本語!) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 27. Rendering 基本 • 用が済んだものはStageから消去 • 適切なフレームレートを • ベクターシェイプを簡単化しよう © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 28. Stage設定 • 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.
  • 29. Rendering 内部設計 • ラスタライズ化の条件、 ビットマップキャッシュは デザイナーさんも含めて理解しよう! © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 30. Bitmap Caching • 複雑なアセットを 一度ラスタライズして 後はビットマップが 代わりに使われる。 • ビットマップエフェクト、ブレンドモード等を 利用する場合に自動的に適用 一般的なFlashコンテンツの最適化には、 これは何より大事! © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 31. 再ラスタライズの条件 foo.cacheAsBitmap = true; キャッシュ 再ラスタライズ のまま foo.cacheAsBitmapMatrix = new Matrix(); キャッシュのまま GPUで描画される AIRアプリのみ! © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 32. Bitmap Caching キャッシュ状態をモノクルで確認しよう。 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 33. Rendering 最適化 最後の一言: 現場のスペックに合わせよう! 500 particles 200 particles © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 34. レンダリング モデル © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 35. Rendering Models 現代のゲームに、 レンダーモデルは主に4つ: 1. Display List 2. GPU mode 3. Blitting 4. Stage3D © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 36. 1.表示リストモデル • Flash Proアニーメータが作る、タイムライン アニーメーションベースの一般的なコンテンツ • 作りやすい。パフォーマンスは低い。 • PC向けの軽いコンテンツには十分に使える。 モバイルにはNG。(GPU一切使われないし) • 最適化のキーテクニックはビットマップ キャッシュである。 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 37. 2.GPU Mode • AIRアプリのパブリッシュ設定である。 Android、iOSにも対応する。 • 設定の場合、ベクターやビットマップをGPU経由で 描画しようとする。 • movieclip.cacheAsBitmapMatrix を正しく、注意深く 使えば、かなりパフォーマンスが出る。 • 現代までは有力なモデルだが、今後の作品・ 新プロジェクトにはおすすめできない。 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 38. GPU Mode 事例 モンスタープラネットSMASH! (GREE) 参考: © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 39. 3.Blitting(ブリット) • StageにBitmapを置いて、自分で扱うビットマッ プデータをBitmapData.copyPixels()で ゲームエリアに手動的に描く。 • つまり、レンダリングを完全に自分で担当。 • 固い条件が満たされる場合、効果的である。 • 解像度の高い(Retina)画面には スケールしないので寿命が… © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 40. 4. Stage3D © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 41. 4.Stage3D • Flash 11.0からの新機能。ActionScriptから シェーダープログラムを直接GPUに送れる。 • AGAL (Adobe Graphics Assembly Language) を利用する • AGAL とはこんな感じ: m44 op, va0, vc0 dp4 op.x, va0, vc0 dp4 op.y, va0, vc1 • 一般的な開発者には dp4 op.z, va0, vc2 dp4 op.w, va0, vc3 ライブラリーが必要! m44 op, va0, vc0 mov v0, va1 (ヒトリデハキケンジャ!) © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 42. Stage3D ライブラリー ( コレヲ サズケヨウ!) • オフィシャルライブラリー (free, open source): • Starling (2D) • Away3D • ニーズによって他にも様々… N2D2 Genome2D © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 43. Stage3D 事例 © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 44. 今後のトピック © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 45. AS3 ワーカー 作成 メイン バックグラウンド ワーカー ワーカー MessageChannel (既存 API (制限付き) Flash Player) mutex 共用メモリー © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 46. AS3 ワーカー 作成 メイン バックグラウンド ワーカー ワーカー MessageChannel (既存 API (制限付き) Flash Player) mutex 共用メモリー © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 47. Longer term 新コンパ プロジェクト Flash Proを ActionScript イラー! モノクル より進化! の次版・・? © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 48. ご清聴ありがとうございました。 andhall@adobe.com @fenomas © 2012 Adobe Systems Incorporated. All Rights Reserved.
  • 49. © 2012 Adobe Systems Incorporated. All Rights Reserved.