harayokiです。前回に続いてStarlingがらみの投稿です。
Starlingが初のメジャーバージョンアップ
AIRアプリで2Dゲームを作る際のデファクトスタンダードとなっているStarlingですが、現在のv1.7から次回のバージョンアップでついにv2.0となります。リリース時期は何も発表されていませんが、1年ほど前にオフィシャルブログで言及された2015年ロードマップには含まれていた事と、最近のフォーラムでダニエルさん(Starlingの開発者)が、もうそろそろ(あと数日!)でgithubにブランチをあげるといっている事から年内を目標としていたのではないかと筆者は思っています。ちょっと難航しているようですので年末にβリリース、年明けにリリースといった感じではないでしょうか。
#このAdvent Calendarが終わらないうちに発表があると良いですね。
メジャーバージョンアップの意味
v1系統の中でStarlingをバージョンアップした場合、基本的にStarlingを利用している側のコードに修正を入れる必要はありませんでした。しかし今回のバージョンアップでは一部のAPI仕様に変更があるとの事です。この互換性が崩れる事からメジャーバージョンをあげる事になったようです。
しかしAPIを初めから覚え直すような事は心配しなくてよさそうです。QuadやImageクラスなどは相変わらず健在ですし、影響をうけるのはレンダラーを自分で書くような高度な使い方をしている人だけとの事。ドラスティックな変更はなさそうなので、v2.0適用でコンパイルエラーになったとしても、簡単な修正で動作させる事ができそうです。
新機能1 ダイナミック ライティング
スプライト画像にノーマルマップを設定し、ライティングを施す事で簡易3D表現が行えるものです。先日フォーラムとwikiに投稿があり、実際にすでにデモを見る事ができます。
http://wiki.starling-framework.org/extensions/dynamic_lighting
drawコールは2しか使われていませんね。1つが光源用の白い点なので、立体感のあるキャラクター全員は1drawコールで描かれている事になります。iPhone 4Sでもそこそこのパフォーマンスで動くとの事(about 800 objects @30 fps)なので期待して良いのではないでしょうか。
ソースコードの一部(starling.swcは含まれず)も上記リンク先からダウンロードできますが、新しいコアクラスが継承して使われている以外は見慣れた感じのコードです。
新機能2 カスタムレンダラー/カスタムバッチャー
(なんと呼べばいいのかちょっと迷っていますが、) v2.0ではユーザーが独自の描画処理を行い、それを適用したDisplayObjectをまとめて描画(=バッチ処理)するのがv1.xと比べてずっと柔軟で簡単にできるようになったようです。上記のダイナミックライティングもこの機構を利用しています。ですので実際のメインの新機能はこちらで、ダイナミックライティングはそれを利用した1例とも言えそうです。文字で説明すると地味でわかりずらいですが、今までは難しかった派手な描画処理が比較的簡単で高速に実現可能になる、と考えれば良いかと思います。
新機能3 自動flatten
アーキテクチャが変わったためv1.xとの比較は難しいそうですが、単純なベンチマークテストではv2.0はv1.7より若干遅くなるようです。しかしながら実際のゲームなどでは早くなるだろうとの事です。flattenという静的なSproteの描画を早くする機能がstarling1.xではありますが、これがv2.0ではユーザ側で何も設定しなくても自動で適用されるようになるという事ですので、これがパフォーマンスの向上に効いてくるのでしょう。
その他新機能?
噂にあったベクター図形の描画機能は、今後のバージョンで入るとの事ですので、2.0には入りません。他はまだよくわからないのですが、上記カスタムレンダラーを使った機能がなにかしら入るのではないでしょうか。しかし、カスタムレンダラーを使えば、Starlingユーザが独自の派手な(便利な)描画拡張機能を作る事ができますのでv2.0がリリースされた後にユーザ側から出てくる拡張機能にも期待できそうです。Enchant.jsでいうMap機能( http://enchantjs.com/ja/tutorial/lets-start-enchant-js/#ref_8 )のようなTileMap機能も公式もしくはユーザ製作で登場するんではないでしょうか。個人的にはSPINEのようなメッシュ変形機能に期待したい所です。(SPINEではアニメーションツール側がメッシュに対応しているのがミソなのですが。)
おわりに
Starlingはバージョン1.0がでる前から注目していたのですが、それに比べるとだいぶ本格的になってきたな、と感じます。Stage3Dのシェーダー言語であるAGALも進化してきていますし、(最新バージョンは3)、OpenGL関連の技術に手をつけた事がない人がたわむれる入り口にStarling2.0を使って見る、というのもいいのではないでしょうか。
ではまた。