各ゲームエンジンのモバイル描画負荷ベンチマークテスト結果について
最近では無料で多くのゲームエンジンが開発者に提供されていますが、どのゲームエンジンもできることが全く異なるといったことではありません。制作するプロダクトに適したゲームエンジンを利用することがベストな選択となります。今回調査したベンチマークテストの結果をどう捉えるかも自分達次第ということです(例えば、数千枚のスプライトを一度に表示することはない、かつエンジニアはC++が得意となれば「Cocos2d-x」を利用することになるかもしれません)。
※2017年11月16日(木)追記しました※
今回の検証に使ったバージョンは下記となります。
—
Cocos2d-x : 3.15
Unity : 5.5.2f1
Defold : 1.2.103
Unreal Engine : 4.15
—
1.ベンチマークテストについて
弊社では3Dを扱ったプロダクトを多くリリースしていますが、2Dのみを扱うプロダクトが無いというわけではありません。2Dゲームでもまだまだ戦えますし、2Dゲームはトップセールスに多くランクインしている状況です。3、4年前は「Cocos2d-x」の描画速度が「Unity」より圧倒的に速いといったようなことを聞きましたが、今現在では負荷の面で2D描画に強いのはどのゲームエンジンなのか調査しようというのが発端となります。
1.1 ベンチマークテストの目的
今回のベンチマークテストでは、描画負荷によるカクツキが発生する目安を知りたかったため、各スマートフォン端末のFPSが下がり始める数値を確認するのが目的となります。
1.2 利用するスマートフォン端末
ベンチマークテストに利用するスマートフォン端末は下記の通りです。
端末名 | OSバージョン | CPU |
iPhone 7Plus | iOS 10.0 | A10 Fusion |
iPhone 7Plus | iOS 10.0.1 | A10 Fusion |
iPhone 7 | iOS 10.2.1 | A10 Fusion |
iPhone 6S | iOS 9.1 | A9 |
iPhone 5 | iOS 10.0.1 | A7 |
Xperia Z2 SO-03F | Android 5.0.2 | Qualcomm Snapdragon 801 2.27GHz |
ARROWS NX F-01F | Android 4.2.2 | Qualcomm Snapdragon 800 2.15GHz |
Google NEXUS 6 | Android 7.0 | Qualcomm Snapdragon 805 2.65GHz |
Google NEXUS 5 | Android 6.0.1 | Qualcomm Snapdragon 800 2.27GHz |
1.3 ベンチマークテスト用アプリケーション
各スマートフォン端末に描画負荷を掛けるアプリケーションは、「Cocos2d-x」、「Unity」、「Defold」、「Unreal Engine」それぞれのゲームエンジンで同じロジックを使って作成しました。アプリケーションの動作としては、スマートフォン端末で実行された後始めてFPSが60となった段階でスプライト1を一定間隔で描画し続ける内容となっています。また、FPSが30を下回った時点で描画処理が停止され、スプライトの描画と並行して数秒間隔で記録していたFPS値とスプライト枚数をテキストデータとして書き出す仕組みです。
1 スプライト- グッドロ君という株式会社GOODROIDのマスコットキャラクター(PNG形式でサイズ128×128)を利用した。
2.ベンチマークテスト結果
スマートフォン端末に与える描画負荷としてグッドロ君を回転アニメーションさせないパターンとさせるパターンの2種類の方法をベンチマークテストに利用しています。次章で示している各グラフ上のX軸はスプライト枚数(5回分の平均値)でY軸はFPS(5回分の平均値)を表しています。どのグラフを見ても最終的なX軸のスプライト枚数が徐々に減少していくように見えますが、これはベンチマークテストを5回行った際に必ずしも全ての試行で、同じスプライト枚数をFPSが30を下回るまでに表示できないことが影響しています。今回のベンチマークテストの目的では、この部分のスプライト枚数について深く着目していないためグラフは取得したデータのままで作成しています。
※但し、「ARROWS NX F-01F」に関しては「Unreal Engine」によるアプリ実行時に画面が正常に表示されなかったため「Unreal Engine」の項目から除きます
※iPhone 7Plusはスコアが悪いので2台試しました(グラフを参照すると分かりますが結論としてスコア悪い?)
2.1 回転アニメーションなし
2.1.1 Cocos2d-x
2.1.2 Unity
2.1.3 Defold
2.1.4 Unreal Engine
2.2 回転アニメーションあり
2.2.1 Cocos2d-x
2.2.2 Unity
2.2.3 Defold
2.2.4 Unreal Engine
3.まとめと所感
2章のグラフから「Cocos2d-x」はFPSが30を下回るまでに比較的多くのスプライトが描画できていますが、「Unity」、「Defold」に比べて描画負荷による影響を受けやすい印象でした。特にiPhoneの「Cocos2d-x」に関するグラフを見ると描画負荷によるFPSの減少が早い段階で現れているのが分かります。一方、「Unity」と「Defold」ではFPSが下がり始めるまでは安定的にFPS60付近を維持できています。「Defold」は「Unity」以上に多くのスプライト描画ができることが多く、スプライトのアニメーション有り時の方がスコアが良いようでした(表4.2参照)。iPhone7Plusのスコアが低いのが気になりますが、2台検証した結果iPhone7に劣ってしまっているため、2Dが苦手なのかもしれないというデータが得られてしまいました。
以上のことから「Defold」は2Dゲームの開発に向いていると思われるかもしれませんが、開発者に提供されて1年ということもあり、まだまだ「Unity」に比べて細かいところに手が届いておらず日本語の情報がほとんどありません。「Defold」のコミュニティが発展していき情報がすぐに検索でヒットしたり、アプリ開発者には嬉しい「アセットストア」の利用ができるようになったり、「サードパーティ製SDK」の利用が容易になってくると、2Dゲーム開発エンジンとして広く利用されるようになっていくのではないでしょうか?
4.付録
表4.1、表4.2はベンチマークテスト用アプリケーションを5回実行して記録されたFPSの平均値が、58以上を維持できている状態のスプライト枚数の平均値を示しています(1度でも58未満になったら終了)。FPSを58以上とした理由としては、スマートフォン端末の状態によってはなんらかの原因によりスプライトを表示していない状況であったとしても下がってしまうことがあるためです。また、FPSが58に下がったとしてもアプリケーションの動作としてはカクツキ等はほぼ確認できないため問題ないと判断しています。
表4.1 FPSの平均値が58以上を維持している時に回転アニメーションしていないスプライト枚数の平均値
Cocos2d-x | Unity | Defold | Unreal Engine | |
iPhone7Plus | 568枚 | 2747枚 | 1945枚 | 167枚 |
iPhone7Plus-2 | 559枚 | 2708枚 | 2441枚 | 148枚 |
iPhone7 | 669枚 | 3648枚 | 4301枚 | 148枚 |
iPhone6S | 969枚 | 2374枚 | 2681枚 | 259枚 |
iPhone5 | 1971枚 | 1256枚 | 1487枚 | 137枚 |
Google NEXUS 6 | 252枚 | 229枚 | 535枚 | 92枚 |
Google NEXUS 5 | 776枚 | 559枚 | 1170枚 | 74枚 |
Xperia Z2 SO-03F | 931枚 | 710枚 | 1293枚 | 100枚 |
ARROWS NX F-01F | 706枚 | 659枚 | 1235枚 | No Data |
表4.2 FPSの平均値が58以上を維持している時に回転アニメーション中のスプライト枚数の平均値
Cocos2d-x | Unity | Defold | Unreal Engine | |
iPhone7Plus | 520枚 | 744枚 | 2162枚 | 120枚 |
iPhone7Plus-2 | 549枚 | 545枚 | 1106枚 | 111枚 |
iPhone7 | 537枚 | 733枚 | 4247枚 | 102枚 |
iPhone6S | 810枚 | 2844枚 | 3222枚 | 148枚 |
iPhone5 | 1531枚 | 997枚 | 1778枚 | 101枚 |
Google NEXUS 6 | 204枚 | 359枚 | 867枚 | 110枚 |
Google NEXUS 5 | 545枚 | 549枚 | 1106枚 | 111枚 |
Xperia Z2 SO-03F | 677枚 | 698枚 | 1319枚 | 73枚 |
ARROWS NX F-01F | 577枚 | 649枚 | 1219枚 | No Data |
written by GOODROID