Vowgan's Tutorials Fill this out later Intro To Making Quest Content Sounds like time to break down some basics for making Quest content for VRChat! Plenty of specifics to go through, but it's not nearly as difficult as it has been in the past. With Spookality happening this month, lets get going and make some Quest worlds! Intro Alright! Spooky season is here, and with it, VRChat’s Spookality world jam. Of course, with a bunch of people jumping on new projects, that gives us the perfect opportunity to talk about Quest compatibility and other best practices. Now, the actual documentation for this from VRChat hasn’t been updated a whole lot, and focuses on having the user maintain TWO Unity projects at the same time. Which, don’t do that. If you want to know HOW far out of date these instructions are, Udon has been out for almost three years and this page only mentions Triggers. So! Let’s get started. Unity Android Support First of all, uploading to Quest will require Android Support for Unity. The Creator Companion will install this on its own, but you can install it yourself through Unity Hub. In the “Installs” tab, find VRChat’s current version, hit the gear and select “Add Modules”, and install “Android Build Support” under platforms. You won’t need the NDK Tools or OpenJDK. Next! Let’s open up that Unity Project. Asset Pipeline 2 This next step only applies if you have a project that was made in the 2018 version or older, so most of you can skip this specifically. But if you have, make sure to open up your “Project Settings” window, go to “Editor”, and make sure that “Asset Pipeline Mode” is set to Version 2. Make sure that Cache Server is disabled while you’re at it. So! Let’s explain the process of Converting to Android. Converting to Android Since Windows and Android are dramatically different platforms, Unity compresses and formats files in different ways. Whenever you swap between PC and Android though, Unity will store the state of your files or “cache” them, for when you convert it back to the other version. And that’s exactly what the button labeled “Switch Build Target to Android” in the SDK Panel does. HOWEVER! There’s *one* setting we want to change before doing that, and that’s under File, Build Settings. This window gives us settings for every platform Unity can build to, but since VRChat only supports PC and Android, those are the only two we’ll care about. In fact, Android is the only one we even want to open. You’ll want to change “Texture Compression” to ASTC. Normally, the compression used by Unity for Android will muddy the textures up in a noticeable way, and leaving this setting on ASTC will resolve that issue. Closing that, the Switch Build Target button will have Unity go through the caching process. The first time will probably take a while depending on the complexity of your assets, typically texture, audio, and model count, though it’ll be much quicker on every subsequent conversion and only need to convert new or modified assets. That should be it, though for worlds, you’ll probably need to re-bake your lighting after swapping over. Quest Limitations Now, to make things work on the Quest, VRChat has quite a few limitations you’ll have to follow for uploading content. Avatars are by far the strictest, though the added freedom in world making leaves a lot of things you’ll have to take into account yourself. I won’t go over ALL the requirements, you can view all of them on the documentation (which this one IS caught up and accurate) but I’ll try to cover the biggest ones. For starters, file size. Worlds cannot be over 100mb when uploading (double what it used to be at 50) and avatars are limited to 10mb each. While this sounds restrictive for creators that are used to no limits, there’s no reason that your PC build needs to be identical with the Quest. For example, textures and other assets can be imported differently on different platforms. A detailed 2k texture on PC can be imported as 1k or even less for Android, though I’m sure you’ll want to have the experiences about as similar to each other as possible, so play around with what settings you feel work best for your use case. File Size and Community Tools Trying to cut down on file size is actually pretty easy with some community tools. One’s VRWorld Toolkit will give you a full report of all the files that are being uploaded to VRChat after every build, so after testing your world or avatar once, it will give you a full list of everything that might be taking up space, and will also gives a lot of other recommendations that are massively helpful. EasyQuestSwitch is another helpful tool, though it is for worlds only. It’ll let you set up a bunch of options for swapping materials, settings, or active GameObjects between the two different versions, though its UI might be a bit confusing at first. Lox's AssetBundleStat is another way of knowing what files are taking up space, both in file size and vram size. This one is browser-based, and you'll have to select a built file of your world or avatar, but it will give you direct paths to where Unity stores those built files.   Shaders and Polygons One of the hardest things for the Quest to handle is transparency, you’ll notice that none of the shaders you can upload for Avatars even ALLOW it. For worlds, most if not all the shaders included with Unity will function, though keep in mind that some custom shaders may not work correctly if not verified by their creator. Single layer transparency on its own is typically no worry, where the Quest struggles is with OVERLAPPING transparency. For worlds, this is most commonly found with foliage and window glass. Another big restriction for worlds is that Post Processing, just like, as a feature, does not exist. The visual effect is deemed too intensive for the quest to handle, so while it may LOOK like you can use it while testing in Unity, know that the effect will not exist when you’re in-game on Quest. Polygon count is another big one, obviously the rule is “more is worse”, but they have specific recommendations for worlds aiming at around 50,000, and strict rankings for avatars aiming at 10-15,000. A Quest avatar fallback NEEDS to be ranked Good or higher, which requires no more than 10,000 polygons. Video Links And the last big restriction for worlds is, of course, that non-file URLs do not work in Video Players. Let's break that one down a bit more. YouTube DL is the program VRChat uses for turning any random video url, like a youtube link or a soundcloud song, into a playable file. This program does not operate on the quest, so VRC is limited to only the ones that are already a file themself, such as links that end in .mp4 or similarly. For an easy solution, you can use a boosted Discord server that you’re in and just post your videos or music files there and copy their link, and essentially just use that server as a distribution server. It’s a hack, sure, but my god is it effective. Outro And there ya go! Keep in mind this is by no means an exhaustive list, just a good start to get people knowing what a quest project will require and how to get going on one.   I hope this has been helpful for you and I look forward to seeing more Quest content in the future, since like 60% of VRChat’s user base is standalone quest.