LoginSignup
5
1

【NeosVR】なぜアイテムやワールドが18MBと表示されるのか【解決方法あり〼】

Last updated at Posted at 2022-12-09

こんばんは。きさらぎです。

この記事はNeos VR (その3) Advent Calendar 2022の2日目の枠にさかのぼり投稿する記事です。
1日目はnonoNoxさんのquestコンでピースしたかった話の予定です。

背景

ある日、NeosJapanのDiscordサーバーに次のような質問がありました。

インベントリ整理していると、適当に保存したワールドもアイテムも大体17MBと少しという容量のものが多いのですが、何か固定で変なデータでも入っているのでしょうか?

kazuさんは「シェーダのデータも表示としては出てくるので多分それです」と答えていましたが、私は気になったので少し調べてみることにしました。

検証の手順

コード

  1. まずReSharperを開きます。
  2. 左ペインのタブをExplorerにします。
  3. 左上のプルダウンをAssembliesにします。
  4. プルダウンの下の段の一番左に値札のようなボタンがあるのでそれをクリックします。
  5. [以下EULAに抵触する危険性があるので省略]

ワールド

  1. ExportNeosToJsonを入れます
  2. NeosVRに入ります
  3. 新しいワールドを作ります。このときSpaceWorldを選択します
  4. 新しいワールドに入ります
  5. 何もせずセーブします。このとき保存する場所はお好みで構いません
  6. インベントリにワールドオーブが追加されます
  7. 追加されたオーブを一度クリックしてスポーンさせます
  8. オーブをグラブしたままダッシュメニューを開きます
  9. File Browserを開きます
  10. 右上の緑色になった[+]を押します
  11. ダッシュメニューを閉じます
  12. Export asと書かれたダイアログが出てきます
  13. JSONを選択します
  14. Exportを押します
  15. ダイアログが閉じます
  16. ターミナルを開きます
  17. 以下のコマンドを打ちます。ここで、$EXPORT_JSONは適切なファイルパスで置き換えてください。また、PowerShellをお使いの場合は書き換えるのが面倒だったので適宜読み替えてください。
script.sh
#!/bin/sh
jq < $EXPORT_JSON | \
  grep '@neosdb:///' | \
  sed -E -e 's! *"Data": !!g' \
    -e 's!@neosdb:///!https://assets.neos.com/assets/!g' \
    -e 's/.webp//' | \
  jq -r | \
  xargs --replace -- curl -sSL --head {} | \
  grep content-length | \
  awk '{ print $2 }' | \
  jq -s add

おそらく、あなたは以下の出力を得ることでしょう。

output
18460784

検証の結果

結局あれこれ調べた結果、空のワールドが18MBとして表示されるのは「予めNeosVRに組み込まれたフォントについて、利用者のストレージ使用量として計上されているように見える実装になっているからである」ということがわかりました。なのでそれを気合で潰します。

そして出来上がったのがDoNotIncludeDefaultResourceForSizeです。これを使うと上記の方法で作成したワールドの容量表示は約100KBとなり、より正確な消費量が計上されることが期待できます。

終わりに

さすがにそうはならないと思うので、NeosVRのイシュートラッカーであるNeosPublicにチケットを発行しました。
直るといいなあ…(遠い目)

お読みいただきありがとうございました。

3日目の記事

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1