ゲームのデータサイズを削減する方法

今回はゲームのデータを削減する方法について紹介します。

なぜデータの削減が必要か?

データ削減は、「スマートフォン向けアプリ」を作成するときに特に重要となります。

  • 150MBを超えるアプリ:3G / 4G 回線の場合はダウンロードできない
  • 100MBを超えるプレイ:Goole Play Store にアップロードできない (※拡張ファイルで対応可能)

2021.12.19 現在では上記の制限があり、ダウンロード率を下げる原因となってしまうので、100MBを超えるのはできるだけ避けたほうが良さそうです。

アプリの機能などには変化を加えず、アプリサイズだけを元々の3MBから99MB、123MB、そして150MBへと徐々に上げていき、DL数に影響があるのかを調べるテストを行いました。すると、アプリサイズを増加させたことで最大66%もCVRが低下するという結果が出たのです。グラフを見ると、サイズとCVRは明確に反比例の関係にあることが分かります。

アプリサイズがDL数に与える影響

デスクトップ向け(Windowsなど)であれば容量を気にする必要はなさそうですが、データサイズが小さい方がダウンロード時間が短くなるので、すぐに遊んでもらいやすくなります。

また副次的な効果ですが、不要なデータを精査する過程で、公開してはいけないデータを見つけたり、著作権上問題のあるデータが含まれているかどうかを見つけることもあります。

そのためゲーム完成後には、ゲームに含まれるデータのチェックはできる限りやっておいたほうが良さそうです。

データ削減方法

ゲームにおけるデータ削減方法は、大きく分けて以下の3つです。

  • 1. 不要なデータを消す
  • 2. データの圧縮率を上げる。データの品質を下げる
  • 3. 使用頻度の低いデータを削除し、別のデータで代用できないか検討する

1. 不要なデータを消す」が一番やりやすく、データ削減の効果が高いです。この方法で対応できれば他の方法は考えないほうが良いです。

というのも「2. データの圧縮率を上げる。データの品質を下げる」は、やや削減効果が下がりますし、データの品質を下げることがそのゲームにおいて正しいかどうかを判断するのは難しいです。(特にチーム開発の場合はデータ作成者に確認を取ることが必要)

最後の「3. 使用頻度の低いデータを削除し、別のデータで代用できないか検討する」はデータを使用している箇所の洗い出しが必要となり、代用することでゲームの印象が変わってしまうこともあるので、対応するためのコストが高めで判断が難しくなります。

BGMの流用 (あまり使われないBGMを削除して別の使用頻度が高いBGMを適用する) くらいであれば難しくありませんが、例えば敵キャラモデルを1体削除して別の敵を色変えして使う、となると影響範囲がかなり大きくなります。

1. 不要なデータを消す

まず最初に検討すべき方法です。開発中はゲームを完成させることが目標となるので、不要なデータかどうかにも関わらず、どんどん素材データをプロジェクトに追加しがちです。また開発中の場合、必要な素材をその都度追加するのは効率が悪いので、あらかじめ必要そうな素材をすべて入れておいたほうがスムーズにゲーム開発を行うことができます。

ただこれをやりすぎると、完成後に不要なデータが大量に発生するので、それを見直します。

できれば開発中に使用しているデータをテキストやExcelで管理しておくと、後々この作業がやりやすくなりそうです。

ここに当てはまりそうな項目は以下のとおりです

  • 未使用のBGMデータボイスデータを削除する
  • 未使用のキャラクターの立ち絵画像背景画像UI素材画像を削除する
  • 使っていない3Dモデルデータエフェクトデータを削除する
  • 使っていないムービーデータを削除する
  • その他テスト用のデータを削除する

“スクリプト” や “ゲームデータを管理する CSVファイル” 、”UIレイアウト定義ファイル” などはファイルサイズが小さいので、見られて困るようなデータでなければそのまま残しても問題ないと思います。それよりは上記のようなサイズの大きめのデータを削減したほうがよりデータ削減効果が高いです。

2. データの圧縮率を上げる。データの品質を下げる

場合によっては、かなりデータを削減できます。

  • 画像データの圧縮率を上げる
  • サウンドデータの圧縮を有効にする。音質を下げる

例えば背景画像として JPEG データを使用している場合、使用しているツールによってサイズが大きく変わります。クリスタで JPEG を保存するよりも、Photoshopなどのツールで JPEG を最適化したほうがデータサイズを減らしやすいです。

3Dゲームのテキスチャである場合、解像度を下げるのも一つの方法ですが、ただ極端に解像度を落とすとゲームの見栄えが悪くなるのでほどほどのサイズにしておくのが良いです。

サウンドデータについても、効果音は基本モノラルで良いです。また非圧縮のWAVではなく圧縮フォーマットのmp3 や ogg ファイルを使用します。

サウンドの音質を下げるのは、個人的には 44.1kHz / 16bit / 128kbps あたりまでかなと思っています。

人それぞれ納得するレベルというのは違いますが、例えばmp3であれば128kbpsまで音質を下げると素人でも気付くレベルで音質が悪くなります。

160kbpsで気になる人は激減し、192kbps以上あれば大半の人は気付きません。この辺りが一つの目安になるかと思います。

この辺については

・ユーザーが不満に感じないであろうライン
・プロデューサーが納得するライン
作曲者自身が劣化に気付かないライン

などを基準に判断していきましょう。

どのくらいの音質なら許容範囲なの?

特に作曲家の方に楽曲作成を依頼した場合には、このあたり注意が必要となります。

3. 使用頻度の低いデータを削除し、別のデータで代用できないか検討する

使用頻度が低いデータを削除して、別のデータを割り当てる方法です。

正直なところ影響範囲が大きく、ゲームシステムや演出の流れなどが変わってしまうので、あまりオススメはできません。ただどうしても他の方法で削減ができない場合には検討したほうが良いかもしれません。

以下は、なんとかBGMを削減しようと私が作成した表です。これはイベント番号に対応するBGMの使用状況をまとめた表となります。

濃いグレーの曲は「未使用」だったのでそのまま削除しましたが、薄いグレーの曲は使用頻度が低いため別のBGMに置き換えました。

イベントスクリプトはテキストデータであるため、使用状況の洗い出しは難しくなかったのですが、どのBGMに置き換えるべきか少し悩みましたので、簡単な作業ではなかったです。また1曲当たり 1MB以下で、4曲削減しても4MB以下の削減で効果もあまりなかったです。

ただ大きなところを削れる見通しがあればやってみても良いかもしれませんね…。

余談

ちなみにこの記事を書くきっかけとなったのは、現在作成中のアプリが 120MB になってしまい、「なんとか削減しなければ…」と試行錯誤した結果、70MB まで減らしたことがあったためとなります。

参考として、削減内容をまとめておきます。

  • 不要なキャラクター立ち絵画像の削除: 30MB → 3MB まで削減
  • 不要なBGMの削除と置き換え: 18.9MB → 10MB まで削減
  • 背景画像データ(JPEG)の圧縮率変更: 12MB → 2.3MB まで削減