vrc-worlds について
VRChat SDK と Unity を使った VRChat ワールドの構築・最適化を支援するスキルです。Quest 互換性、性能上限、ベイク済みライティング、スポーン設定、実機テストを扱います。
主な機能
- 01Quest優先のワールド設計
- 02性能上限のガイド
- 03ベイク済みライティング設定
- 04スポーンとリスポーンの構成
- 05オクルージョンカリングとLODの確認
- 06実機テスト用チェックリスト
活用シーン
- 01VRChatワールドのシーン設計
- 02Quest向けのワールド最適化
- 03スポーンとリスポーン領域の設定
- 04アップロード前の性能確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ alexanderstephenthompson/ claude-hub --skill vrc-worldsインストール後、Claude Code で/vrc-worldsを入力して読み込まれたか確認します。
同梱ファイルassets/world-upload-checklist.mdreferences/lighting-baking.md
詳細
VRChat ワールドスキル
バージョン: 1.0 スタック: VRChat SDK、Unity
PC で 30fps で動作する VRChat ワールドでも、Quest では 5fps になることがあります。エディターでは見栄えのよいリアルタイムライトも、ルーム内のすべてのプレイヤーのパフォーマンスを大きく低下させます。Unity エディター上ではパフォーマンスが実際よりよく見え、実機と実際のプレイヤーでテストするまではすべてが滑らかに動作しているように感じられます。また、VRChat のパフォーマンスランク制度では、最適化が不十分なワールドは体験が悪くなるだけでなく、訪問者も減ります。
ベイク済みライティング、適切なスポーン設定、オクルージョンカリングを取り入れて Quest を優先して制作すれば、ワールドはあらゆる環境で快適に動作し、ランク制度によるプロモーションも受けやすくなります。
対象範囲と境界
このスキルで扱う内容:
- ワールドのセットアップとシーン階層
- VRChat のパフォーマンス上限
- ライティングとベイク
- スポーンとリスポーンの設定
- ワールドの最適化
- SDK コンポーネント
以下はほかのスキルに委ねます:
vrc-udon:スクリプティングとネットワークunity-csharp:C# のパターンとパフォーマンス最適化
このスキルを使用する場面: VRChat ワールドの制作または最適化。
基本原則
- Quest との互換性 — まず Quest 向けに制作し、PC 向けに機能を強化します。
- 可能な限りすべてベイクする — リアルタイムライティングはパフォーマンスを著しく低下させます。
- 上限を守る — パフォーマンスランクの基準内に収めます。
- 実機でテストする — エディター上のパフォーマンスは実際とは異なります。
- スポーンは重要 — 最初の印象はスポーン地点で決まります。
パフォーマンス上限
Quest(目標:Excellent/Good)
| 指標 | Excellent | Good | Medium |
|---|---|---|---|
| 三角形数 | 50,000 | 100,000 | 200,000 |
| バッチ数 | 50 | 100 | 200 |
| マテリアル数 | 25 | 50 | 75 |
| ライト(リアルタイム) | 0 | 1 | 2 |
PC(目標:Excellent/Good)
| 指標 | Excellent | Good | Medium |
|---|---|---|---|
| 三角形数 | 500,000 | 1,000,000 | 2,000,000 |
| バッチ数 | 100 | 200 | 400 |
| マテリアル数 | 50 | 100 | 200 |
| ライト(リアルタイム) | 2 | 4 | 8 |
パターン
シーン階層
World
├── Environment
│ ├── Static (mark as static)
│ │ ├── Ground
│ │ ├── Buildings
│ │ └── Props
│ └── Dynamic
│ └── Interactive objects
├── Lighting
│ ├── Directional Light (baked or mixed)
│ ├── Light Probes
│ └── Reflection Probes
├── Audio
│ └── Audio sources
├── VRChat
│ ├── VRCWorld (descriptor)
│ ├── Spawn Points
│ └── Mirrors/Portals
└── Udon
└── Scripts and behaviors
スポーンエリアの設定
Spawn Checklist:
- Multiple spawn points (avoid stacking)
- Clear floor (no obstacles)
- Good lighting (players see themselves)
- Mirror nearby (avatar check)
- Safe area (no hazards)
- Interesting view (sets the mood)
ライティングの設定(Quest 対応)
1. Set all lights to "Baked"
2. Mark static geometry as "Contribute GI" + "Reflection Probe Static"
3. Place Light Probes for dynamic objects
4. Place Reflection Probes for shiny surfaces
5. Bake with GPU Lightmapper
6. Delete realtime lights or set to "Not Important"
オクルージョンカリングの設定
1. Mark large static objects as "Occluder Static"
2. Mark all static objects as "Occludee Static"
3. Window > Rendering > Occlusion Culling
4. Set appropriate cell sizes
5. Bake
6. Test with Occlusion visualization
アンチパターン
| アンチパターン | 問題 | 対処法 |
|---|---|---|
| Quest でリアルタイムライトを使用する | パフォーマンスが大幅に低下する | すべてのライティングをベイクする |
| ライトプローブがない | 動的オブジェクトが黒くなる | ライトプローブグループを追加する |
| スポーン地点が1つだけ | プレイヤーが参加時に重なり合う | 間隔を空けて複数のスポーン地点を設置する |
| 反射をベイクしていない | 処理負荷が高い、または正常に動作しない | ベイク済みのリフレクションプローブを使用する |
| 小道具に LOD がない | 遠距離でも詳細な表示が続く | LOD グループを追加する |
| Quest でポストプロセスを使用する | サポートされておらず、無視される | PC 専用にするか、削除する |
チェックリスト
セットアップ
- VRCWorld ディスクリプターを設定した
- 複数のスポーン地点を配置した
- リスポーンの高さを適切に設定した
- リファレンスカメラを設定した
パフォーマンス
- すべての静的オブジェクトを Static に設定した
- ライティングを完全にベイクした(Quest)
- ライトプローブでプレイエリアをカバーした
- オクルージョンカリングをベイクした
- 重要なメッシュに LOD を設定した
- Quest の実機でテストした
品質
- スポーンエリアを居心地よくした
- スポーン地点の近くにミラーを設置した
- Z ファイティングや表示上の不具合がない
- オーディオレベルを調整した
- ワールドに内容がわかる名前を付けた
参考資料
references/lighting-baking.md— VRChat ワールド向けベイク済みライティングの設定
アセット
assets/world-upload-checklist.md— ワールドのアップロードに必要な項目を網羅したチェックリスト
コメント
Markdown 対応