2023年10月28日

公開したブラウザゲームのデータキャッシングがオンになっていたため、ユーザーのディスク容量を圧迫してしまっていたかも、という反省です。

データの保存場所

UnityのWebGLのセーブデータ(Player prefs)やキャッシュデータは、Edgeの場合ここに保存されます。

C:\Users\ユーザー名\AppData\Local\Microsoft\Edge\User Data\Default\IndexedDB

その他のブラウザの場合はこちらの記事が詳しいです

開いてみると、unityroomで遊んだゲームのデータがずらっと並んでいました。

PlayerPrefsやその他のログは~.leveldbフォルダ、キャッシュデータは~.blobフォルダに保存されているようです。

1件だけサイズが大きいフォルダがあることが伺えます。一体何のゲームかと思ったら、まさかの自作ゲーム「実録 ハイスコア刑務所」でした……。猛省!

データキャッシング

何も考えずにデータキャッシングをオンにしてビルドしてしまっていました。最適化不足のため容量がかさばり、キャッシュがディスク容量を圧迫してしまっていたようです。

データキャッシングの設定は、プロジェクト設定 → プレイヤー → 公開設定 → データキャッシングの項目でオンオフできます。

「データがキャッシュされた方が便利に決まっている」という先入観があり、悪いことはないと思っていたのですが、まさかこんなに容量が多いとは……。今作は繰り返し遊ぶタイプのゲームではないので、データキャッシングの恩恵はあまりないと思います。

基本的にはオフにしたほうがいいのかなと思います。知らないうちにプレイヤーのCドライブを圧迫してしまわないようにしてください。どうか同じ轍を踏まないでください……。

とはいえ他の投稿者さんのゲームのキャッシュデータは30~50MB程度に収まっていたので、重いゲームでなければそこまで気にしなくてもいいのかも(でもそれがずっと残ってしまうと思うと、やっぱり良くないのかも)。

そもそものゲームデータの容量を削減し、読み込み時間を短くすることが一番重要なのでは。当然の帰結。

セーブデータ

検証したわけではありませんが、データキャッシュをオフにしてもPlayerPrefsでのセーブは出来るようです。

Unityの標準的なセーブ機能であるPlayerPrefsは便利です。ビジュアルスクリプティングのセーブ変数もこれが使われています。WebGLなら困ることはそこまで無いのではと思います。


気付いた経緯

Cドライブの容量が多くなってきた → Windows11のストレージ使用量の解析によると「インストールされているアプリ」が多いらしい → でも計算が合わない → ストレージ容量を可視化するツールを使用 → Edgeのキャッシュが多いことが判明

そしてそのキャッシュの中でも2GBほどディスクを圧迫していたファイルを発見。unityroomのデータみたい → 2GBは断トツ。一体何のゲームなのか。まさか……。 → 私のゲームでした

(unityroomの場合、投稿したゲームファイルのURLは「別タブで開く」などから確認できます。)

公開前のテスト中のバージョンもキャッシングされたため、2GBというとんでもない容量になっていたようです。一旦それを削除し、再びプレイしたところ、キャッシュ容量は266MB程度で済んでいました。それでもかなり多いです……。

というわけで慌ててゲームのデータキャッシングをオフにしてアップデートしました。途中変更はトラブルの元なのでおすすめはしません……。更新後、キャッシュとクッキーのせいなのかブラウザが何度も停止してしまい(Edgeだと止まるけどFireFoxなら大丈夫で結局原因不明)、投稿サイトのサーバーの仕様変更の影響もあるのかなとか色々やり直して泥沼でした。最終的には読み込みは遅いもののなんとか再生できる状態まで来れました。コンソールを見たらシェーダーのエラーも出ているし分からないことが多すぎました……。

この場を借りて謹んでお詫び申し上げます……。

その後軽量化してファイルサイズ60MB、展開して150MB程度まで削減できました。

おわりに

Cドライブの空き容量を増やすべく上記Edgeのキャッシュを全てクリアしたところ、100GBほど容量削減できました。しかし遊んでいたゲームのセーブデータや各種クッキーが消えてしまい、しばらく後悔しました。パソコン初心者感。

よく分からないまま実装したことを改善すべく、よく分からないまま行動してしまっています……。

私と同じ過ちを繰り返してしまう人が減るよう祈っています。

Categories: