概要
cocos2d-xを利用したアプリは開発言語にC++, Lua, JavaScriptの3種類があり、開発者は好みや用途に応じて言語を選択することができます。
cocos2d-x自体はC++で開発されていることは良く知られていますが、LuaやJavaScriptで開発を行う場合はC++へ変換するためのエンジンが搭載されており、それにより適宜変換が行われます。
そのエンジンが搭載されていることで、ある程度アプリの容量が増えることが予想されますが、実際に確認されたことがある方は少ないのではないでしょうか?そこで実際に確認を行ってみました。
確認方法
まず最初に、cocos2d-x 3.0 alpha1のproject_creatorで各言語別にプロジェクトを作成しました。そしてお馴染みの中央に「HelloWorld.png」が表示されているシーンのみとし、IPAファイルを作成しました。C++とJavaScriptのプロジェクトは何もしなくてもこの画面が表示されますが、Luaは別のサンプルが表示されるため「HelloWorld.png」が表示される画面に修正し比較を行っています。
一番気になるのは、3G回線でもダウンロードできるサイズですので、IPAファイルとして出力したサイズを確認しました。(Organizer > Archives > 各プロジェクト > Estimated App Store Size)
おまけでUnity(フリー版)でも同様な画面を作成しIPAを作成してみました。しかしUnityはまだまだ初心者なので参考程度にとどめて頂ければと思います。
IPAファイルサイズ比較
結果は次の通りです。C++で作成したアプリは3.3MBと非常にコンパクトです。一方、LuaはC++の4倍弱、JavaScriptに至ってはC++の5倍弱と、非常に大きなサイズになっています。さらにUnityはcocos2d-x(C++)の約6倍です。
アプリ起動後にリソースをダウンロードするのであればあまり気になりませんが、全てのリソースを最初から持っておくのであれば、約10MBは非常に大きいです。
Language | Size |
---|---|
C++ | 3.3MB |
Lua | 11.6MB |
JavaScript | 15.8MB |
Unity | 19.2MB |
最後に
ここ最近では、高い解像度のイラストやフレームアニメーション、多くの音声ファイルが多くなっているので、リソースサイズは非常に大きなものになっています。画像や音声ファイルのサイズを押さえるためのテクニックもありますが、画像の減色や音声のサンプリング周波数を必要以上に落として対応しているアプリもありました。これでは折角いいものを作ってくれたイラストレータさんや作曲家さんがかわいそうです。ファイルサイズが大きくなることが最初から予想されるのであれば、根本的にベースが軽いフレームワークを選択する方が良いのではないかと思います。