Happy Halloween and welcome to the Developer Update for October 31.
Today’s thumbnail features Ghost Hunters by Jar.
Our last Developer Update was on October 17. Check it out here.
Announcements
2024.4.1 is Out!
Yesterday, we released 2024.4.1. This was a relatively minor patch. It added some updates for hand tracking, as well as a bunch of bug fixes and small changes. Oh, and it added Halloween stickers. Just in time for today!
As always, you can read the full notes here. Or, if you’d prefer to watch Strasz read them to you, you can do that below:
Speaking of the Patch, a Note About a Small Sticker/Emoji Change
Since the release of Stickers, we’ve been evaluating our moderation processes regarding Stickers and Emoji, including our automated content detection system.
We’re pretty happy with how it’s worked out, so we will set Stickers and Emoji to be visible from all Trust Ranks in the default Shield mode.
This means Stickers and Emoji should be more visible to everyone!
We’re Streaming… Regularly!
Originally, we planned to stream on the Friday’s after we release a Developer Update… but they’ve been going so well that we’re going to try doing them regularly on Friday at 2PM PT.
This means that – yes! – there will be another stream tomorrow. We’ll probably check out some more Spookality content, as well as a few other worlds. We’ll also (as has become tradition) take questions from chat and do our best to answer as many as we can.
See you there!
VRChat Now Live on NVIDIA GeForce Now!
VRChat is now playable on NVIDIA GeForce NOW – giving gamers instant access to GeForce PC performance, on nearly any PC, Mac, SHIELD TV, Android, iOS device or Chromebook without any downloads.
Since it’s the PC version, GeForce NOW members receive the full VRChat experience, even on low-powered or incompatible devices!
Go Check Out the Spookality Winners!
Last week, we announced the winners of Spookality 2024! You can check out the top ten winners here.
But the best place to see them is in VRChat! You have until November 4 to see them – you can find all of our highlighted worlds in the respective world rows. You’ll also find our top worlds and avatars highlighted in the VRChat Home World!
Server-Side Enforcement for PC Avatar Download and Uncompressed Size
As mentioned in previous Dev Updates, we will implement new size limits for both the Download Size and Uncompressed Size avatar performance stats.
These limits have been in place for new avatars and updates to existing avatars for some time. However, starting tomorrow (November 1st, 2024), we will enable server-side security checks that will prevent avatars that exceed this limit from loading. They will be marked as “Security Checks Failed.”
These checks may take some time to complete, so while affected avatars may still be usable tomorrow, they will become unusable over time. We expect this to affect approximately 1 in 50 avatars across all VRChat PC avatars.
These changes only affect VRChat on PC.
Avatar Performance Statistic | Previous Limit | New Limit (Server-Enforced) |
---|---|---|
Download Size (PC) | 500MB | 200MB (-60%) |
Uncompressed Size (PC) | 1200MB | 500MB (-58%) |
- Download Size - The asset’s size when downloaded from our servers in a compressed format, like a ZIP file.
- Uncompressed Size - The total size of your avatar and all related assets once uncompressed – similar to what happens after you unZIP a file. This value has a close relation to how much memory your avatar uses while loaded.
These changes are aimed to improve performance across all of VRChat by setting limits to the avatars permitted on the platform.
Check out our page on Avatar Optimization Tips to learn how to optimize your content.
Optimization Advice
Many avatars exceeding these new limits employ excessive use of large (4k+) textures, large animations, and long audio files.
We’ve included some general advice here on how to address these problems.
Textures
For textures, reduce the resolution of textures on your avatar to 2k at maximum. Community-created tools like Thry’s Avatar Performance Tools (available in the VRChat Creator Companion) can assist with finding large textures in use on your avatar, and will recommend size reductions as well as format changes in order to save memory.
If reducing texture size causes blurriness in the details of your avatar, consider using shader features like decals, tiling, and masking. You may also consider re-organizing your model’s UVs to give more space to areas that need more detail. Two popular shaders for VRChat, LilToon and Poiyomi, offer these features.
Animations
Animations can be deceptively large, especially if they are “fully keyframed” with no tweening between different keyframes. These animations compress efficiently, but must be loaded into memory decompressed, which contributes to the Uncompressed Size stat.
Unity has built-in animation compression options for animations in the import settings. You can use “Keyframe Reduction” or “Optimal” compression, which will try to reduce redundant keyframes based on thresholds you set.
Audio Files
Audio files can be more challenging. Since these files must be uncompressed either at load or while they’re playing, the primary factor that affects their size is the length of the audio file.
You should avoid using audio files with a length greater than 10 seconds on avatars. This can be split across multiple files, so you could have 4x2.5 second clips and still have a reasonable amount of memory usage.
You can also reduce the size or usage of other resources on your avatar to make room for the audio file, if a longer one is necessary (say, for an avatar used in a performance).
Choosing how your audio file decompresses is an important part of optimizing the usage of audio in Unity.
- “Decompress on Load” decompresses the audio at load time, reducing playback delay.
- Works best for short, frequent sounds, like gunshots, stepping sounds, etc.
- In VRChat, this can cause stuttering when your avatar loads, since the decompression must happen on the main thread. Just Unity things!
- You should never use this mode for audio clips longer than a second.
- “Streaming” reads small chunks from disk and decompresses them in real-time. This is ideal for longer audio files, though it can increase CPU use as the audio is playing.
- Since VRChat is usually CPU-limited, Streaming isn’t often a good choice.
- Avoid using long audio files on avatars.
- “Compressed in Memory” is a middle-ground option, reducing memory consumption by keeping audio compressed but requiring a bit more processing to decompress during playback. It is a good choice for mid-length audio.
Development Updates
AMD GPU Users, Beware!
Since it is Halloween, what could possible be more spooooky than GPU driver issues! If you use an AMD graphics card, you may be interested in the following notes.
Currently, we use a slightly hacky workaround to prevent stutter in certain VR configurations on AMD GPUs (usually when wireless streaming). Some might remember testing this on the old a-test
beta branch, related to this Feedback post.
Now, first off: Don’t expect any magic bullets. Our internal investigation shows that the workaround does not cause any performance drops, and we are keeping it enabled by default. However. We do also see people continuing to report AMD weirdness, and we do take it seriously.
We’ve almost entirely ruled out any possibility that this is being caused by VRChat code. It might be the AMD driver, it might be Windows, it might be hardware, who knows.
But, in the spirit of at least trying, we have done two things in the recent 2024.4.1
release:
- We updated our OpenVR library dependencies. This technically affects all GPUs. The expected change here is… none, but you never know, number go up , maybe it fixed something.
- We added a new command line flag,
--disable-amd-stutter-workaround
, which you can use on AMD systems to disable our hack. You’re on your own if you try this, most likely you’ll just get the stutter again. But if you do, and it does improve something for you, please let us know!
By the way, on AMD graphics cards we currently disable Hardware Video Decoding. This means video players run entirely on your CPU. We did this because using the hardware decoder built into some AMD cards would cause VR rendering to begin stuttering badly. We have heard some reports now that recent driver updates have fixed this issue - as such, we are looking into re-enabling hardware decoding on AMD cards, since it is much faster than CPU-based decoding.
We need to make sure it doesn’t cause any issues though, and that’s where you can come in - you can already enable hardware decoding using the --enable-hw-video-decoding
launch flag. Note that on non-AMD GPUs this flag has no effect. If you are using AMD hardware, and you have set this flag, please let us know if you experience any stuttering issues while viewing video players in VRChat!
More Web Updates!
A few updates to vrchat.com/home from the web team:
- Service-specific share buttons for worlds and instances have been replaced with native share sheets where available, and copy to clipboard buttons everywhere else.
- Fixed a bug preventing access to your gallery if you had an image stuck in a state of being half-uploaded.
- Various improvements to the DMCA claim and counterclaim forms.
- A bunch of bugs relating to friend locations have been squashed.
Selfie Expression
Head and face tracking via the selfie camera is coming to Android mobile! (All processing is done on-device and nobody will ever see your real face.)
You’ll be able to move your head and eyes around and make expressions with your mouth. Our initial release will support expressions by taking advantage of the existing viseme blendshapes and eye-blink/eye-look on most avatars (so it’s very likely that this feature will “just work” on your favorite avatars!)
For people using solutions such as VRCFT for animator parameter based face tracking, that will continue to work as it has before, however the Selfie Expression feature doesn’t interact with the avatar’s animator so these will be separate things.
In future versions we plan to offer new SDK support for higher fidelity face tracking, but that won’t be available at the time of initial rollout. Future plans for higher fidelity SDK support will aim to make assets created with blendshapes supporting VRCFT as reusable as possible when reuploaded with the future SDK.
We’ll keep you informed in future dev updates as we make progress towards support for more platforms and higher fidelity (Desktop and iOS are planned as well), but for now you can look forward to using face tracking for your existing avatars on your Android mobile device!
Examples Added to the Creator Docs
We’ve added all the World Examples from Example Central to our Creator Docs to make them easier to find! They were previously hosted in our Ask Forums.
Example Central was released in SDK 3.7.2 and provides examples for the VRChat SDK, which you can browse, download and modify to learn from for your own projects. We’ve also published our eight Persistence Examples to the beta docs, which help you get started using Persistent UserData in your Worlds.
These two sets of examples join the existing Creator Economy Examples, which demonstrate nine different ways to integrate the Creator Economy SDK into your Worlds. We can’t wait to see what you make from these starting points! Please share your feedback with us using the Example Central Canny Board.
Conclusion
That’s it for this week! See you again in two weeks: November 14!