unity-vrc-world-sdk-3
SKILL.md
VRChat World SDK 3 Guide
Table of Contents
| Section | Content | Reference |
|---|---|---|
| Scene Setup | VRC_SceneDescriptor, Spawn | This file |
| Components | Pickup, Station, Mirror | references/components.md |
| Layers & Collision | Layers, Collision Matrix | references/layers.md |
| Performance | Optimization guide | references/performance.md |
| Lighting | Lighting settings | references/lighting.md |
| Audio & Video | Audio, Video players | references/audio-video.md |
| World Upload | Upload workflow | references/upload.md |
| Troubleshooting | Problem solving | references/troubleshooting.md |
| Cheatsheet | Quick reference | CHEATSHEET.md |
SDK Versions
Supported versions: SDK 3.7.1 - 3.10.2 (as of March 2026)
| SDK | New Features | Status |
|---|---|---|
| 3.7.1 | StringBuilder, Regex, System.Random | ✅ |
| 3.7.4 | Persistence API (PlayerData/PlayerObject) | ✅ |
| 3.7.6 | Multi-platform Build & Publish (simultaneous PC + Android builds) | ✅ |
| 3.8.0 | PhysBone dependency sorting, Force Kinematic On Remote, Drone API | ✅ |
| 3.8.1 | [NetworkCallable] events with parameters, Others/Self targets |
✅ |
| 3.9.0 | Camera Dolly API, Auto Hold simplification, VRCCameraSettings | ✅ |
| 3.10.0 | Dynamics for Worlds (PhysBones, Contacts, VRC Constraints) | ✅ |
| 3.10.1 | Bug fixes and stability improvements | ✅ |
| 3.10.2 | EventTiming extensions, PhysBones fixes, shader time globals | ✅ Latest stable |
Important: SDK versions below 3.9.0 are deprecated as of December 2, 2025. New world uploads are no longer possible with these versions.
Scene Setup
VRC_SceneDescriptor (Required)
Exactly one is required in every VRChat world.
[VRCWorld Prefab]
├── VRC_SceneDescriptor (Required)
├── VRC_PipelineManager (Auto-added)
├── VRCWorldSettings (Optional - movement speed settings)
└── AvatarScalingSettings (Optional - avatar scale limits)
All Properties
| Property | Type | Description | Default |
|---|---|---|---|
| Spawns | Transform[] | Array of spawn points | Descriptor position |
| Spawn Order | enum | Sequential/Random/Demo | Sequential |
| Respawn Height | float | Respawn height (Y axis) | -100 |
| Object Behaviour At Respawn | enum | Respawn/Destroy | Respawn |
| Reference Camera | Camera | Player camera settings reference | None |
| Forbid User Portals | bool | Disable user portals | false |
| Voice Falloff Range | float | Voice attenuation range | - |
| Interact Passthrough | LayerMask | Interact passthrough layers | Nothing |
| Maximum Capacity | int | Max player count (hard limit) | - |
| Recommended Capacity | int | Recommended player count (UI) | - |
Spawn Order Behavior
Sequential: 0 → 1 → 2 → 0 → 1 → 2... (in order)
Random: Random selection
Demo: All players spawn at Spawns[0]
Reference Camera Usage
// Usage:
// 1. Adjust Near/Far clipping (recommended for VR: 0.01 ~ 1000)
// 2. Apply Post Processing effects
// 3. Set background color
// Setup steps:
// 1. Create a Camera (name: "ReferenceCamera")
// 2. Adjust Camera component settings
// 3. Disable the Camera (uncheck the component)
// 4. Assign it to VRC_SceneDescriptor's Reference Camera
Spawn Points Setup
// Setup steps:
// 1. Create an empty GameObject
// 2. Set position and rotation (players face the Z+ direction)
// 3. Add to the VRC_SceneDescriptor Spawns array
// Recommendations:
// - At least 2-3 spawn points (for simultaneous joins)
// - Slightly above the floor (~0.1m)
// - Clear of obstacles
// - Account for VR player guardian boundaries
Required Setup Checklist
□ Exactly one VRCWorld Prefab exists in the scene
□ At least one Transform set in Spawns
□ Respawn Height set to an appropriate value (well below the floor)
□ Reference Camera configured for clipping distances (for VR)
□ Layer/Collision Matrix correctly configured
□ "Setup Layers for VRChat" has been executed
Components
| Component | Required Elements | Purpose | SDK |
|---|---|---|---|
| VRC_SceneDescriptor | - | World settings (required) | - |
| VRC_Pickup | Collider + Rigidbody | Grabbable objects | - |
| VRC_Station | Collider | Sittable locations | - |
| VRC_ObjectSync | Rigidbody | Auto-sync Transform/physics | - |
| VRC_MirrorReflection | - | Mirror (⚠️ high cost) | - |
| VRC_PortalMarker | - | Portal to other worlds | - |
| VRC_SpatialAudioSource | AudioSource | 3D audio | - |
| VRC_UIShape | Canvas (World Space) | Unity UI interaction | - |
| VRC_AvatarPedestal | - | Avatar display/switch | - |
| VRC_CameraDolly | - | Camera dolly | 3.9+ |
VRC_ObjectSync vs UdonSynced
| Scenario | VRC_ObjectSync | UdonSynced variables |
|---|---|---|
| Throwable objects / physics | ✅ Recommended | ❌ |
| State only / complex logic | ❌ | ✅ Recommended |
SDK 3.8.0+:
Force Kinematic On Remote— Makes Rigidbody kinematic on non-owner clients, preventing unexpected physics behavior.
→ For detailed properties, Udon events, and code examples, see references/components.md
Layers & Collision
VRChat Reserved Layers
| Layer # | Name | Purpose |
|---|---|---|
| 0 | Default | General objects |
| 9 | Player | Remote players |
| 10 | PlayerLocal | Local player |
| 11 | Environment | Environment (walls, floors) |
| 13 | Pickup | Grabbable objects |
| 14 | PickupNoEnvironment | Pickups that don't collide with environment |
| 17 | Walkthrough | Walk-through objects |
| 18 | MirrorReflection | Mirror reflection only |
| 22-31 | User Layers | Available for custom use |
Layer Setup Steps
1. VRChat SDK > Show Control Panel
2. Builder tab
3. Click "Setup Layers for VRChat"
4. Collision Matrix is automatically configured
→ For details, see references/layers.md
Performance
Target FPS
| Platform | FPS Target | Measurement Point |
|---|---|---|
| PC VR | 45+ FPS | Spawn point, 1 player |
| PC Desktop | 60+ FPS | Spawn point, 1 player |
| Quest | 72 FPS | Spawn point, 1 player |
Critical Limits
| Item | Recommended | Reason |
|---|---|---|
| Mirrors | 1, default OFF | Renders the entire scene 2x |
| Video players | Max 2 | Decoding overhead |
| Realtime lights | 0-1 | Dynamic shadows are expensive |
| Lightmaps | Required | Performance foundation |
Quest/Android Restrictions
| Component | PC | Quest |
|---|---|---|
| Dynamic Bones | ✅ | ❌ Disabled |
| Cloth | ✅ | ❌ Disabled |
| Post-Processing | ✅ | ❌ Disabled |
| Unity Constraints | ✅ | ❌ Disabled |
| Realtime lights | ✅ | ⚠️ Avoid |
→ For details, see references/performance.md
Lighting
Baked Lighting (Required)
✅ Recommended settings:
├── Lightmapper: Progressive GPU
├── Lightmap Resolution: 10-20 texels/unit
├── Light Mode: Baked or Mixed
└── Light Probes: Place along player paths
❌ Avoid:
├── Realtime lights (dynamic shadows)
├── High-resolution lightmaps (memory consumption)
└── Excessive Reflection Probes
→ For details, see references/lighting.md
Audio & Video
VRC_SpatialAudioSource
| Property | Description | Default |
|---|---|---|
| Gain | Volume (dB) | 0 (World: +10) |
| Near | Attenuation start | 0m |
| Far | Attenuation end | 40m |
| Volumetric Radius | Source spread | 0m |
| Enable Spatialization | 3D positioning | true |
Video Player Selection
| Feature | AVPro | Unity Video |
|---|---|---|
| Live streaming | ✅ | ❌ |
| Editor preview | ❌ | ✅ |
| YouTube/Twitch | ✅ | ❌ |
| Quest support | ✅ | ✅ |
→ For details, see references/audio-video.md
World Upload
Upload Steps
1. Check Validation
└── VRChat SDK > Build Panel > Validations
2. Build & Test (local testing)
└── "Build & Test New Build"
└── Supports multi-client testing
3. Upload
└── "Build and Upload"
└── Set Content Warnings
└── Set Capacity
4. Publish settings
└── Configure public/private on the VRChat website
Pre-Upload Checklist
□ VRC_SceneDescriptor × 1
□ Spawns configured
□ Respawn Height appropriate
□ Layer/Collision Matrix verified
□ Light baking complete
□ Mirror default OFF
□ 45+ FPS in VR
□ No Validation errors
□ Content Warnings set
□ Capacity set
→ For details, see references/upload.md
Troubleshooting
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Player walks through walls | Wrong layer | Set to Environment |
| Can't grab Pickup | Missing Collider/Rigidbody | Add both |
| Pickup doesn't sync | Missing ObjectSync | Add VRC_ObjectSync |
| Can't sit in Station | Missing Collider | Add Collider |
| Mirror doesn't reflect | Layer settings | Check MirrorReflection |
| Build error | Validation failure | Check SDK Panel |
→ For details, see references/troubleshooting.md
Related Skills
| Task | Skill to Use |
|---|---|
| C# code creation | unity-vrc-udon-sharp |
| Network sync (Udon) | unity-vrc-udon-sharp |
| Event implementation | unity-vrc-udon-sharp |
| Scene setup | This skill |
| Component placement | This skill |
| Performance optimization | This skill |
Web Search
Official Documentation (WebSearch)
# Search official documentation
WebSearch: "component or feature to look up site:creators.vrchat.com"
Issue Investigation (WebSearch)
# Step 1: Forum search
WebSearch:
query: "issue description site:ask.vrchat.com"
allowed_domains: ["ask.vrchat.com"]
# Step 2: Known bug search
WebSearch:
query: "issue description site:feedback.vrchat.com"
allowed_domains: ["feedback.vrchat.com"]
# Step 3: GitHub Issues
WebSearch:
query: "issue description site:github.com/vrchat-community"
Official Resources
| Resource | URL |
|---|---|
| VRChat Creators | https://creators.vrchat.com/worlds/ |
| VRChat Forums | https://ask.vrchat.com/ |
| VRChat Canny | https://feedback.vrchat.com/ |
| SDK Release Notes | https://creators.vrchat.com/releases/ |
References
| File | Content | Approx. Lines |
|---|---|---|
references/components.md |
All component details | 800+ |
references/layers.md |
Layers & collision | 400+ |
references/performance.md |
Performance optimization | 500+ |
references/lighting.md |
Lighting settings | 400+ |
references/audio-video.md |
Audio & video | 400+ |
references/upload.md |
Upload procedure | 300+ |
references/troubleshooting.md |
Troubleshooting guide | 500+ |
CHEATSHEET.md |
Quick reference | 200+ |
Weekly Installs
5
Repository
niaka3dayo/agen…vrc-udonGitHub Stars
20
First Seen
5 days ago
Security Audits
Installed on
opencode5
gemini-cli5
github-copilot5
codex5
kimi-cli5
cursor5