Final Things (Version control, optimizations)
Occlusion Culling[docs.unity3d.com]
Set your static GameObjects to static [this will set the sub-parameters, occlusion and occludee static to true]. Then go to Windows>Rendering>Occlusion Culling, and hit bake before uploading your world.
Unity won’t render avatars the player can’t see; since rendering avatars is what tanks performance the most, good VRChat level design should subconsciously guide the player to look only at the other players they are interacting with, without rendering a bunch of poorly performing avatars in the background that they don’t care about.
Version Control
If you are putting a lot of time and effort into a world, version control is a must (lest you end up like me and lose your work). Version control tracks the changes you make to your project and allows you to revert your project to previous states (indispensable if something goes wrong).
Working on a world, you are most likely going to be one person on a single computer, so I would simply recommend using Sourcetree[www.sourcetreeapp.com].
Optimization (Review)
World Creation, Optimization, and Community Labs Tips[docs.vrchat.com]
Quest Content Optimization[docs.vrchat.com]
- Set everything that is static to static [will allow for lighting and occlusion culling to be baked]
- Set all lights to baked
- bake the lighting
- Bake occlusion culling
Remember, occlusion culling only affects the visual rendering of objects! Objects out of view will still be processed and affect performance!
Make sure to include toggles on performance heavy gameobjects, for example:
- toggles for physics objects
- toggles to turn off shadows for realtime lights (if you have a realtime light with shadows enabled in your scene)
- MIRRORS!!! This should be obvious but they should have toggles and be off by default!
Use the Unity profiler! It will help you find things in your world that are causing performance to drop the most! This is especially useful for figuring out how to optimize scripts!