これから始まる文章は、unityでアプリやゲームを作成する皆さんに向けて書いたものです。
unityで開発されたアプリやゲームを使う人々とパソコンやスマートフォンなどの
端末の消費電力や通信費を少なく抑えるためのWebGLビルドの設定方法を説明します。
今回の説明では、unityで作成したアプリを使用する人々の端末の寿命を長持ちさせることに重点を置きました。
説明するときのunityのバージョンは2021.3.45f1です。
今回の説明内容に誤りがあった場合はコメントで教えてください。
また、皆さんからの意見などコメントでお待ちしております。
よろしくお願いします。
●WebGLのビルド設定
テクスチャ圧縮
テクスチャ圧縮を適切に設定することで、ファイルサイズを大幅に削減し、通信費を節約できます。
ファイルサイズとは 圧縮率の高い形式(ETC2)を使用することで、テクスチャのファイルサイズが小さくなります。
これにより、ユーザーがゲームをダウンロードする際のデータ通信量が減り、通信費の削減につながります。
また、テクスチャのロード時間が短縮されるため、CPUやストレージの負荷が減り、電力消費を抑えることができます。
開発ビルド
開発ビルド(Development Build)を無効にすることを推奨します。
開発ビルドは、デバッグ情報を含んでいるため、ファイルサイズが大きくなります。
これを無効にすることで、ビルドサイズが小さくなり、通信費を削減できます。
コード最適化は速度かサイズを選択設定できます。
速度(Speed) と サイズ(Size) の選択肢がある場合、サイズ(Size) を選択します。
これにより、コードの最適化がファイルサイズを最小限に抑えるように行われます。
ビルドサイズが小さくなることで、ユーザーのダウンロード時間が短縮され、通信費の削減につながります。
プロファイラーを自動接続
プロファイラーを自動接続(Autoconnect Profiler)を無効にすることを推奨します。
この設定を有効にすると、プロファイリングに必要なデータがビルドに含まれるため、ファイルサイズが大きくなります。
また、プロファイリングデータは通信を通じてUnityエディターに送信されるため、通信量が増加します。
これを無効にすることで、ファイルサイズと通信量を削減できます。
詳細プロファイリングサポート
詳細プロファイリングサポート(Detailed Profiling Support)を無効にすることを推奨します。
これもプロファイリング関連の設定であり、有効にするとビルドサイズが増加します。
これを無効にすることで、ビルドサイズが小さくなり、通信費の削減につながります。
IL2CPPコード生成はより速いランタイムかより速い(小さい)ビルドを選択設定できます。
IL2CPPコード生成(IL2CPP Code Generation) の選択肢として 「より速いビルド(小さいビルド)」 がある場合、これを選択します。
これは、コードを最適化してビルドサイズを最小限に抑える設定です。
これにより、ゲームのダウンロードサイズが減り、通信費の削減に最も効果的です。
●プレイヤー設定
●Adaptive Performanceは今回は説明を省きます。
Unityのプレイヤー設定にあるオーディオ項目は、ゲームの音響システムを詳細に制御し、パフォーマンスに影響を与えます。
電力と通信費を最小限に抑えるための設定も合わせて解説します。
●オーディオ設定項目の詳細
グローバルボリューム (Global Volume)とは
意味は ゲーム全体のマスターボリュームです。
電力または通信費を節約する設定とは 電力の消費を抑えるために数値0で設定する。
音量ロールオフスケール(Volume Rolloff Scale)とは
意味は 3Dオーディオソースの音量が距離に応じて減衰する割合を調整します。
値が大きいほど、より遠くまで音が届くようになります。
電力または通信費を節約する設定とは 数値0または小さく設定することで、遠くのオーディオソースの計算を早めに停止させ、CPU負荷を軽減できます。
ドップラーファクター(Doppler Factor)とは
意味は 移動するオーディオソースのドップラー効果(音のピッチ変化)の強さを調整します。
電力または通信費を節約する設定とは 電力/通信費の影響は小さいですが数値0で設定することをお勧めします。
デフォルトスピーカーモード(Default Speaker Mode)とは
意味は ゲームが使用するスピーカーのデフォルト設定(モノラル(Mono)、ステレオ、クアッド、サラウンド、サラウンド5.1、サラウンド7.1、プロロジックDTSなど)です。
電力または通信費を節約する設定とは 複雑なモード(7.1ch)は、より多くのCPU処理を必要とするため、ステレオやモノラルに設定することで電力消費を抑えられます。
おすすめはモノラル(Mono)です。
システムサンプルレード (System Sample Rate)とは
意味は オーディオシステムが使用するサンプリング周波数(Hz)です。
電力の消費を抑えるには、数値0または小さな値に設定すると、オーディオファイルのファイルサイズを小さくでき、メモリ使用量と処理負荷を減らせます。
DSPバッファサイズ(DSP Buffer Size)とは
DSPバッファサイズの設定と効果
DSPバッファサイズは、オーディオデータが処理される際のデータブロックの大きさを決定します。
この設定は、CPUの負荷とオーディオの遅延(レイテンシー)に直接影響します。
設定できる選択は下記の3通りです。
最小の遅延(最小のレイテンシー)とは
意味は バッファサイズが最も小さく、リアルタイム性が最も高い設定です。
効果とは CPUはより頻繁にオーディオデータを処理する必要があります。
これにより、CPU負荷が高くなり、電力消費が増加します。
良好な遅延(標準的なレイテンシー)とは
意味は 最小遅延とベストパフォーマンスの中間の設定です。
効果とは バランスの取れたCPU負荷と遅延を提供します。
ベストパフォーマンス(最高のパフォーマンス)とは
意味は バッファサイズが最も大きく、CPUが一度に処理するデータ量が増える設定です。
効果とは CPUの処理頻度が減り、CPU負荷が最も低くなります。
その結果、電力消費が削減されます。
また、バッファサイズが大きいことでオーディオ処理のオーバーヘッドが減り、全体的なパフォーマンスが向上します。
電力と通信費の削減
電力の消費を抑えるには DSPバッファサイズを大きくすることで、CPUの処理頻度が下がり、消費電力が削減されます。したがって、ベストパフォーマンスが最適です。
DSPバッファサイズは、ネットワーク通信量に直接影響しません。通信費を削減するには、オーディオファイルの圧縮率を高めるなどの対策が必要です。
結論として、ベストパフォーマンスを選択することで、CPU負荷が最も低くなり、結果として電力消費を最小限に抑えることができます。
最大仮想音声数 (Maximum Virtual Voices)とは
意味は 同時に再生可能なオーディオソースの最大数です。
この数を超えた場合、音量の小さいものから再生が停止されます(仮想化)。
電力または通信費を節約する設定は 数値1または小さな値に設定することで、同時に処理するオーディオの数を制限し、CPU負荷を軽減できます。
最小数値1に設定することがおすすめです。
最大実音声数(Maximum Real Voices)とは
意味は DSP(デジタル信号処理)が実際にミキシングするオーディオソースの最大数です。
電力または通信費を節約する設定は 数値1または小さな値に設定することで、CPU負荷を直接的に軽減し、電力消費を抑えられます。
最小数値1に設定することがおすすめです。
スべーシャライザープラグイン (Spatializer Plugin)とは
意味は 3Dオーディオを空間的に表現するためのプラグインです。
電力または通信費を節約する設定は オフ(None)にすることで、プラグインの処理負荷をなくし、電力消費を抑えられます。
アンビソニックデコーダープラグイン(Ambisonic Decoder Plugin)とは
意味は アンビソニックスフォーマットのオーディオをデコードするためのプラグインです。
電力または通信費を節約する設定は 通常は不要なためオフ(None)にすることで、余計な処理をなくし、電力消費を抑えられます。
unityのオーディオを無効にする (Disable Unity Audio)とは
意味は Unityのオーディオシステム全体を無効にします。
電力または通信費を節約する設定は ゲームで音を全く使用しない場合に、これを有効にすることで、オーディオ関連のCPU処理を完全に停止し、電力消費を大幅に削減できます。
出力サスペンションを有効にする(エディターのみ) (Enable Output Suspension)とは
意味は エディターで再生中に、他のアプリケーションにフォーカスが移った際にオーディオ再生を停止する機能です。
エディターのみの設定であり、ビルド後のゲームのパフォーマンスには影響しません。
仮想化エフェクト (Virtualization Effects)とは
意味は 仮想化されたオーディオソースにエフェクトを適用するかどうかです。
電力または通信費を節約する設定とは 無効にすることで、仮想化されたオーディオソースに対するエフェクト処理がなくなり、CPU負荷が軽減されます。
オーディオ設定で電力と通信費を最小限にするための設定まとめ
電力と通信費を最小限にするには、以下の設定を組み合わせることが最も効果的です。
Unityのオーディオを無効にする。
音を使用しないゲームであれば、これが最も効果的です。
最大仮想音声数と最大実音声数を小さい値に設定し、同時に処理するオーディオ数を制限します。
DSPバッファサイズをベストパフォーマンスに設定し、CPUの処理頻度を減らします。
デフォルトスピーカーモードをモノラルに設定し、複雑な空間処理を避けます。
音量ロールオフスケールを小さく設定し、不要な計算を早めに停止させます。
スペーシャライザーとアンビソニックプラグインをオフにします。
これらの設定により、オーディオ処理のCPU負荷が軽減され、バッテリー消費の抑制につながります。
通信費に関しては、オーディオアセットの圧縮率を高めることが有効です。
●Burst AOT Settingsの各項目
Enable Burst Compilation(Burstコンパイルを有効にする)
意味は この設定を有効にすると、BurstコンパイラがC# Job SystemやEntitly Component System (ECS) のコードを、プラットフォームに最適化された高速なネイティブコードに変換します。
電力または通信費を節約する設定は 有効にすることでコードの実行速度が大幅に向上し、CPUの処理時間が短縮されるため、電力消費を削減できます。
Enable Optimizations(最適化を有効にする)
意味は コンパイル時にアセンブリレベルでの最適化を有効にします。
これにより、より効率的な機械語コードが生成されます。
電力または通信費を節約する設定には この設定も有効にすることでパフォーマンス向上に寄与し、CPUの処理効率を高めるため、電力消費の削減につながります。
Force Debug Information (デバッグ情報を強制する)
意味は 通常、デバッグビルドでのみ生成されるデバッグ情報を、リリースビルドでも強制的に含める設定です。
電力または通信費を節約する設定には 有効にするとデバッグ情報が含まれてビルドサイズが大きくなり、実行時のオーバーヘッドが増えるため、電力消費が増加します。
製品版では無効にすることが推奨されます。
Debug Information Kind(デバッグ情報の種類)
意味は デバッグ情報の内容を詳細に設定します。
Debug Information Kindの設定項目であるFullとLine Onlyの違いについて説明します。
Full
意味は この設定を選択すると、コンパイルされたコードに、デバッガがブレークポイントを設定したり、変数の値を検査したりするために必要なすべてのデバッグ情報が含まれます。
影響とは デバッグ情報が完全に含まれるため、生成されるコードのサイズは大きくなります。
Line Only
意味は この設定を選択すると、コンパイルされたコードに、ブレークポイントを設定するために必要な行番号情報のみが含まれます。
変数の値などを検査する詳細なデバッグ情報は含まれません。
影響とは デバッグ情報が最小限になるため、生成されるコードのサイズは小さくなります。
どちらを選択すべきか?
開発中には Fullを選択するのが一般的です。
これにより、詳細なデバッグが可能になり、バグの特定が容易になります。
製品版には Line Onlyを選択することで、ビルドサイズを小さくすることができます。
製品版では通常、デバッグは不要なので、余分な情報を削除することが望ましいです。
結論として、開発フェーズではFullを選択し、リリースフェーズではLine Onlyを選択することで、開発効率と製品の軽量化を両立できます。
Optimize For (最適化の対象)
意味は コードを特定のCPUアーキテクチャに最適化するための設定です。
電力または通信費を節約する設定は ターゲットデバイスのCPUに合わせて適切に設定することで、コードの実行効率が最大化され、電力消費を削減できます。
Optimize For の各設定
Defaultとは
意味は デフォルトの最適化設定です。通常、パフォーマンスとコンパイル時間のバランスが取れています。
通常の最適化が行われるため、良好なパフォーマンスが得られ、電力消費も抑えられます。
Performance (パフォーマンス)とは
意味は 実行速度を最大限に高めることを優先します。コンパイル時間は長くなり、生成されるコードのサイズは大きくなる可能性があります。
実行速度が最も速くなるため、CPUの処理時間が短縮され、電力消費を最も削減できる可能性があります。
Size (サイズ)とは
意味は 生成されるコードのサイズを最小限に抑えることを優先します。コンパイル時間は短くなり、実行速度は犠牲になる可能性があります。
コードサイズが小さくなると、キャッシュヒット率が向上し、電力消費が抑えられる場合がありますが、パフォーマンス最適化ほど顕著ではありません。
Fast Compilation (高速コンパイル)とは
意味は コンパイル時間を最優先します。最適化はほとんど行われず、デバッグやイテレーションを高速化するために使用されます。
実行速度が遅くなるため、CPUの処理時間が長くなり、電力消費が増加する可能性があります。
Balanced (バランス)とは
意味は パフォーマンスとコンパイル時間のバランスを優先します。
Default と同様に、良好なパフォーマンスと電力消費のバランスが取れています。
電力と通信費を節約する設定
電力消費を最小限に抑えるためには、Performance を選択するのが最も効果的です。
実行速度が向上することでCPUの処理時間が短縮され、消費電力が削減されます。
この設定はコードの実行時パフォーマンスに特化しているため、通信費には直接的な影響はありません。
通信費を削減するには、WebGLビルド設定の「圧縮形式」を Brotli に設定するなど、アセットやビルド自体のサイズを小さくする対応が必要です。
Disabled Warnings (無効化された警告)
意味は Burstコンパイラが生成する特定の警告メッセージを無効にする設定です。
電力または通信費の節約には直接的な影響はありません。
電力と通信費を削減する方法
Burstコンパイラは、CPUの計算負荷を最適化することで電力消費を抑える効果があります。
電力を節約する設定とは
Enable Burst CompilationとEnable Optimizationsを有効にします。
これにより、CPU負荷が軽減され、処理時間が短縮されます。
Force Debug Informationを無効にします。
通信費を節約する設定とは
Burst設定はCPUの実行時パフォーマンスに特化しているため、通信費には直接的な影響を与えません。
通信費を削減するには、ビルド設定の圧縮形式を最適化する、アセットバンドルのサイズを削減するなどの対応が必要です。