VRMNXで新規作成したレイアウトをファイル保存するとファイルサイズはデフォルトで6MBになります。
空のわりにそこそこのサイズですが、セーブデータがMBサイズのゲームは他にもあるので特に気にしていませんでした。
しかし、レイアウトに高解像度(8192*2048)の天球テクスチャーを登録したところ、ファイルサイズが一気に70MB程度まで跳ね上がりました。
数十MBクラスのレイアウトファイルが大量に増えると流石にしんどいので原因を調べた結果、「レイアウトツールから天球テクスチャーを登録すると、何らかの変換が実行されて適用される」ことが分かりました。
これがビットマップ変換なら、画像解像度が大きくなると容量はかなり大きくなります。
試しに「縦横1pxのPNGファイル」を天球テクスチャーとして登録すると、デフォルトのファイルサイズは6MBから4MBまで減少しました。
更に「雲テクスチャー」2枚と「地形テクスチャー」4枚にもそれぞれ1px画像を適用するとファイルサイズは1.9MBまで減少しました。
レイアウトファイルの最小値も知りたくなったため、ダメ押しでレイアウトサイズ自体を最小の400mm四方に設定すると、ファイルサイズが1MBを切って940KBまで減少しました。
zip圧縮をするとファイルサイズは驚異の1KBまで圧縮できました。
雲や2枚目の天球テクスチャーを使わない場合は1px画像に置換することでファイルサイズを数MB小さく出来ることが分かりました。
しかし、高解像度の天球テクスチャーを使いたい場合はどうしよう?と思ったとき、リソースファイルは無変換でアーカイブ化されることに気付きました。
そこで、11MBの天球リソースをPNG画像リソースとして登録し、Pythonで起動時に
天球テクスチャーを読み込むように、
> vrmapi.LAYOUT().SKY().LoadSkyImage(0, "skytex")
を呼ぶようにしました。
これにより、高解像度の天球テクスチャーを使いつつ、ファイルサイズの増加がレイアウト+天球テクスチャーの画像サイズだけに抑えることが出来ます。
更にリソース経由ならjpegやgifも読み込めるようです。
(アニメーションは無効。またjpegなどは画像として正常に認識されない可能性あり)
ファイルサイズの比較結果は以下になります。
ということで、高解像度画像を使っているレイアウトのファイルサイズの肥大化を防ぐために、
①天球テクスチャーを使う場合はリソース登録+Pythonの「LoadSkyImage」関数で読み込む
②使わない画像リソースは1px画像ファイルに差し替える
を実施することで、ファイルサイズを小さくすることが出来ることが分かりました。
なお、地形テクスチャーについてはPythonでロードしたりする手段が現状ないため、上記の仕様に縛られるので注意してください。(zip圧縮は効きます)
上記の仕様は修正される可能性もありますが、レイアウトファイルサイズが大きくて困っている方はお試しください。
2021/10/31追記
Ver.6.0.0.219で画像リソースが正常なサイズで保存できるようになりました。
但し、デフォルト画像リソースはビットマップのままのため対策②は引き続き有効です。