最速ゲーム情報メディア: インサイド
follow us
【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策

【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策

2014年9月11日(木) 15時09分

CEDEC 2014にて、株式会社ウェブテクノロジ代表取締役の小高輝真氏、フリーランスプログラマの東田弘樹氏によるセッション「工程の手戻りを最小限に 2Dエンジン活用における傾向と対策」が開催されました。

本セッションでは、2Dゲームを作成するために使いやすいゲームエンジンはどれか、という部分に焦点を当て、開発ツールとしての使いやすさ、完成したゲームの処理速度などを多面的に比較した情報が語られました。

ウェブテクノロジと言えば、「OPTPiX」シリーズを始めとしたゲーム開発ツールメーカーとして知られています。ただ本セッションはそれらをアピールするものではなく、純粋に世にある2Dゲーム向けエンジンを紹介・解説するという内容になっています。なお講演のスライドは、ウェブテクノロジのブログで公開していますので、そちらも合わせてご覧ください。

小高輝真氏
東田弘樹氏


■2DゲームエンジンはUnityとCocos2d-xの2強状態

講演の序盤は東田氏より、2Dゲームエンジンの現状が紹介されました。2Dゲームエンジンを活用することで、マルチプラットフォーム対応を容易にできることや、OpenGL活用による描画処理の高速化、定型処理にかかる作業の時間節約などのメリットが得られます。これらのメリットを享受したい方への情報、というのが今回の話題の前提です。

本セッションでは3Dゲームエンジンの情報は含まれませんが、Unityは2Dゲーム制作現場でも広く使われていることから、紹介に加えられています。

まずはそのUnityについてです。プログラムを極力書かなくて済むようにしようという設計思想から、独自のUnityエディタが用意されています。また様々な有償・無償のプラグインが公開されているアセットストアを活用できるのもメリットです。現存するほとんどのプラットフォームに対応しています。日本語の情報が多く、日本支社からのサポートが受けられるという点も安心感があります。

Unityは充実したドキュメントとアセットにより安心感が高い


次はCocos2d-x。ここ1年で急速に注目度が上がっているもので、オープンソースで無償公開されているのが特徴です。ツールとしてはシンプルで、ゲーム開発経験者にはわかりやすいものになっています。対応プラットフォームはiOS、Androidのほか、WindowsやMac OS X向けの開発も可能です。ただし最新バージョンのv3ではC++11のモダンなスタイルに改められたことで、v2で書かれたソースコードは手を加えないとコンパイルが通りません。またUnityに比べると日本語情報が少なく、v3に関する書籍がまだ少ないことが気がかりです。

Cocos2d-xはオープンソースで無償というのが大きなメリット


このほか、AIRやFlash上で動作するStarling、Appleが提供する2DグラフィックフレームワークのSprite Kit、Corona SDK、Marmalade SDKが紹介されました。採用例としては、UnityとCocos2d-xの採用が頭ひとつ抜けている状況にあるため、以後はこの2つを比較・紹介する内容となります。

他にも発祥や用途が異なる2Dゲームエンジンがあります


■端末とエンジンによるパフォーマンスの差をチェック

次に、テストアプリでスプライト描画の負荷をベンチマークした結果が紹介されました。テストアプリは、画面上にスプライトを増やしていく描画負荷を計測する基本アプリと、複数テクスチャでアニメーションするキャラクターを表示するゲーム風アプリの2種類が用意されました。検証端末はAndroidが2機種、iPhoneが3機種。AndroidはXperia arc(SO-01C)とNexus 5(LG-D821)、iPhoneは4、4S、5の3台で、現在でもユーザーがいるであろう下限の機種から選定されています。

タイプが異なる2つのテストアプリを用意


テスト端末は計5台


最初の比較は、Cocos2d-x v3とUnityの描画性能差を見るものです。いずれもCocos2d-x v3の方が高速という結果が出ています。ただ端末間では基本アプリでほとんど差が見られなかったものが、ゲーム風アプリ側ではNexus 5での結果がかなり悪くなっています。特定端末やプラットフォームで開発していると、別端末とのパフォーマンスの差で手戻りになりやすくなります。

Cocos2d-xの方がパフォーマンスが高いものの、端末によってパフォーマンスの出方には差があります


次はCocos2d-x v2とv3の計測比較で、Cocos2d-x v3で導入された自動バッチと、v2でのバッチなしを比べています。iPhoneではGPUのPowerVRの特性のためか、バッチなしでも高い性能が出せるようです。Nexus 5では基本アプリで大幅なパフォーマンス向上が見られましたが、ゲーム風アプリでは差はかなり小さくなります。またCocos2d-x v2で手動でバッチを組んだ場合、iPhone、Nexus 5ともにv3の自動バッチを上回るパフォーマンスが出せることも確認されました。ただしこれはピーク性能と考えるべきで、また手動でバッチを組む手間も発生します。

自動バッチはパフォーマンスアップに必ず寄与するわけではないので注意


続いては機種によるスプライト描画性能比較です。新旧機種間のパフォーマンス差が激しく、iPhoneでは機種ごとに2~4倍の差が見られます。またiPhone 4などの古い世代ではCocos2d-xとUnityの差が大きく、iPhone 4ではUnityが一番良いパフォーマンスを示すなど、機種ごとに傾向も異なります。またUnityでは、テクスチャが増えたときのパフォーマンス低下が若干大きいという傾向も見られます。いずれにしても、ベンチマークは条件によって結果が大きく異なるので、複数の条件でテストすることが推奨されます。

端末性能差は非常に大きく、ツールによっても差の出方に違いがあります


バッチの有無でパフォーマンスが変化する原因は、GPUに対し描画開始の命令を出す「ドローコール」にあります。ドローコールが増えると描画の負荷が高くなるため、これを下げるための努力が求められます。例えば2枚のテクスチャを交互に使って4枚のスプライトを描画する場合、4回のドローコールが発生します。

この描画順を変更し、同じテクスチャをつかったものを1度にまとめて描画することでドローコールを減らす、という最適化処理がバッチングです。テクスチャの枚数が増えるとドローコールが増大し、パフォーマンスが大幅に下がるため、バッチングが重要になります。ただしスプライト同士が重なっている場合は描画順を守らないと破綻するため、バッチングが使えません。その場合はテクスチャを1つにパッキングするなどの方法もあります。

バッチングはパフォーマンス向上に有効ながら、うまく活用できない状況もありえます


■2Dゲーム開発における8つのTips

続いては小高氏より、2Dゲーム開発における8つのTipsが紹介されました。

1つ目はUnityにおける適切な画像リソースの使い方について。UnityはPSDファイルなどの画像を簡単に読み込んで表示してくれるものの、性能や画質の低下を招きます。予め.pvrコンテナにダイレクトカラー画像を格納することで、これらの問題を回避できるのに加え、ビルドの高速化というメリットも得られます。

2つ目はCocos2d-xにおける画像の扱い方。Cocos2d-xはフルカラーPNGを使えるものの重いため、こちらもUnityと同様に.pvrコンテナにダイレクトカラー画像を格納する方法が有効です。

Unity、Cocos2d-xともに.pvrコンテナにダイレクトカラー画像を格納する方法が有効です


3つ目は、2DゲームでPVRTCやETCを使う際の注意点について。これらは3Dテクスチャ用に開発された高圧縮フォーマットですが、写真のような画像は綺麗に圧縮できるものの、UIパーツやアニメなどくっきりした画像は輪郭がぼやけたり、ブロックノイズが目立ったりします。

PVRTCやETCは使用する画像の種類に注意が必要です


4つ目は、Unityで.pvrファイルを使用する際の注意点について。Unityエディタ上で.pvrファイルを追加すると、Spriteの作成ができません。しかしスクリプトでロードすれば、スプライトとして使えます。

Unityで.pvrファイルを使用する際はスクリプトでロードしましょう


5つ目は、スマートフォン向けゲーム開発における機種サポート範囲について。先のベンチマーク結果からもわかるとおり、スマートフォンの世代間における性能差は非常に大きいため、低性能機に合わせたゲーム設計を求められ、工数が増大してしまうことがあります。Unityを実行した機種の情報を見ると、Androidは4以上の端末が9割以上となっており、ゲームアプリであればiOS7以降、Android4以降といった割り切りをすべきかもしれません。

機種サポートの割り切りの判断は、端末のシェアを参考に


6つ目は、Androidの画面解像度の違いについて。古いものだと320×480、最新では1,600×2,560といったものもあります。ただこれらのアスペクト比を見ると、ほとんどが16:9と16:10の間にあるので、ターゲットをこの辺りに持ってくるのが適切です。この発想だとむしろiOSの方が問題が深刻で、iPadの4:3と、iPhone 4S以前の3:2、iPhone 5以降の約16:9が共存しています。iPadは別物として扱っても構いませんが、iPhone 4S以前のサポートをやめる判断をすれば、Androidと同じアスペクト比の中に含まれ、マルチプラットフォーム対応が容易になります。ちなみにiPhone 4と4Sは、今年5月時点でまだ23%存在するというデータもありますので、現時点では判断が難しいところです。

Android端末の画面解像度は、ほとんどが16:9から16:10の間に収まっています


7つ目は、カタログスペックと実測値の乖離です。AndroidでXperia arcの約1年後に発売されたAQUOS PHONE SL(IS15SH)のベンチマークを計測すると、スペック上では明らかにAQUOS PHONE SLが上なのにも関わらず、ベンチマークでは劣るという結果が出ています。省電力モードが切れないのが原因ではないか、と思われますが、カタログスペックと実際の性能が必ずしも比例しないという点は覚えておくべきでしょう。

カタログスペックとベンチマーク結果が乖離することもあります


8つ目はプロファイラについて。ウェブテクノロジが提供するSpriteStudioのサポートによく寄せられる「描画性能が出ない」という問い合わせの中で、プロファイラを使っていない方が意外と多いのだそうです。プロファイラを使い、どこにボトルネックがあるのかを見極めるのが大切です。プロファイラの例として、Instruments、Android Debug Monitor、OpenGL ES Trace、Qualcomm Trepn Profilerの4つが紹介されています。

プロファイラを使えばボトルネックを見つけ出すのが容易になります


最後に講演の主旨である「手戻りを起こさないためのポイント」について、「スマートフォンは機種による性能差が大きい」、「機種による性能差に比べるとエンジンによる性能差は小さいので、目的に合ったエンジンを選ぶ」、「ベンチマークは重要だがピーク値に惑わされないこと」、「適切な画像リソースを使う」、「プロファイラを使う」という5点でまとめられました。


スマートフォンの性能向上により、モバイルでの3Dコンテンツの進化が目覚ましい昨今ですが、遊びの幅を考えれば2Dも無視はできません。ゲームのプレイヤー側の筆者としては、端末が進化した今だからこそできる、こだわりの2Dアニメーションを盛り込んだゲームの登場にも期待したいところです。

  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
  • 【CEDEC 2014】Cocos2d-xかUnityか・・・よりよい2Dゲーム開発のためのゲームエンジン選びと対策の画像
(Article written by 石田 賀津男)

ゲームビジネスアクセスランキング