📘

ワールド軽量化トライ

2024/10/30に公開

ワールド軽量化トライ

Clusterで素材を利用するようになる(作りこむようになる)と、どうしてもワールドのサイズが大きくなります。
ワールドの重さ (データサイズ)
にデータサイズの目安があります。このようなサイズ感になると開発にも影響が出ますし、利用時にも大変です。今回は調べた範囲で軽量化に取り組みます。

計測

clusterのワールド容量削減に失敗しないための実践的な手順とはの記事に基本的に沿っただけです。。

AssetStudio.net472.v0.16.47.zipをダウンロード
Clusterにアップロードしたワールドのリソースで、ボトルネックになるようなデータを見つけることができます。

アップロードしたワールドのリソース先

### およそCCK2.25.0以前でアップロードリソース先確認方法
CCK2.25.0では、ローカルにあるワールドのリソース先はUnityプロジェクトに空フォルダが一時作成されるので、およその場所はわかると思います(Windows)。
ワールドの(テスト)アップロード時点でvenue############フォルダーがUnityのプロジェクトで表示されていました。(CCK2.25.0時点)。Assetに空フォルダがあるので名前はわかります。(テスト用のワールドアップロードだとアップロード完了でからフォルダは消えそう)

およそCCK2.22.0以前でアップロードリソース先確認方法

この作業は確認した範囲ではCCK2.22.0以前ではアップロードリソース先をわかるようなコンポーネントを配置して確認していたようです。
TemporaryCachePath.csの作成

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TemporaryCachePath : MonoBehaviour
{
    void Start()
    {
        print(Application.temporaryCachePath);
    }
}

ゲームオブジェクト(名前:TemporaryCachePath)を作成。このオブジェクトにTemporaryCachePath.csをドラッグアンドドロップします。

AssetStudioGUIで重いデータ特定

ワールドアップロードします(テストアップロードでもよさそうです)。
Unityでゲームプレイします、このとき一時フォルダーに配置されていました。
Windowsでは%temp%\DefaultCompany\Cluster Creator Kit Templateに配置されるようです。
僕が計測するファイルはvenue_######################のようなファイル名で、アップロードしたときのファイルサイズと一致しています。
AssetStudioGUI v0.16.47を起動し、venue_######################をドラッグアンドドロップします。
AssetStudioGUIでAsetListタブを開いてSizeでソートしました。
利用させていただいているトイレットペーパーやお風呂のテクスチャーがでかいみたい(トイレットペーパー!!?)

軽量化

テクスチャーの軽量化

AssetsにTexturesとして配置されていました。

  • 最大サイズを小さくした
  • 圧縮を高品質にした
    5分ほど全体テクスチャーについて圧縮をすると1/10以下になりました。。。

BGMやメッシュがワールドサイズの上位にくるようになり、これらの軽量化設定が必要そうです。
(Meshは簡略化すればいいのかな、BGMはYoutubeとかから動的に再生にすればサイズは小さくなるかな、、、などなど)

メッシュの軽量化

FBXファイルがたくさんあるワールドでは、そのファイル内のメッシュが絶望的に容量を占めていました。

Unityシーン容量削減勉強会 第3回 ~モデル編~こちらを参考にしました。

[編集]>[プロジェクト設定]で「頂点圧縮」を使うことができるらしい。
僕の環境は既に圧縮設定になっていました。。。

FBXファイルを選択して表示されるインスペクターのうち「メッシュ圧縮」を高にすると、メッシュのサイズが数十%削減されました。
秘教のゆ、というワールドでは130MBから100MBまで軽量化できました。うーん、メッシュの圧縮はあまり期待できない感じです。。

フォントの軽量化

clusterのTextViewのあれこれの通り、文字列をワールド表示するときにはTextViewコンポーネントを付けたアイテムを用意すると思います。このときたった数文字表示するだけでワールドのサイズが30MBほど増加してしまいます。
TextViewコンポーネントのコードをぐっとにらむと、決め打ちでNotoSansCJKjp-Regular.otfをフォントとして参照しているので、これは変えられないようでした。

[UI]>[古い機能]>[テキスト]で表示されるテキストはフォントがArialでした。clusterのランキングボード&コメントボードを軽くしたい。によると、日本語入力に対してシステムフォントを使って表示はされるものの、ワールドのサイズとしては日本語を持っていないから軽量化できるらしい。

Discussion