気になったところのまとめ
スプライト描画性能比較
- スマホの世代による性能差はわりと大きい
- スマホの性能は、今後もしばらく向上が予想されるので、リリース時点の状況を予測して、どこまで古い機種をサポートするのかを良く検討した方が良い
- パフォーマンスが決定的に重要な場合はCocos2d-xを、そうでなければ開発のしやすさ優先でエンジンを選ぶのが良さそう
- iPhoneで先行して開発していると、Androidで性能が出ない場合がある。定期的に、ターゲットの範囲の底辺の機種でパフォーマンスを確認しておく
ドローコールとは?
- GPU に対して描画開始を命令すること
- この呼び出し回数が多ければ、多いほど描画負荷が上がる
- バッチングを活用することで、ドローコールを減らすことができる
バッチングとは?
同じテクスチャを使ったものを一度にまとめて描画する
バッチングと描画順序の関係
重なっている状態でバッチングすると描画順が狂う
描画順を守るためバッチングできない
テクスチャのアトラス化
バッチングできるようにテクスチャを1枚に合体する
ただし、現実的には必ずしも一枚のテクスチャにすべての画像を収められるとは限らない
なるべく描画の順番が確定している単位でアトラス化するのが良いでしょう
Tips - #05 どの範囲の機種をサポートするべきか
- Unity は、iOS 4.0以降、Android 2.3.1以降をサポート
- サポート範囲を広げると
- 低性能機対応のための開発工数増大
- 低性能機にあわせたゲーム設計
- ゲームアプリでは、iOS 7以降、Android 4.0以降という割り切りも
「Unity Hardware Statistics」が役に立つ
http://stats.unity3d.com/mobile/
http://stats.unity3d.com/mobile/index-android.html
Androidのスペック統計で、1年前からの傾向がわかるようになっています。
OSバージョンについて言えば、今年の5月の段階で、Android 4.0以上が9割以上です。
http://stats.unity3d.com/mobile/index-ios.html
iOSについての情報です。
iOSのほうも、9割方はiOS 7になっていますね。
- AppStore のiOSシェアhttps://developer.apple.com/support/appstore/の結果とほぼ同じ
- Android(Google Play)のOSバージョンシェア
http://developer.android.com/intl/ja/about/dashboards/の結果でも、85%がAndroid 4以上 - 上記は全世界の情報なので、日本のユーザーの動向そのものではないことに注意
Tips - #06 Androidの画面解像度
実はiOSのほうがアスペクト比の問題は深刻です。
iPhone 4S以前のサポートをやめれば、Androidと同じアスペクト比の中に収まります。
Unity Hardware Statistics を調べてみると、iPhone 4と4Sあわせて、2014/5時点でまだ23%あるようです。
現時点ではこれはなかなか切り捨てづらいですが、1年経てば状況はかなり変わってきそうです。
http://stats.unity3d.com/mobile/display-android.html
「Unity Hardware Statistics」で画面解像度を調べてみると、トップは800x480で23.8%です。
2番目がHD解像度、3番目がフルHDになっています。
- Unity Hardware Statistics では、800x480のシェアが23.8%でトップだが、国内ではここまで多くないのではないか
- おそらく、2~4位の1280x720(HD), 1920x1080(FullHD),1136x640(iPhone5)あたりが主なターゲットのはず
- Android端末一覧http://ja.wikipedia.org/wiki/Android端末一覧と併用すると良い。正確性の保証はないが、概ね正しいはず
最後に
手戻りを起こさないためのポイント
- スマートフォンは、機種による性能差が非常に大きい
- エンジンによる性能差は、それに比較すれば小さいほうなので、目的にあったものを選択すべし
- 適切な画像リソースを使おう