この記事のURL

http://www.dango-itimi.com/blog/archives/2012/001144.html


FLASH tips Android での FlasCC box2d(v2.2.1) と box2dFlash(v2.1a) の動作パフォーマンスの比較

box2d の物体を 100 個ほど落下させるだけの処理を、FlasCC box2d(v2.2.1) と box2dFlash(v2.1a) それぞれを用いて作成し、Adobe AIR を用いて Android アプリに変換後、端末上にて動作比較を行いました。

比較結果は、両者ほぼ動作速度に差は無し、となりました。

FlasCC box2d(v2.2.1) 版のほうが多少 FPS1~2 程高く安定するかな…?程度です。作成したサンプルは、記事内最下部に表示します。

予想・仮説

FlasCC 版 box2D を用いたが、box2dFlash に対しよい結果を得られなかった理由は何であるか、いくつか考えてみました。

FlasCC で出力された swc を AIR で再コンパイルするのだから意味が無い

高速で動作するように最適化されたファイルが、AIR のコンパイルにて 最適化されないように再変換されてしまったのでは、という考えです。

FlasCC によって直に出力された swf にしか、高速化の恩恵は授かれないのではないのかもしれない、とも考えました。FlashCC によって出力された swc はあくまで C/C++ プログラムを Flash にて利用する事ができるようになるためのものであり、高速化としての用途は無いのかもしれません。

AIR の最適化能力が上がっていて FlasCC の最適化能力と大差なくなっている

すでに AIR のアプリ制作能力は、FlasCC と同等の高機能なものになっており、FlasCC で最適化された swc を利用したところでさほど変化は起こらない、という考えです。

私の何か手順ミス

FlasCC で出力された Box2D.swc を利用する上での何か必要な設定を飛ばしている可能性あり。あるいは私の何かの単純なミス。何日か経った後にミスに気づく、なんて事はよくあります。

実は結構よい結果になっている

今回の大量に物体を落下させるだけのサンプルプログラムでは よい結果は得られませんでしたが、joint 機能など box2d の別の機能を用いた処理では、より良い結果になる可能性もあります。

FlasCC 版 box2d を利用する事により、結果が悪くなったという事はないので(AS3エディタの quickfix 動作で少々つまずきましたが)、今後は FlasCC 版 box2d を利用していこうとは思います。

デモ

以下は AIR で動作検証したものと同じ内容の swf です。FlasCC box2d を用いて作成したものです。

[ ここに swf が表示されます ]

Android 端末の nexus7 では FPS36~38 程度となり、知人に検証してもらった Android 2.3 の端末では FPS30~35 程度となりました。

追記)補足検証しました。
http://www.dango-itimi.com/blog/archives/2012/001145.html

[ FLASH ] [ tips ] 投稿者 siratama : 2012年12月09日 16:09

トラックバック

http://www.dango-itimi.com/blog/mt-tb.cgi/1104

コメント

以下コメントを書き込むだけでは、管理人には通知が行われません。通知を行いたい場合、管理人の書き込みに「返信」を押してコメントをしていただくか、あるいは Google+, Twitter へご連絡ください。




[EDIT]