自分のワールドが重い気がする。検索して出てきた対策を、片端から試してみました。テクスチャを小さくして、ライトを減らして、メッシュを結合して。半日かけたのに、体感はほとんど変わりません。
重さには種類があって、直し方がまったく違います。 熱があるからといって、棚の薬を全部飲む人はいません。
この記事では、どこが重いのかを見つける ところまでを扱います。直し方はそれぞれの記 事へ渡します。
この記事でわかること
- 重さを4つに分けて考えること
- 体感から当たりをつける方法
- 4つの計測窓の使い分け
- 前後を比べるための記録の残し方
作ったワールドが手元にあれば、それを使って読み進めてください。
重いには4つの種類がある
「重い」と一言で言っても、中身は4つに分かれます。

う れしいことに、体感からある程度あたりがつきます。
| 体感 | 疑うもの | 何が原因になりやすいか |
|---|---|---|
| カメラを振ると特にカクつく | 描画 | マテリアルの数、ポリゴン、透明な物の重なり |
| 何もしなくても重い。仕掛けを止めると軽くなる | 処理 | Udon、物理、アニメーション |
| 入室に時間がかかる。Questで落ちる | 容量 | テクスチャ、音声、メッシュ |
| 1人なら軽いのに、人が増えると重い | 同期 | 同期しているオブジェクトの数 |
この4分類が、この記事のいちばん大事な部分です。自分がどれを疑っているかがはっきりしていれば、読むべき記事も決まります。
| 疑うもの | 読む記事 |
|---|---|
| 描画 | 描画を軽くする |
| 処理 | Udonを軽くする、物理の負荷を下げる |
| 容量 | テクスチャとマテリアル |
| 同期 | ネットワーク同期入門 |
混同しやすい2つ を先に切り分けておきます。
- 入室が遅いことと、動きがカクつくことは別です。 前者は容量、後者は描画か処理です
- 描画が重いことと、処理が重いことも別です。 何も映さなくても重いなら処理です
4つの窓で覗く
道具も4つあります。それぞれ見えるものが違います。

| 道具 | どこで開くか | 何が見えるか |
|---|---|---|
| Stats | Gameビューの右上「Stats」 | いま何個描いているか |
| Profiler | Window → Analysis → Profiler | 1フレームの時間の内訳 |
| Frame Debugger | Window → Analysis → Frame Debugger | 1枚の絵ができるまでの順番 |
| ビルドのサイズ | SDKのビルド画面 | 来場者がダウンロードする量 |
いちばん手軽なのがStatsです。Gameビューを 表示して、右上の「Stats」を押すだけで出ます。
見る数字は4つで足ります。
| 項目 | 意味 |
|---|---|
| Batches | まとめて描いた回数 |
| SetPass calls | 描き方を切り替えた回数。ここが効きやすい |
| Tris | 三角形の数 |
| Verts | 頂点の数 |
SetPass calls から見てください。 マテリアルの種類が増えるほど大きくなる数字で、描画が重いワールドはここが膨らんでいることが多いです。
目安はひとつの参考として、こう考えてください。
| PC向け | Quest向け | |
|---|---|---|
| SetPass calls | 100前後まで | 数十まで |
| Tris | 数十万まで | 10万前後まで |
絶対の合格ラインではありません。 大事なのは、手を入れる前後で比べることです。
実践:自分のワールドを測る
自分のワールドを、4つの窓すべてで測ってみます。作りかけのものでも構いません。
1. 測る場所を決める
先に 測定条件を固定します。 ここを決めないと、数字がばらついて比べられません。
- 立つ位置を1か所決める(部屋の中央など)
- 向く方向を決める(いちばん物が多く見える向き)
- その場所へ行きやすいよう、Sceneビューでカメラの位置を覚えておく
いちばん重い景色を測ってください。 壁を向いた数字が良くても意味がありません。
2. Statsで描画を見る
Playして、決めた場所と向きに立ち、Gameビューの「Stats」を押します。
4つの数字を控えます。あとで比べるので、メモ帳でもテキストファイルでも構いません。
SetPass calls :
Batches :
Tris :
Verts :
その場で向きを変えて、数字がどう動くかも見てください。向いた方向で大きく変わるなら、その方向に重い物があります。
3. Profilerで処理を見る
「Window → Analysis → Profiler」を開いて、Playします。
グラフが流れ始めたら、適当なところで一時停止 して、1フレームを選びます。下半分に、そのフレームで何に時間を使ったかが出ます。
初心者が見るのは2か所だけで足ります。
| 見る場所 | 分かること |
|---|---|
| CPU Usageの帯 | 処理と描画のどちらが太いか |
| Hierarchy表示の上位 | 時間を食っている処理の名前 |
上位に PhysicsUpdate が並べば物理、Udon関連が並べば仕掛け、Camera.Render が太ければ描画です。名 前を正確に読む必要はありません。何系が太いかが分かれば十分です。

4. Frame Debuggerで描画の順番を見る
「Window → Analysis → Frame Debugger」を開いて、「Enable」を押します。
左に、1枚の絵ができるまでの手順が並びます。スライダーを動かすと、その時点までの絵 がGameビューに出ます。少しずつ絵が組み上がっていく様子が見えます。
見どころは2つです。
- 同じような物が何十回も別々に描かれていないか(まとめられる可能性があります)
- 見えないはずの物が描かれていないか(壁の裏など)
Statsで SetPass calls が多かったとき、その中身を確かめる道具だと思ってください。
5. ビルドして容量を見る
VRChat SDKのビルド画面を開きます。
ビルドすると、ダウンロードされるサイズ と 展開後のサイズ が表示されます。この2つを控えます。
Download Size :
Uncompressed Size :
入室に時間がかかると言われているなら、ここが大きくなっています。上限に近づいているかどうかも、この画面で分かります。
容量の大半はテクスチャです。 大きいと感じたら、まずテクスチャの解像度と枚数を疑ってください。
6. 記録を残す
最後 に、控えた数字を1つの表にまとめます。
| 項目 | 手を入れる前 | 手を入れた後 |
|---|---|---|
| SetPass calls | ||
| Tris | ||
| Download Size | ||
| Profilerで太かったもの |
この表があるかどうかで、最適化の作業がまったく違うものになります。
数字がなければ「たぶん軽くなった気がする」で終わります。数字があれば「SetPass callsが180から60になった」と言えます。効かなかった作業も分かるので、次から同じことをしなくて済みます。
測っても分からないときは
- Statsの数字が動かない → Gameビューが表示されていないか、Playしていません
- Profilerが読めない → 名前を読もうとしないでください。太い帯がどこかだけ見ます
- エディタでは軽いのに実機で重い → エディタは目安です。特にQuestは必ず実機で確かめます
- 人が増えると重い → 同期です。同期しているオブジェクトの数を数えてください
- どこも大きく見えない → 積み重ねかもしれません。少しずつ物を消して、どこで軽くなるか探します
- 数字が毎回違う → 立つ位置と向きが固定されていません
おまけ:先に知っておくと良いこと
- アバターの話と混同しない: よく見かける「Performance Rank」はアバターの指標です。ワールドは、自分で数字を見て判断します
- 1つずつ変える: 一度に3か所直すと、どれが効いたか分かりません。1つ変えて、測って、記録する。地味ですが、いちばん速い進み方です
- 軽い部屋から測らない: いちばん物が多い景色で測ってください。良い数字は安心をくれますが、何も教えてくれません
- Questを視野に入れるなら早めに測る: 完成してから容量を半分にするのは大変です。作りながら定期的にビルドして、サイズの伸び方を見ておきます
- 測るのは完成後だけではない: 大きなアセットを入れた直後や、仕掛けを1つ足した直後に測る癖をつけると、原因が1つに絞れます
まとめ
最適化は、測ることから始まります。
- 重さは描画・処理・容量・同期の4種類。直し方が違う
- 体感からある程度あたりがつく
- Statsは描画、Profilerは処理、Frame Debuggerは描画の中身、ビルド画面は容量
- 前後の数字を表に残す。1つずつ変える
手を入れる前の問いかけは、「いま自分は、4つのうちどれを直そうとしているか」 です。答えられないなら、まだ測る段階です。