見出し画像

Unity Naninovelビルドサイズ削減 その1 背景テクスチャ設定

結論:


使用しない背景テクスチャやキャラテクスチャは
Naninovel Configurationのテクスチャ登録から外す

テクスチャのサイズはDefaultの設定
MaxSize : 2048 Compression : Normal Qualityで結構いい感じ

ビルド環境
Win10 + Unity 2019.4.22f1 (64-bit) +Naninovel v1.15
Naninovel設定解像度 608*1080 
※1920*1080をベースに設計(スマホ、PCの両対応)してそこからトリミングしている
画質確認モニター:1920*1080p FHD


ビルドされるテクスチャサイズの確認


ビルドログから確認が可能

WindowsOS: C:\Users\"username"\AppData\Local\Unity\Editor\Editor.log
格納場所はここらしい

UnityEditor上でビルドログの確認したい場合はconsole右上の小さいドロップダウンメニューをクリックして"Open Editor Log"

下記のような感じで、ビルド時にどのアセットやファイルが重いのかがわかる。意外と日本語フォントが重かったりといろいろ気付くことがある。

Build Report
Uncompressed usage by category (Percentages based on user generated assets only):
Textures               20.0 mb	 45.4% 
Meshes                 0.0 kb	 0.0% 
Animations             52.3 kb	 0.1% 
Sounds                 0.0 kb	 0.0% 
Shaders                184.6 kb	 0.4% 
Other Assets           7.8 mb	 17.6% 
Levels                 134.0 kb	 0.3% 
Scripts                2.5 mb	 5.6% 
Included DLLs          13.3 mb	 30.2% 
File headers           122.4 kb	 0.3% 
Total User Assets      44.0 mb	 100.0% 
Complete build size    97.3 mb
Used Assets and files from the Resources folder, sorted by uncompressed size:
5.3 mb	 5.5% Assets/Models/Leiss01/Leiss.2048/texture_00.png
3.4 mb	 3.5% Assets/Scenes/Font/rounded-mplus-1c-heavy.ttf
3.2 mb	 3.3% Assets/Scenes/Font/rounded-mplus-1c-regular.ttf
1.3 mb	 1.4% Assets/Models/Troll/troll-live2d.1024/texture_00.png
1.0 mb	 1.1% Assets/Naninovel/Fonts/Roboto-Regular SDF.asset
1.0 mb	 1.0% Assets/Naninovel/Textures/SunShafts.png
1013.1 kb	 1.0% Assets/TEMP_NANINOVEL/Resources/Naninovel/Backgrounds/MainBackground/title1.png
1013.1 kb	 1.0% Assets/TEMP_NANINOVEL/Resources/Naninovel/Backgrounds/MainBackground/pretitle.png
1013.1 kb	 1.0% Assets/TEMP_NANINOVEL/Resources/Naninovel/Backgrounds/MainBackground/field2.png
1013.1 kb	 1.0% Assets/TEMP_NANINOVEL/Resources/Naninovel/Backgrounds/MainBackground/field1.png
1013.1 kb	 1.0% Assets/TEMP_NANINOVEL/Resources/Naninovel/Backgrounds/MainBackground/enter.png
1013.1 kb	 1.0% Assets/TEMP_NANINOVEL/Resources/Naninovel/Backgrounds/MainBackground/cave1.png
1013.0 kb	 1.0% Assets/TEMP_NANINOVEL/Resources/Naninovel/Backgrounds/MainBackground/die2.png
1013.0 kb	 1.0% Assets/TEMP_NANINOVEL/Resources/Naninovel/Backgrounds/MainBackground/die1.png
768.1 kb	 0.8% Assets/Naninovel/Textures/GlitchPattern.png
768.1 kb	 0.8% Assets/Naninovel/Resources/Naninovel/Textures/Clouds.jpg
550.8 kb	 0.6% Assets/Naninovel/Textures/UI/Bubble.png
527.9 kb	 0.5% Assets/Naninovel/Fonts/Roboto-Regular.ttf
以下略


Resources以下のファイルはすべてビルドされる。(※Unity 側でどれが必要か判断することができないため)
Naninovel Configulationで背景テクスチャやキャラテクスチャを登録すると
TEMP_NANINOVEL/Resourcesに展開されるからか、スクリプト上で画像呼び出していなくても登録したすべてのテクスチャがビルド対象となってしまう。そのためビルドサイズ削減するには、使用しなかったテクスチャはNaninovel Configulationのリストから削除してやる必要がある。


※ちょっとした気づき:WebGLの場合ビルドレポートのComplete build sizeと実際ビルドされた成果物とで異なるっぽい。Windowsむけ等スタンドアロンビルドは一致する。


テクスチャの圧縮設定


用意した背景png画像は計8枚。
Windows上のサイズは1920*1080の1.64Mb~3.22MB程度

基本的にpng画像を2DのUnityProjectにインポートするとTexture Type: 2D Spriteに変換される。この時の画像のインスペクタから画質やサイズの調整ができる。テクスチャを複数選択することで一括で調整可能。

インスペクタウィンドウの最下部にプレビューが隠れているのでRestore in Inspectorボタンを押してプレビュー画面引っ張り出す。
ここをモニターしながら圧縮の設定を変えてビルド時のサイズがどうなるかを確認できる。1.64Mb~3.22MBとデータサイズがそれぞれ異なるものでもUnity上のテクスチャビルドサイズはほぼ一律になるっぽい。

Unityの画像インポートについて 公式マニュアル引用
テクスチャ (JPG、PNG、PSD、TGA など) これらの形式は、グラフィックスカードやモバイルデバイスなどの 3D グラフィックスハードウェアによるリアルタイムのレンダリングでは使用されません。3Dグラフィックスハードウェアでは、最適化された専用の形式でテクスチャを圧縮する必要があります。異なるプラットフォームとデバイスにはそれぞれ独自のフォーマットがあります。


圧縮フォーマット一覧はこちら(Unityユーザーズマニュアル(2019.4 LTS)を参照)

画像1


ビルドサイズ比較

1920*1080(元サイズ2.22Mb)のテクスチャ一枚のビルドサイズを比較する。
プラットフォームはWebGLなので圧縮形式はRGBA Compressed DXT5になった。

圧縮の質を変更した場合の結果
MaxSize: 2048 固定
Compression: None -> High Quality-> Normal Quality-> Low Quality
ビルドサイズ: 5.9M -> 2.0M -> 1.0M -> 1.0M(効果無し)

画質はNormal(Low)でも十分キレイに見えた。Noneだと最高画質だろうけどサイズ増

最大サイズを変更した場合の結果
Compression: Normal Quality 固定
MaxSize: 2048 -> 1028
ビルドサイズ: 1.0MB -> 288KB

ビルドサイズはかなり小さくなるが、Unity上でレンダリングされる画像は相当劣化する。Naninovelの背景テクスチャは自動で画面いっぱいに引き延ばすようなので、(1028*578)相当の画像を1920*1080pに引き延ばすような感じの劣化具合。
以上、設定の中にはビルドサイズは軽くすることができるが、画質劣化や画像ロード時間にも影響するので、自分の目で見て、触って納得のいく設定にすること。


これらの結果を踏まえて再度自前アプリをビルド


ふりーむで公開中の1分間ノベルアプリ


こちらは解像度が現在スマホむけ9:16
これは1920*1080から608*1080のサイズにトリミングされているだけなのでビルドする画像サイズに影響ない。

圧縮設定はDefault(Normal Quality)のまま。使用しなかったテクスチャを整理した。
結果:WebGLビルドが52.4Mbyte->47.3Mbyteくらいになった。
用意した画像のテクスチャ合計が背景とLive2Dのものも含めて20Mbyteくらい。Unityの空のプロジェクトビルドで10MbyteくらいらしいのでNaninovelのアセット分を考慮すると妥当な結果といえる。

参考資料リンク

Unityビルドサイズ圧縮(公式)
https://docs.unity3d.com/ja/current/Manual/ReducingFilesize.html

Unityテクスチャ(公式)
https://docs.unity3d.com/ja/2019.4/Manual/class-TextureImporterOverride.html

かなり詳しいUnityビルドサイズ削減考察
https://kan-kikuchi.hatenablog.com/entry/Unity_App_Size

ビルドレポート
https://qiita.com/unsoluble_sugar/items/153f9d22283855203bbf

空のUnityプロジェクトのビルドサイズについて
https://kazupon.org/unity-empty-project-small-size/

この記事が気に入ったらサポートをしてみませんか?