MAX2010

Adobe MAX 2010レポート 1日目 モバイルFlashコンテンツの最適化

Adobe MAX 2010のセッション「Optimizing Flash Player Compatible Content for Mobile Devices」のレポートです。
今回のMAXは、マルチデバイス、マルチスクリーン対応がテーマになっていますが、やっぱり特定のデバイスに向けて最適化することもあるわけです。このセッションでは、その際のテクニックが惜しむことなく紹介されました。
残念ながら、セッションの最後の部分は、講師の時間配分のミスで、大変な駆け足になっていたので、内容をメモすることができず省略されています。ハンズアウトが入手できたら、後日追記します。
対象を知る
まず、対象となるデバイスをよく知ること。スクリーンのサイズ、解像度、GPUを搭載しているかどうかを知る必要がある。
ビットマップ
・必要最低限のサイズにする。再生時に拡大縮小させない。
・透明情報が不要な画像は、PNGではなくJPGに。
・ビットマップを圧縮する、ダウンロードサイズを小さくする。
ベクターデータ
・パスを簡単にする。最適化する。
・FXGコードを単純化する。ビットマップに変換する。手で編集する。
FXGについての解説
・ベクターデータはなるべく使わない。
メディア
・ターゲットデバイスのネイティブコーデックを使う(H.264やAAC)
・大きなメディアを使わない(再生時に縮小などしない)
・埋め込みフォントを使わない、デバイスフォントを使う。
レンダリングの最適化
・フレームレートを落としてみる。過剰なフレームレートはプレイヤーがそれに合わせようとして無理がかかる。
・StageQualityを設定する(Low/Medium/High/Best)
・適切なディスプレイオブジェクトを選択する(Shape/Sprite/MovieClip)
・ディスプレイリストのツリー構造をなるべくフラットにする
・アルファは使わない
・不必要なマスクはかけない
・MovieClipsを止める
・ステージ外にあるオブジェクトは消す
・add/removeChildを繰り返すようなら、visibleでコントロールしたほうがいい。
cacheAsBitmap
・多くのモバイルデバイスでは、GPUを使える
・よく内容が変わるディスプレイオブジェクトには不向き
・オブジェクトの平行移動の変形などではキャッシュがきかない
・flash.profiler.showRedrawRegions(true);として、再描画領域を確認
cacheAsBitmapMatrix
・回転させてもキャッシュが効く
・GPUを使えるデバイスが多い
・回転前、回転後の2つのビットマップがメモリに必要
・sprite.cacheAsBitmapMatrix = sprite.transform.concatenatedMatrixのように使う
ブレンドモードとフィルタは避けよう
・フィルターは毎フレームCPUを使う
・フィルターは、フィルタ適用前、フィルタ適用後の2つのビットマップがメモリに作られる。ただし、Flash Player 10.1では、30秒間変更がなかったり、そもそも見えていないものについては、フィルタ適用前のビットマップは解放される。
・あらかじめフィルタをかけたグラフィックを使おう
Blitting
・Blittingは、いくつかのビットマップをビットマップに重ねて描く処理
・ゲームのスプライト的なものは、オブジェクトのx,yを動かしながら絵を変えてアニメーションさせるよりは、毎フレームcopyPixelsを使ってステージに描いたほうが速い。
(以下、後日掲載予定)


Author

  • Shuichi Ishikawa
    Shuichi IshikawaShuichi
    Ishikawa
  • MikasaHideyuki
    Hideyuki MikasaHideyuki
    Mikasa
Shuichi Ishikawa
執行役員/インタラクションデザイングループ

フロントエンド開発からクラウドサーバー構築まで、新しいことに興味がありすぎて時間が足りない制作部門リーダー。Adobeインフルエンサー。九州芸術工科大学→ドリームキャスト→サーバーサイド→フロントエンド→執行役員→早稲田大学大学院→Kinect v2

好きな飛行機
B787-8
好きな空港
SXM
好きな航空路
Y28
Hideyuki Mikasa
オーサリングエンジニア

mikasa's text