SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
CEDEC2012 - Flashコンテンツの最適化
Report
Andy Hall
Follow
Adobe
Aug. 20, 2012
•
0 likes
•
3,241 views
1
of
49
CEDEC2012 - Flashコンテンツの最適化
Aug. 20, 2012
•
0 likes
•
3,241 views
Download Now
Download to read offline
Report
Technology
60fpsへの道:Flashゲームにおけるパフォーマンスチューニングの A to Z
Andy Hall
Follow
Adobe
Recommended
第20回「事件は現場で起きている!IBMクラウド”CoDサービス”実運用の現場より、IBM Systems Softwareを活用した運用自動化のご紹介」...
System x 部 (生!) : しすなま! @ Lenovo Enterprise Solutions Ltd.
1.9K views
•
58 slides
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
Fixstars Corporation
179 views
•
44 slides
Solaris 11 ディープダイブセミナー インストール編
SolarisJP
1.6K views
•
37 slides
Itm_for_virtualservers_overview_public_20110627
Yuhki Hanada
313 views
•
44 slides
Cloudera Manager 4 の紹介
Cloudera Japan
4K views
•
94 slides
クラウド活用で実現する、開発・保守の効率化
Hiroshi Koyama
1.2K views
•
34 slides
More Related Content
What's hot
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
Fixstars Corporation
1.1K views
•
43 slides
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
Fixstars Corporation
1.6K views
•
62 slides
BluemixとIBM DevOps Servicesで始めるアプリケーション開発
IBMソリューション
7.3K views
•
43 slides
Bluemixの基本を知る -全体像-
IBMソリューション
14K views
•
69 slides
Bluemixではじめるアナリティクス
IBMソリューション
6.2K views
•
32 slides
Bluemixの基本を知る -仕組みと使い方-
IBMソリューション
7.5K views
•
59 slides
What's hot
(9)
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
Fixstars Corporation
•
1.1K views
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
Fixstars Corporation
•
1.6K views
BluemixとIBM DevOps Servicesで始めるアプリケーション開発
IBMソリューション
•
7.3K views
Bluemixの基本を知る -全体像-
IBMソリューション
•
14K views
Bluemixではじめるアナリティクス
IBMソリューション
•
6.2K views
Bluemixの基本を知る -仕組みと使い方-
IBMソリューション
•
7.5K views
経営を支えるIT部門実現の記録2005
Makoto Shimizu
•
3.2K views
IBM Operational Decision Managerによるビジネスルール開発
Satsuki Funaki
•
682 views
Bluemixと既存システムとの連携
IBMソリューション
•
4.9K views
Similar to CEDEC2012 - Flashコンテンツの最適化
スタートアップ向け!1人日でできるサービスの高速化方法と成果
Koichiro Sumi
6.5K views
•
36 slides
AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)
Amazon Web Services Japan
23.7K views
•
78 slides
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
Andy Hall
8.4K views
•
51 slides
おすすめインフラ! for スタートアップ
Koichiro Sumi
1.6K views
•
30 slides
モダンなWebとモダンな開発ツールの新ネタ
Andy Hall
1.7K views
•
29 slides
[AWSマイスターシリーズ] Amazon DynamoDB
Amazon Web Services Japan
17.3K views
•
78 slides
Similar to CEDEC2012 - Flashコンテンツの最適化
(20)
スタートアップ向け!1人日でできるサービスの高速化方法と成果
Koichiro Sumi
•
6.5K views
AWS Black Belt Techシリーズ Amazon Elastic Compute Cloud (Amazon EC2)
Amazon Web Services Japan
•
23.7K views
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
Andy Hall
•
8.4K views
おすすめインフラ! for スタートアップ
Koichiro Sumi
•
1.6K views
モダンなWebとモダンな開発ツールの新ネタ
Andy Hall
•
1.7K views
[AWSマイスターシリーズ] Amazon DynamoDB
Amazon Web Services Japan
•
17.3K views
Adobe Anywhere for Video
Dell TechCenter Japan
•
526 views
PhoneGapとハイブリッド開発
Andy Hall
•
5.1K views
デザイナー・印刷会社の皆様に贈る、Creative Cloud 導入のメリット for Page 2013
Tsuyoshi Nakao
•
1.1K views
AWSを効率よく使う方法 - 第6回クラウド女子会『やりくり上手なAWS利用法』福岡サテライト
Serverworks Co.,Ltd.
•
1.7K views
XPagesDay2013 【B-4】 Dojo 徹底解剖! ~ XPages で Dojo を有効活用するには ~
Atsushi Ono
•
4.7K views
MySQLインストールのお作法
Meiji Kimura
•
4.6K views
更に進化するCSSの表現力と 新しいWebツール [Reloaded]
Keisuke Todoroki
•
1.9K views
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
David Buck
•
185 views
既存システムへの新技術活用法 ~fluntd/MongoDB~
じゅん なかざ
•
2K views
2013/12/05 Serverworks Seminar 小室分
Serverworks Co.,Ltd.
•
2.2K views
dotFes - Web標準にEdgeを利かそう
Andy Hall
•
1.7K views
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AzareaCluster
•
852 views
[AWSマイスターシリーズ] AWS OpsWorks
Amazon Web Services Japan
•
6.3K views
とあるメーカーのRedmine活用事例
agileware_jp
•
2.8K views
More from Andy Hall
FITC2014 モダンなWeb
Andy Hall
1.1K views
•
41 slides
ソーシャルゲーム市場とアドビFlash戦略
Andy Hall
856 views
•
36 slides
Flashまわりのでっかいゆめを見る
Andy Hall
823 views
•
19 slides
AIRにおけるゲーム創り
Andy Hall
748 views
•
12 slides
Flash/AIRの最新情報及びARMとの協業
Andy Hall
786 views
•
31 slides
ごはんとFlash 2010
Andy Hall
672 views
•
12 slides
More from Andy Hall
(20)
FITC2014 モダンなWeb
Andy Hall
•
1.1K views
ソーシャルゲーム市場とアドビFlash戦略
Andy Hall
•
856 views
Flashまわりのでっかいゆめを見る
Andy Hall
•
823 views
AIRにおけるゲーム創り
Andy Hall
•
748 views
Flash/AIRの最新情報及びARMとの協業
Andy Hall
•
786 views
ごはんとFlash 2010
Andy Hall
•
672 views
PhoneGapでハイブリッド開発 for Firefox OS
Andy Hall
•
4.8K views
PhoneGap クイック スタート ガイド
Andy Hall
•
1.4K views
Adobe&HTML 札幌 - HTML5 Caravan
Andy Hall
•
946 views
HTML5 Caravan 福岡・Adobe&HTMLのスライド
Andy Hall
•
1.1K views
Node.js and Photoshop Generator - JSConf Asia 2013
Andy Hall
•
4.7K views
dotFes KYOTO - スマホ開発にAIR & PhoneGapを勧める5つの理由
Andy Hall
•
1.8K views
モダンなウェブをモダンなツールで創ろう!
Andy Hall
•
1.2K views
Link test mac
Andy Hall
•
483 views
Link test win
Andy Hall
•
531 views
Adobe & HTML5
Andy Hall
•
2.6K views
Dragon bones ボーンアニメーション紹介&v2.0アップデート
Andy Hall
•
9.6K views
International flash games
Andy Hall
•
2.3K views
Japan gaming
Andy Hall
•
1.2K views
Flash performance tuning (EN)
Andy Hall
•
8.1K views
Recently uploaded
画像生成AIの問題点
iPride Co., Ltd.
13 views
•
9 slides
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
125 views
•
31 slides
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
45 views
•
38 slides
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
69 views
•
20 slides
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
7 views
•
11 slides
遠征ドルヲタのための便利サイトを作ってみた
Kenta Fujimoto
11 views
•
24 slides
Recently uploaded
(13)
画像生成AIの問題点
iPride Co., Ltd.
•
13 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
125 views
拡散する画像生成.pdf
NTTDOCOMO-ServiceInnovation
•
45 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
69 views
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
7 views
遠征ドルヲタのための便利サイトを作ってみた
Kenta Fujimoto
•
11 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
149 views
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
170 views
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
•
28 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
17 views
CatBoost on GPU のひみつ
Takuji Tahara
•
780 views
磁石内臓イヤリングによる磁力変化を利用したジェスチャ識別
sugiuralab
•
7 views
ヒアラブルデバイスにおける音漏れ信号を用いた空中ジェスチャ認識
sugiuralab
•
6 views
CEDEC2012 - Flashコンテンツの最適化
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.