Prerequisites

  • Register an account at VRChat.com if you don’t already have one.

You cannot use a Steam account to upload your own content. If you already have a steam account, you can merge it with a new VRChat.com account to gain the trust score benefits from your Steam account.

  • Make sure you have a VRChat account with upload privileges.

See Trust System for more information. You will be notified when the transition from “Visitor” to “New User” occurs and uploading content is enabled for your account.

Create a new Unity Project

  • Open Unity or The Unity Hub to create a new 3D project. Be sure to set the “Location” to a folder on your computer that you can easily navigate to for manual project backups and updating your VRChat SDK.
  • Don’t forget to save your scene and project frequently. Click on the File menu and select “Save Project”. Then in the same menu, select “Save Scene As” (or Ctrl+Shift+S shortcut) to save your scene file in the assets folder. Create a new folder in the project panel, rename it “Scenes” and move your scene file there.

Import the VRChat SDK

  • With your new project open, navigate to the “Assets” folder in the Projects panel (lower left hand corner of the default layout) and right click on it to open the context menu. Hover over “Import Package” and then select “Custom Package”.
  • Find the VRChat SDK package that you downloaded earlier and Import it into your new project. The “Import Unity Package” window will pop up allowing you to browse the contents of the package and specify what to import. Leave “All” selected and click “Import”.
  • You’ll know the import has completed when the VRChat SDK Splash Screen appears. You can close this window at any time and uncheck “Show at Startup” if you have no desire to see it in the future. You can always access the Splash Page and any other VRChat SDK panels from the VRChat SDK menu located at the top of your Unity window.
  • Log in to the SDK. Click on the VRChat SDK Menu and select “Settings”. Use this VRChat Settings panel to enter the username and password for the VRChat account you created earlier. Once logged in, you should stay logged in even when creating new projects from scratch with the SDK re-imported.

Create a Basic World

See Learning the Interface, Inspector Options, and Transforms sections of the Unity 2017.4 Manual for more information.

  • Create a simple floor from a cube. Right-click on an empty section of the “Hierarchy” Panel to reveal the context menu, Hover over “3D Object” and select “Cube“. This will create a cube at the center of your scene. Note the object’s center is at the 0 point of the Y Position (rather than the cube’s base sitting at 0).
  • Resize the cube. This is accomplished via the “Transform” component within the Inspector panel. Modify the Scale of the cube’s Transform component to 10X by 10Z with the default height of 1Y.
  • Position the floor so that the transform components of all game objects will reset at 0X,0Y,0Z with their center points sitting on the floor instead of sinking down inside of it. Move the floor cube down so that the 0 point of the Y Axis aligns with the top of the cube instead of its center. To do this, take the cube’s Scale of Y (1), divide it in half to find the cube’s center (0.5), then adjust the cube’s Y Position downwards (-) by the same amount as the cube’s center height (-0.5). Note: If you type the equation “1/-2” into the Y position field, unity will solve it for you. The floor cube is now centered at -0.5 so any empty game objects will rest on top of our floor.
  • Rename your cube to something like “Floor”. Right click on “Cube” in the Hierarchy and select “Rename”. Or, select the cube and then click its name again in the Hierarchy to edit it. Or, select the cube and then edit its title in the Inspector.

Add VRC_Scene Descriptor

See VRC_SceneDescriptor for more information.

  • Right-click in the hierarchy and select “Create Empty”. Now, Rename the empty game object to “Descriptor” and reset its position by right-clicking on the “Transform” component in the Inspector and selecting “Reset”. Now in the Inspector, click “Add Component” and search for “VRC_Scene Descriptor”. Select it from the list to place the VRC_Scene Descriptor script on your new “Descriptor” game object.
  • Create a spawn point for players to load into your map at a specific location. Select the Descriptor object and within the inspector, expand the “Spawns” section. Change the “Size” to 1 and press enter. Right-click on the “Descriptor” game object and select “Create Empty”. Rename this child object to “Spawn0”. Note the blue Z axis arrow determines the direction that players will face when spawning so position your Spawn object at -3 on the Z axis for this example. Click on the Descriptor object in the hierarchy to view it’s inspector panel again. Now Click and hold your Spawn0 object to drag it into the “Element 0” field within the VRC_Scene Descriptor component of the “Descriptor” game object.
  • Configure the VRC_Scene Descriptor component to change the behaviour of objects and players falling off of the edge of our world. First, click on the Descriptor object in the hierarchy to reveal its inspector panel. Now, adjust “Respawn Height Y” from “-100” to “-10”. This will allow players to respawn faster upon falling off of the edge the map. Now change “Object Behaviour at Respawn” from “Destroy” to “Respawn”. Any object with the “VRC_Object Sync” script attached will respawn to its original positions after falling off the edge of the map.

Optionally: to add player mods like Jump, movement speed, etc., See VRC PlayerMods.

Finalize your World Settings

  • Click on the “VRChat SDK” menu at the top of your unity window. Then, select “Show Build Control Panel”. First, select “Setup Layers for VRChat” and the confirmation “Do It” button, then select “Setup Collision Layer Matrix for VRChat” and its “Do It” confirmation button. The third option “Enable 3D spatialization on all 3D AudioSources in scene now” is only necessary if you have audio sources currently in your world. However, you can safely click and confirm this option before publishing your worlds as force of habit.
  • Dock the “Build Control Panel” by clicking and holding the tab while dragging it to any convenient space in your window layout. Now locate the “Test” section of the Build Control Panel and select “New Build”. This will Launch the newest build of your world in VRChat for testing but will not attempt to publish the map to your account. You cannot test VRChat specific triggers and scripts within Unity. You can launch a test build of your world for solo testing or you can upload your world and invite others to a private instance for further testing.

Upload the World

  • Within the build control panel, locate the “Upload” section and click "New Build". Unity will take some time to compile the world and then display a UI for you to name your world and set the world preview. In the hierarchy, you will see a new object called "VRCCam". You can move this object around to change your preview image for your world. When you’re ready, accept the terms and click upload. Your world will then be uploaded to VRChat servers. You will now be able to select your new world from the worlds menu in game. This world will be private but you can start friends+ instances of it for testing or just to keep the world private (helpful for worlds featuring adult or questionable content). Once you’re confident that your world is ready to go public, see the Community Labs section of this wiki.