サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

Starlingフレームワーク1.5の新しい機能

ID: FN1405002 Product: Flash CC Platform: All Version: 11 and above/ActionScript 3.0

Starlingフレームワーク1.5が正規に公開されました。多くの最適化やバグ修正、および新たな機能が加えられています。blog記事「Starling 1.5」にもとづいて、おもな変更点をご紹介しましょう。


01 プロファイルの自動選択

Adobeは先にStage3Dの新たなプロファイルとしてContext3DProfile.BASELINE_EXTENDEDを加えました。これにより、4096×4096ピクセルのテクスチャが使えます。また、つぎのAIR 14には、新たなプロファイルとしてStandardが加わります。他の機能と併せて、より複雑なAGALプログラミングができるようになります。

これらの新たなプロファイルは、柔軟性をより高めます。しかしそのために、デバイスごとに正しいプロファイルを選ぶことが難しくなりました。そこで、Starlingにプロファイルの新しい選び方が用意されました。

ひとつは、つぎのようにStarling()コンストラクタの第6引数にプロファイルの配列を渡すやり方です。すると、お使いのハードウェアで動く最初のプロファイルが選ばれます。

new Starling(Game, stage, null, null, "auto", ["baseline", "baselineExtended"]);

もうひとつは、コンストラクタの第6引数に文字列"auto"を渡すことです。そうすれば、使えるプロファイルの中から最適なものが選ばれます。

new Starling(Game, stage, null, null, "auto", "auto");

その後、Starlingが初期化できたら、使われているプロファイルはStarling.profileプロパティで調べられます。そうすれば、そのプロファイルにゲームの処理が合わせられるのです。たとえば、プロファイルが最高なら高品質のHDテクスチャもロードできます。

デフォルトは、安全のため"baselineConstrained"としています。また、複数のプロファイルをサポートするには、その分のテストが求められるでしょう。


02 可能な場合にはRectangleTextureオブジェクトを自動的に用いる

内部的な設計上の理由により、デフォルトの2の累乗サイズのStage3Dテクスチャは、実際には使わなくてもミップマップ用のメモリを割当てます。これでは、大切なテクスチャメモリの1/3がつねに費やされてしまうことになって無駄です。

けれど、"baseline"プロファイルからは、Stage3Dがレクタングルテクスチャをサポートします。その大きな利点は、2の累乗の縦横サイズでなくて構わないことです。さらによいことに、ミップマップメモリも割当てません。

[注] ここで述べているのは、Starlingのテクスチャのクラスの話ではありません。テクスチャがGPUにアップロードされるとき内部的に用いられるクラスのことです。すべては内部的に行われます。

そこで、StarlingはできるかぎりRectangleTextureオブジェクトをデフォルトとします。この機能を用いるには、つぎのことを行います。

  • Starlingを"baseline"か"baselineExtended"のプロファイルで始めます(あるいは、前述の引数"auto"を与えても構いません)。
  • StarlingのテクスチャやAssetManagerのオブジェクトをつくるとき、ミップマップを使うかどうかの引数はfalseとします。

これらにより、Starlingは自動的にレクタングルテクスチャを用い、テクスチャに費やすメモリが33%減らせます。


03 回転したサブテクスチャのサポートを追加

TexturePackerのユーザーには、StarlingやSparrowの形式で書出すとき、アトラス内で回転させて、効率的にテクスチャをつくる手があります。Starling 1.5ではこのテクスチャの回転がサポートされます。

これにより、アトラスの数を減らして、さらにメモリを節約することもできるでしょう。

図001■サブテクスチャを回転するとによりサイズが減らせる


04 touchGroupプロパティの追加

DisplayObjectContainerインスタンスは、新たにtouchGroupというプロパティを備えました。これは、長く要望されていたプロパティで、ようやく正規に加えることができました。有効に定めると、タッチ操作できるひとつのオブジェクトのように扱えます。

これは、FlashのDisplayObject.mouseChildrenプロパティと似た機能です。つまり、DisplayObjectContainerインスタンスをタッチイベントの対象にできるのです。


05 起動時間が大幅に速まった

これまで、Starlingは初期化されるとき、すべてのAGALプログラムを一度につくっていました。けれど、多くのゲームではそれらの一部しか使いません。時間と資源が無駄になっていました。

そこで、AGALプログラムは、初めて使われる前に動的につくるようにました。これで、Starlingが起ち上がるのに時間がかからなくなりました(Starlingユーザーのajwfrostから指摘されたことです)。


06 細かな改善

  • AssetManagerでテクスチャひとつひとつに設定ができます。
  • 新たに備わったSystemUtilクラスがマルチプラットフォームの開発を助けます。
    • たとえば、デスクトップとモバイルにおける動作など。
  • Jugglerクラスに備わったdelayCall()メソッドは遅らせた呼出しをプールできます。
  • Jugglerクラスに便利なrepeatCall()メソッドが加わりました。
  • MovieClipオブジェクトが「ミュート」できます。

07 ただ単に動く

モバイルでは、開発用デバイスでは動くにもかかわらず、ある特定のデバイスファミリーだけで起こることにたびたび悩まされます。Starling 1.5では、それらの多くを解決しています。

  • iPad 1におけるRectangleTextureの制限(RenderTexture)が解消されました。
  • AssetManagerクラスは、AIRの新しいバックグラウンド実行モードをサポートします。
  • コンテクスト消滅はさらに検証して安定性を高めます。
  • AssetManagerクラスが、キューを処理している間のコンテクスト消滅に対応しました。

08 更新履歴

詳しい更新の履歴についてはGitHub「Starling: Changelog」をご参照ください。


作成者: 野中文雄
作成日: 2014年5月27日「Starlingフレームワーク1.5リリース候補」を正規リリースにともなって改訂。


Copyright © 2001-2014 Fumio Nonaka.  All rights reserved.