You want a room where you can talk with friends. Or maybe just a garden with a nice view. Spend enough time in VRChat and sooner or later you'll want a place of your own.
Then you start looking it up: Unity, VCC, SDK, Udon, lightmaps, sync. A wall of unfamiliar words arrives at once, and it's not obvious which one to touch first.
This article lays out the order in one map: build a single 6m room, then layer onto it until it becomes a social world, in six steps.
What You'll Learn
- What each of the four tools is responsible for
- Six steps for growing a room, and the "you can stop here" point of each
- How far you can get on three schedules: one day, one weekend, one month
- Four levels of "it works," and what you can skip at first
You're building one small room
Almost every article in this series is about the same place. A 6m floor. You put walls up, let light in, set out two chairs, and add a switch that changes the lighting when pressed.
The important part is that you never rebuild the world from scratch. Keep the floor you laid on day one, add light over the weekend, add a switch the following week. Layering like this means everything you learned earlier becomes the foundation for what comes next.
Large terrain and two-story buildings can wait until this room is done. Start big instead, and fixing a single floor collider eats an afternoon, which pushes the finish line further away.
There are four tools
The names look similar, but the division of labor is clear.

- ALCOM or VCC: The manager that creates the project and adds or removes VRChat parts. VCC is the official one; ALCOM is a community-made alternative. Either is fine
- Unity: Where you actually assemble the room. Placing the floor, aiming the lights
- VRChat Worlds SDK: The VRChat-specific parts and features added to Unity. Spawn point settings and uploading live here
- UdonSharp: The programs that add reactions like "press it and it lights up"
The first three are enough to build a room you can walk around in. UdonSharp doesn't come in until step 3, so until then you write no code at all.
One detour worth avoiding here. You don't need to study Unity first. VRChat worlds use a fairly narrow slice of Unity, and URP, Terrain, and Cinemachine — staples of general Unity tutorials — barely show up in world building. Worse, following a URP-based guide as written will leave your materials not rendering at all. Picking up each feature in the article where you need it moves faster.
Six steps to grow the room

Each step has a point where "stopping here still leaves you with a world." Don't aim for all six at once. Upload at a clean break and actually go in.
1. Make a floor you can stand on
The first goal is to appear in the right place and walk on the floor.
The stumble here comes down to almost one thing. The floor you see and the floor you collide with are different objects. A floor shape without a Collider lets players fall straight through. And a spawn point buried under the floor means nobody can get in, no matter how finished the room looks.
Reading order: Project setup → Unity's windows and controls → Your first world → Blocking out a room and stairs → Collision basics
You can stop here: Even a world with nothing but a floor and a spawn point lets you stand in it with friends once uploaded.
2. Turn it into a place with light and sound
The same box feels completely different depending on how light hits it and what you hear. This step covers materials that decide the look of floors and walls, lights that illuminate the room, and ambient sound that fades in as you approach.
Baking — precomputing the light for the parts of the room that don't move — also shows up here. It's lighter than realtime lighting that recalculates every frame, and the shadows come out cleaner. Baked light can't be switched off at runtime, though, so keep "the light I'll want on a switch later" separate.
Reading order: Materials and textures → Lighting and baking → Light Probes and Reflection Probes → Music and spatial audio
Once the furniture is in, take another look at the path from entrance to seat so first-time visitors don't get lost.
You can stop here: With light, sound, and a bench, it already works as a social world.
3. Add things people can touch
Buttons, chairs, small objects you can pick up. This is where you write UdonSharp for the first time.
The trick for this step is not adding sync yet. If the button reacts on your own screen, call it a pass. Take on reference assignment and networking at the same time and you won't be able to tell which one is broken.
Reading order: Udon and UdonSharp → Your first UdonSharp script → Variables and references → Toggling with a button
Chairs you can sit on start at Station; objects you can carry start at Pickup.
You can stop here: One switch that changes the lighting makes it "a room with something in it."
4. Make everyone see the same thing
The light went out on your screen, but it's still on for the person next to you. This is the biggest wall in world building.
Even in the same instance, each player's PC is running the world independently. Any state you want everyone to see has to be sent explicitly. That raises two questions: who is allowed to send it (ownership), and how do you tell someone who joins later?
A common misconception is that attaching VRC Object Sync to everything makes it shared. That component streams position, so it suits objects you throw but doesn't fit switches or chairs.
Reading order: Network sync basics → Understanding ownership → Network Events → Remembering settings with PlayerData
You can stop here: If the switch works for everyone, you have a world people can play in together.
5. Make it lighter and easier to use
Mirrors are heavy, text is unreadable, the button is out of reach when seated. As the finish line approaches, problems that "it moves" can't reveal start showing up.
Optimization starts only after you've measured what's actually heavy. Rendering, scripts, and networking each need a completely different fix. Mirrors and realtime lights carry the biggest cost, and they bite first on Quest and mobile.
Reading order: Debugging and testing → Optimizing Udon and sync → Lightening the rendering → A settings panel anyone can use
You can stop here: If people can get in comfortably on the devices you're targeting, that's enough.
6. Publish it, then update it
Upload as Private, invite a friend, fix what they found, update. Once you can run that loop, the world can keep growing.
The thing to know here is that the PC build and the Android (Quest) build are separate. You build twice from the same scene and put both on the same world ID. Upload only one and the other device sees an old version, or can't get in at all.
Reading order: Uploading and updating → Gathering in the same room from PC and Android → Pre-release checks and maintenance
You can stop here: A state where sending a link lets a friend in is plenty. Going Public can wait until the contents settle down.
How far will you go today?
Change the target based on the time you have.

One day (3–6 hours) aims at "standing in a space of my own." A 6m floor, walls, a spawn point, one light. Looks can wait, so push until you can walk around it in Build & Test. Stop at step 1.
One weekend (10–16 hours) aims at "a room I can invite friends to." Keep day one's room, tidy up the light, add music, two chairs and a mirror. Getting as far as a switch that changes the lighting is a good result. The end of step 3 is the marker.
One month (a few hours a week) aims at "published, and fixable." Sync the switch to everyone, add a volume settings panel, prepare an Android build, then have someone visit and fix what they hit. Run all the way through step 6.
"Published" in the one-month route doesn't mean putting it on a Public instance. Sending a link and having a friend walk in is enough at first.
"It works" comes in levels
There are four ways to verify a world, and each one covers a different range.

| Method | What it tells you | What it doesn't |
|---|---|---|
| Unity Play mode | Placement and script errors | How it feels to walk, behavior inside VRChat |
| ClientSim | The feel of walking, touching, sitting | Sync with other people |
| Build & Test | How it looks in real VRChat, multi-user sync | The published environment, other devices |
| Real device (Quest, mobile) | Weight and usability on that device | — |
ClientSim lets you walk around inside Unity without launching VRChat. Touching and sitting verify quickly, which makes it your partner through step 3.
That said, sync isn't "done" until two or more people are in via Build & Test. The second player you see in ClientSim isn't a real client, so neither sending nor receiving matches production. Anything working only on your own screen usually isn't reaching anyone else.
Bonus: Good to Know Up Front
You don't need to understand all of this now, but keeping it in the back of your mind cuts down on detours.
- Things you can skip: Unity's Terrain, URP and HDRP, NavMesh, and Cinemachine barely appear in VRChat world building. Blender isn't required either — your first room can be built from Unity primitives and distributed assets alone
- You don't have to build everything yourself: Chairs, mirrors, and video players can be dropped in as SDK or community Prefabs. Build your own only for the parts distributed assets don't cover
- Decide your target devices early: PC only, or Quest and mobile too? The latter changes how you use lights and mirrors from the very beginning, which means far less rework than slimming down after you've finished
- Uploading has account requirements: A brand-new VRChat account can't upload worlds. Confirm your account can upload before you start building, and you'll save yourself a surprise
- Watch where your assets come from: Distributed world Prefabs and properly licensed free audio are fine, but assets ripped from other games and commercial music can't be published. This stops people more often than any technical problem
- Avatar creation is a different field: This series covers worlds only. Avatar modification uses different tools and steps, so mixing the two while searching gives you answers that don't line up
Summary
Building a VRChat world starts with a 6m floor.
- Layer onto the same room. Don't rebuild from scratch each time
- Every step has a "you can stop here" point. Upload once at each break
- Working on your own screen doesn't mean it's synced. Verification has four levels
- You don't need to study Unity first. Learning each feature when you need it is faster
The question to ask when you're unsure is: "If I add today's work, can I invite someone in?" Stopping at a state where you can means the next step starts feeling light.
The first step is project setup. Once the tools are in place, lay the 6m floor in your first world and go walk on it.