unity-vrc-world-sdk-3

VRChat World SDK 3 guide for scene and Inspector setup, component placement, optimization, and upload. Use for VRChat world scene configuration, VRC SDK components, layers, baked lighting, Quest/Android performance, Dynamics for Worlds, Build Panel warning triage, validation, and upload. Covers Worl

By niaka3dayo · 769 installs

npx skills add niaka3dayo/agent-skills-vrc-udon --skill unity-vrc-world-sdk-3

Source repository · Upstream listing

VRChat World SDK 3 Guide Table of Contents Section Content Reference [Scene Setup]( scene setup) VRC SceneDescriptor, Spawn This file [Components]( components) Pickup, Station, Mirror references/components.md [Layers & Collision]( layers collision) Layers, Collision Matrix references/layers.md [Performance]( performance) Optimization guide references/performance.md [Lighting]( lighting) Lighting settings references/lighting.md [Audio & Video]( audio video) Audio, Video players references/audio video.md [Build Validation](references/build validation.md) Red/yellow/white SDK alerts references/build validation.md [World Upload]( world upload) Upload workflow references/upload.md [Troubleshooting]( troubleshooting) Problem solving references/troubleshooting.md [Cheatsheet](CHEATSHEET.md) Quick reference CHEATSHEET.md Method Migration The following public methods were renamed because an unprefixed, parameterless public UdonSharp method remains callable through legacy network dispatch: Before After ForceDropPickup ForceDropPickup IsHeld IsHeld IsOccupied IsOccupied StopSound StopSound SlowUpdate SlowUpdate Update Inspector event strings, SendCustomEvent calls, delayed events and nameof(...) expressions, and cross behaviour calls. Compatibility aliases are not provided because an old unprefixed alias would restore the same legacy network exposure. Common Mistakes (NEVER List) These cause silent world failures, performance disasters, or Quest incompatibility: NEVER do this Why it hurts Use instead 1 Enable Mirror by default (active on world join) A mirror adds another costly scene render; the impact depends on view, scene, resolution, and device Default Mirror OFF; add a player controlled toggle and profile each target device 2 Use realtime directional lights with real time shadows without profiling Realtime shadow cost varies with scene geometry, view, and target device and can dominate frame time on Android Prefer baked lightmaps + light probes; profile the target device before keeping any realtime shadows 3 Set Respawn Height at or above the world floor Player respawns → falls → respawns again → infinite loop; players cannot recover Set to an unreachable depth (e.g., floor at Y=0 → Respawn at Y= 100) 4 Skip "Setup Layers for VRChat" on a new project Layer collision matrix is wrong by default — players walk through walls, Pickups clip floors Run VRChat SDK Builder "Setup Layers for VRChat" before placing any colliders 5 Enable Post Processing without an Android build profile Post processing is disabled at runtime on Android, so the authored effect will not appear and unnecessary resources can still enlarge the build Use a separate Android build profile with post processing removed 6 Place more than 2 active video players simultaneously Each player adds significant decoding overhead; running 2 simultaneously is a common cause of frame drops and audio issues in practice Disable extra players at scene start; activate only the currently playing one 7 Use Cloth on Android, or add many Unity Constraints without profiling Cloth is disabled on Android. Unity Constraints are permitted in worlds, but overuse can significantly affect performance Remove Cloth from the Android build; prefer VRC Constraints for new work and profile any constraint heavy setup 8 Upload without completing a lightmap bake Realtime GI adds substantial scene dependent render cost and is unsuitable as an unmeasured fallback on Android Bake lights before upload, then verify the result on the target device 9 Place player walkable surfaces on Default layer (0) Collision matrix is wrong by default — avatar physics collision is unreliable; players may clip through geometry Use Environment (layer 11) for all walkable geometry, walls, and floors 10 Use very high lightmap resolution for large areas without profiling Texture memory can spike significantly at high resolutions; a common cause of OOM crashes on mobile headsets Start at 10 20 texels/unit (PC) / 5 10 (Quest) as a practical guideline; profile VRAM and adjust — official guidance says "keep lightmap resolution low" for Quest 11 Add VRC UIShape to a Screen Space or Overlay Canvas VRC UIShape requires World Space Canvas; other modes throw a runtime Unity error in VRChat — the UI renders visually but is not interactive, with no visible error to the world builder Set Canvas Render Mode to World Space before adding VRC UIShape Reference Loading Guide Load only what the task requires. Task MANDATORY READ Optional Do NOT Load Load Rationale Setting up a new scene from scratch components.md , layers.md upload.md audio video.md , troubleshooting.md Collision matrix non obvious; component deps needed upfront Making objects grabbable (VRC Pickup) components.md layers.md audio video.md , lighting.md Pickup/Rigidbody requirements not in standard Unity docs Configuring Dynamics for Worlds (PhysBones, Contacts, Box Contacts, Global Avatar PhysBone Colliders, world VRCPhysBoneCollider access) components.md layers.md , troubleshooting.md ; use unity vrc udon sharp for Udon code audio video.md , lighting.md Dynamics component availability and Udon access are SDK version sensitive Setting up seating (VRC Station) components.md layers.md audio video.md , performance.md Station collider + exit requirements are VRChat specific Optimizing FPS for Quest performance.md , lighting.md troubleshooting.md audio video.md , upload.md Quest limits differ from PC; bake requirements non obvious Adding audio or video player / voice zones (SetVoiceGain, Steam Audio) audio video.md , components.md troubleshooting.md lighting.md , performance.md AVPro vs Unity Video selection is VRChat specific Configuring WorldQualitySettings, realtime probes, or Shadowmask Mode components.md lighting.md ; Udon API: unity vrc udon sharp audio video.md , layers.md Existing startup setters and override flags can overwrite authored quality choices Baking lights / lightmap setup lighting.md , performance.md — audio video.md , layers.md Lightmap resolution and probe placement affect Quest VRAM SDK Build Panel validation alerts, red/yellow/white warnings, or Auto Fix questions build validation.md upload.md , troubleshooting.md audio video.md , lighting.md Alert severity, build consequence, and Auto Fix side effects must come from SDK backed catalog World upload and publish upload.md build validation.md , troubleshooting.md audio video.md , lighting.md Upload steps and validation order are fragile; easy to miss Debugging collision or layer issues layers.md , troubleshooting.md components.md audio video.md , lighting.md VRChat collision matrix differs from Unity default Mirror setup and configuration components.md performance.md audio video.md , upload.md Mirror layer mask requirements are VRChat specific Before Starting a New World — Design Decisions These decisions shape every downstream choice. Make them first, before placing any component. Decision Options Implication Quest required? Yes / No Yes → Quest First philosophy applies from day 0, not as a retrofit Expected player count? 1–8 / 9–40 / 40+ Affects spawn count, mirror policy, max video players Primary interaction? Grab (Pickup) / Sit (Station) / Watch (Video) / Explore Determines which SDK components are mandatory Lighting approach? Baked / Mixed / Realtime Prefer baked lighting on Android; profile each target device before keeping realtime lighting or shadows Networked objects? None / Physics (Pickup+ObjectSync) / State (UdonSynced) Determines sync architecture before Udon scripting begins Design Philosophy: Quest First If the world must run on Android, decide those constraints before tuning the PC build. Test each target separately. Android headsets have mobile CPU, GPU, memory, and thermal budgets that differ from PC and vary by device: GPU : Realtime lights, shadows, overdraw, and complex shaders can dominate frame time Memory : Textures and lightmaps share limited system memory with the client Thermals : Sustained load can reduce available performance during a session Measure each target device independently; PC results do not establish Android performance, and a single client Quest result does not predict a particular PC frame rate. Use the Unity Profiler and the [official Android content optimization guide](https://creators.vrchat.com/platforms/android/quest content optimization/) before publishing. NEVER optimize exclusively for PC with "Quest support added later" — by that point, lighting, materials, and mesh density are all locked to PC quality, and the Quest port requires rebuilding everything. Quest First Cascade — when Quest is required, every downstream decision inherits constraints: SDK Versions Active support / last verified : SDK 3.10.5 From v4.0.0 onward, the policy is latest stable SDK only; support moves to a new stable release only after this repository verifies it. A new stable release is not supported automatically. Current last verified target: 3.10.5. The table below keeps feature introduction history for migration reference. SDK 3.7.1 3.10.4 entries are historical information only; they are not active support or validation targets for this Skill. This is the Skill's support boundary, not a statement about VRChat's own SDK policy. Primary generated examples target SDK 3.10.5 unless a reference explicitly marks a historical migration case. SDK New Features Status 3.7.1 StringBuilder, Regex, System.Random Historical 3.7.4 Persistence API (PlayerData/PlayerObject) Historical 3.7.6 Multi platform Build & Publish (simultaneous PC + Android builds) Historical 3.8.0 PhysBone dependency sorting, Force Kinematic On Remote , Drone API Historical 3.8.1 [NetworkCallable] events with parameters, Others / Self targets, VRCCameraSettings Historical 3.9.0 Camera Dolly API , Auto Hold simplification, VRCCameraSettings additions (CullingMask, GetCurrentCamera) Historical 3.10.0 Dynamics for Worlds (PhysBones, Contacts, VRC Constraints) Historical 3.10.1 Bug fixes and stability improvements Historical 3.10.2 EventTiming extensions, PhysBones fixes, shader time globals Historical 3.10.3 VRCPlayerApi.isVRCPlus , VRCRaycast (avatar), Mirror render order fix Historical 3.10.4 VRCTween, Box shaped Contacts, Global Avatar PhysBone Colliders, world VRCPhysBoneCollider Udon access, Data Container capacity APIs Historical 3.10.5 WorldQualitySettings, Pickup Outline Renderers, Pipeline Manager validation; writable VRCQualitySettings and Assembly Version Defines → [UdonSharp Skill](../unity vrc udon sharp/SKILL.md) Active / Last verified Use SDK