Androidアプリ ビルド時のデータ量を削減する方法

Unity

本アプリを制作するにあたって、定期的に実機(スマホ)にビルドして出来具合を確かめるのですが、先日とあることに気付いてしまいました・・・



データ量爆発

ひゃ、109メガバイト・・・だと?

つい先日までは60MBほどでした

Android Developersによると

Google Play では、ユーザーがダウンロードする圧縮 APK を 100 MB 以下にする必要があります。

アプリの圧縮ダウンロード サイズが 100 MB を超える場合は、最大 200 MB の圧縮ダウンロード サイズを許容する Android App Bundle を使用してアプリをアップロードする必要があります。

とあります

もふもふ
もふもふ

おわた(;゚Д゚)

確かに初心者で手探り状態での制作ではありますが、本アプリでは今後かなり多数のオブジェクトを取り入れる予定です

その前の段階でこれはかなり絶望的な打撃です

分析

色々と調べた結果、どの要素がどのぐらいのデータ量を占めているのか分かる方法があったのでやってみることに・・・

Consoleの右端の3つの点をクリック→Open Editor Logをクリックすると膨大なログが出てくるので、Build Reportを検索します

すると容量占拠率の一覧を見ることが出来ます

これによるとテクスチャが68MBとなっており、かなりの割合を占めていることが分かりました

しかし本アプリではまだ本棚と冷蔵庫のオブジェクトしか導入しておらず、このような数字には到底なり得ないのです

使用しているテクスチャを確認してみても、1MBを越えているものすら確認出来ず、何か解決策はないかと調べていく中で分かったことがあります

“ゲームの容量はテクスチャが占める割合が大きい場合が多い”

これは知らなかったのでかなり勉強になりました

心の中でなんでやねんと思いながら更に調べを進めましたが、この謎のテクスチャの正体は掴めませんでしたが・・・

ふとBuild Reportを眺めていると、ある事に気付きました

どうやらもっと詳細なデータが記載されていたようです

これによると、先日導入した日本語のフォントの事を示しているようです

ついに突き止めました

この日本語のフォントが64MBを占めていたようです・・・

フォントについて調べた結果、仕組みが分かりました

文字をテクスチャ情報として保管し、出力時に板ポリゴンに貼り付ける事で実現しているようです

つまり、文字はテクスチャだったのです

となるとベースとなるテクスチャは、膨大な量の文字が刻まれているため(約7000)、このような容量になるのだということが分かりました

解決策

更に調べを進めると、次の記事にたどり着いたので、それに従ってフォントのデータ量削減を試みることにしました

背面の文字列が現在使用している文字列です

それとは別に新規で本アプリで使用する予定の文字を全て洗い出したものを作成しました(前面)

記事通りにアセットで文字を洗い出す事に失敗したので自力でやってみました

もふもふ
もふもふ

244文字に減ったもふ(;゚Д゚)

Font Asset Creatorを立ち上げます

メモ帳にメモった文字列をコピペします

文字数が激減したことにより、描きこむテクスチャ領域が小さく済むのでAtlas Resolutionの値を1024に変更します

以前は8192でした

この数値がデータ量に直結するようです

ちなみに小さくしすぎると文字がぼやけます

設定は写真の通りにしてGenerate Font Atlasをクリックして文字のテクスチャを生成します

なんと64MB→1MBにすることが出来ました!

確認のためビルドしてみると・・・

およそ50MB削減することが出来ました!!

丸々63MBじゃないのは圧縮の影響かと思います



まとめ

日本語をあきらめるのが最大の近道

もふもふ
もふもふ

あきらめんな(;゚Д゚)

つい心の声が

しかし今回の件でフォントの仕組み等かなり得るものが多かったです

今回色々調べまくった結果、オブジェクトに使用しているテクスチャの容量削減方法等も学んだので、今後の開発ではデータ量に重きを置いて慎重に進めていこうと思います

タイトルとURLをコピーしました