読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【cocos2d】背景画像をjpegに変換してデータを軽くしてみた。何としても50MBにおさめるために

cocos2d

BeeClusterの1面の背景画像は640x2000pixelのスプライトを6枚で構成されています。
今使っている画像圧縮フォーマットはpngです。pngは劣化がなく、半透明も表現できるので品質、スプライトとしての使い勝手は最高です。
しかし、そんなpngフォーマットにも大きな欠点が。
Jpegと比較するとファイルサイズが桁違いに大きいのです。可逆圧縮なので仕方がないですが、背景のようなサイズの大きい画像ではちょっと使いにくいです。

BeeClusterで使っているこんな感じの画像で比較してみます。
f:id:takujidev:20130510225006j:plain
Retina用の640x2000pixelの画像が6枚非Retina用の320x1000pixelの画像6枚の合計12ファイルで、

png: 21.6MByte
jpeg:1.9MByte (プレビューでpngから変換。画質設定は真ん中)

ちょうど1桁違いますね。
iPhoneのアプリは50MByteを超えるとWiFi接続かパソコンのiTunes経由でないとダウンロードできない仕様になっています。
できるだけ多くの方にプレイしてもらうためには何としてでもアプリのサイズを50MByteにおさめたいところですが、1面の背景データだけで20MByteでは無理な話です。
そこで、背景の画像フォーマットはjpegに変更しました。
幸い背景画像は多少劣化していても気にならないのでjpeg画像でも全く問題ありません。ただし、多重スクロールさせる場合は透過部分が必要なので一番下の背景以外はpngにする必要があります。