サイトトップ

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

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

Starling 1.6が公開

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

Gamuaのblogの2014年12月12日付記事「Starling 1.6」で、Starlingの新たなバージョン1.6の公開が知らされました。これまでと同じ改善や最適化だけでなく、Adobeの最新のStage3D技術を生かした新たな機能も加えられました。この記事にもとづいて、新たな中身についてご説明します。


01 Sprite3D

最近の記事でお知らせしたとおり、Starlingオブジェクトを3次元空間で変換できます。この機能を使えば、素晴らしい効果が与えられます。たとえば、Feathersのシーンを3次元で切替えたり、ゲームでカードの裏を見たりといったことです。

使い方は簡単です。新しいSprite3Dクラスのインスタンスをつくったら、これまでどおりDisplayObjectContainer.addChild()メソッドで表示リストに加えます。そして、Sprite3D.rotationXSprite3D.rotationYあるいはSprite3D.rotationZといった3次元のプロパティを変えればよいのです。あっという間に、このようなゲームもできてしまいます(スクリプトの書き方については「次期Starling 1.6とSprite3D」の01「Sprite3D」に掲げた英語ビデオをご覧ください)。

図001■神経衰弱ゲーム

また最近になって、3次元の遠近法の設定が変えられるつぎの3つのプロパティをStarlingのStageクラスに備えました(図002参照)。

    遠近法の設定を変えるStageクラスのプロパティ
  • fieldOfView:Number
    視野角を0からπまでのラジアン値で示す。
  • focalLength:Number
    投影面と視点との間の焦点距離を示す。
  • projectionOffset:Point
    ステージ中央からの視点のずれ、つまり消失点を示すベクトル。

図002■3次元における焦点距離と視野角および消失点

さらに、DisplayObjectクラスにも、いくつかの新たなメソッドやプロパティが加わっています(たとえば、DisplayObject.local3DToGlobal()DisplayObject.globalToLocal3D())。Sprite3Dについて詳しくは、Starling Wiki「Sprite3D」(英文)をお読みください。


02 素材管理の強化

プレーヤーがゲームを起ち上げたら、すぐに始めたいものです。けれど、その前にすべてのテクスチャやサウンドを読込まなければなりません。これは時間のかかる処理です。

StarlingのAssetManagerを使っている場合、このリリースで負荷が大幅に減ります。AssetManagerは、複数の素材を並行して読込めるようになりました。その結果、処理は大幅に速くなります(素材の読込みがディスクかネットワークかを問いません)。パフォーマンスは、これまでの2倍以上でしょう。

もうひとつ小さな改善として、さまざまな設定のテクスチャの読込みが、つぎのように簡単になります。

var appDir:File = File.applicationDirectory;
var assets:AssetManager = new AssetManager();

assets.textureFormat = Context3DTextureFormat.BGRA;
assets.enqueue(appDir.resolvePath("textures/32bit"));

assets.textureFormat = Context3DTextureFormat.BGRA_PACKED;
assets.enqueue(appDir.resolvePath("textures/16bit"));

assets.loadQueue(...);

AssetManager.enqueue()メソッドは、AssetManagerに素材を加えたときの設定を覚えます。そして、AssetManager.loadQueue()メソッドが、その設定にもとづいてそれぞれのテクスチャをつくるのです。

さらに、キューの処理に問題が起こると、AssetManager.ioError(定数Event.IO_ERROR)やAssetManager.parseError(定数Event.PARSE_ERROR)、あるいはAssetManager.securityError(定数Event.SECURITY_ERROR)といったイベントが送られます。これにより、問題を正しく扱うことができます。


03 フィルタの入れ子とRenderTexturesの改善

これまでのStage3Dは、RenderTexturesオブジェクトやフィルタを使いやすくしづらい制約を強いてきました。Flash/AIR 15から、その制限がついになくなりました。そこで、つぎのような変更が加えられています。

  • フィルタのかかったオブジェクトを含む親コンテナにフィルタが加えられる。
  • フィルタのかかったオブジェクトをRenderTextureオブジェクトに描画できる。
  • persistentに定められたRenderTexturesオブジェクトもひとつのバッファで扱える。そのため、費やされるメモリは50%で済む。

ただし、この機能を使うにはひとつ注意がいります。iOSとデスクトップは問題ないものの、Androidでは必ずしもすべてに対応しません。古いデバイスでは、この機能を使ったときパフォーマンスが下がったり、表示に問題がでる場合もあります。

残念ながら、問題のあるデバイスのリストはまだありません。報告は今のところ1件だけのようです。影響の大きい問題ではないかもしれません。けれど、不安がある場合には、新たな機能は最近のハードウェアで使うのがよいでしょう。それは、Android 4.3以降、あるいはstandardプロファイルをサポートしていることです。


04 その他の変更

細かい修正まで含めると数が多いので、いつもどおりGitHubの「Starling: Changelog」でお確かめください。おもな変更はつぎのとおりです。

    最適化
  • BitmapFontをつくるとき内部的に使われているオブジェクトがすべてプールされる。
  • TextureAtlasはすべてのSubTextureをキャッシュする。
  • TextureAtlasは使えるテクスチャ名をキャッシュする。
  • AssetManager.loadQueue()メソッドはフォントとアトラスのXMLを分けて処理する。これにより読込みがスムーズになる。

もちろん、多くのバグが修正されました。


05 Starling 1.6を手に入れる

Starling 1.6は、「Starling Download」のページからダウンロードできます。GitHubをお使いの方は「Gamua/Starling-Framework」の「v1.6」から手に入れることもできます。



作成者: 野中文雄
作成日: 2014年12月15日


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