Welcome to the Developer Update for 11 July 2024!
Today’s thumbnail features Jetski Islet by Quap. Did you know that riding on a jet ski is fun? Now you do!
It’s been a minute since our last Developer Update! Our last one was all the way back in May! While we typically try to do one of these every two weeks, that wasn’t possible last month due to us taking a brief break for the summer. But now we’re back!
Announcements
The Summer Music Jam is Ongoing!
Beach vibes, a cookin’ sun, and the smell of barbeque – it’s summer, baby, and it’s time to Jam!
That’s right – we’re hosting our first-ever Summer Music Fest Jam! Think of it as a VRChat beach episode, but with more bangers. This Jam includes BOTH an avatar and a world jam. You can read more here.
In short: we’re looking for creators to submit their best summer + festival themed avatars and worlds.
If you’re looking for where to get started, you can check out this thread.
Pico Users – Update Your OS!
Remember to upgrade to the latest version of Pico in order to play VRChat! We’ve received multiple reports of players encountering a black screen when loading VRChat on older versions of Pico OS. You can manually trigger an update under: Settings > General > System Version.
If you (or your friends) are experiencing issues, update and try again!
Final Reminder for Uncompressed and Download Size Limits!
Yes, it’s happening! As we’ve mentioned before, we’re going to be lowering the download and uncompressed size limits. This will be happening next week! (The target date is July 17, but it might happen a little later next week, depending on a few things.)
As a reminder, here’s what the limits will be changing to:
Download size 500 MB → 200 MB
Uncompressed size 1.2 GB → 500 MB
This change will first be enforced via the SDK, and then after few weeks will be enforced by the client and server. This is to ensure people are informed via the SDK properly.
Older avatars that break these reduced limits will be temporarily grandfathered in. We do not intend to support them forever, though, so anticipate them to break in the future. Likewise, if you choose to update an avatar that was previously grandfathered in, it will be hit with the updated limits.
Additionally, it’s worth noting that once we started strictly enforcing the Android size limits, we noticed a higher than expected volume of avatars that weren’t meeting the limits. This was mostly due to folks uploading avatars with outdated versions of the SDK! (Keep your SDK updated!!!)
While we’d like to increase either limit on Android, there just isn’t much headroom to play with. We’ll keep investigating, but don’t count on any changes to the Android limits in the future.
Dynamic Bone Conversion is Going Away (Soon)
Dynamic Bones are a Unity package that allow you to simulate physics on chains of transforms, similar to the PhysBones system that comes included for free in VRChat’s SDK.
Ever since PhysBones were introduced to VRChat around two years ago, we’ve been automatically converting Dynamic Bones on avatars into PhysBones, although we’ve allowed users to opt out of this with an option in our UI:
In a future update, we’re planning to remove this option and automatically convert Dynamic Bones to PhysBones. This is being done partly to help boost performance, and partly as a step towards reducing the total number of user settings. With this change, it will also no longer be possible to upload avatars containing Dynamic Bones – you’ll need to convert them to PhysBones first.
Using PhysBones on your avatar instead of Dynamic Bones will give you full control over how the bones behave in VRChat. Converting is as simple as using the auto-fix option in the SDK to change your Dynamic Bones into PhysBones and then adjusting those PhysBones until they behave in a way you’d like.
This change specifically only affects avatars. Dynamic Bones in worlds are still allowed and will not be auto-converted into PhysBones.
Ongoing Development
Website Updates
We’ve got a few updates from the web team!
All of these updates are available now on the VRChat website: vrchat.com/home.
- After a brief bout of shyness, VRCat can once again be pet. That’s a good kitty, right there.
- Impostors are no longer an Open Beta feature! Go generate impostors from your avatars’ info pages, they’re super neat.
- You can now filter Group audit logs to narrow down to just the events you’re interested in.
- Fixed some layout issues on the Discover Worlds page.
- Clicking a link on a user’s profile will no longer sometimes open the link twice.
- Some small improvements to searching.
- Fixed the subscription preference on groups settings pages.
Mipmapping Experiments
We’re experimenting with a newer advanced method of image downscaling for mipmapping!
A little background for those unfamiliar: When you move away from something in a 3D world, the image actually switches between progressively downsized versions of any textures you’re looking at. This makes the image resampling algorithm you use incredibly important, as you want to preserve as much detail as possible.
Unity’s default image downscaling is called ‘Box’, which is simply where you average the incoming pixels each time you shrink by half. This generally results in incredibly blurry textures, effectively making your headset look like it’s rendering at half resolution!
There’s a slightly better algorithm called Kaiser, but while it’s a huge performance uplift, it still requires sharpening after the effect to get really crisp textures.
There’s a newer, much more experimental algorithm known as Detail Preserving Image Downscaling (DPID) which actually tries to focus on perception by intentionally over-emphasizing pixels which are outside the norm.
This causes downscaling to preserve a huge amount of detail that’s otherwise lost, at the cost of some potential accuracy. While jamming away at it during our hackathon week, we were able to come up with a version that overrides Unity’s mipmapping when importing assets, using a compute shader to speed things up massively, so we don’t balloon your import times.
Results are incredible! (Left is Box, right is DPID.)
Once we’ve had time to tweak it a bit more, we’ll look at using this for UI, world pictures, user icons, etc.
There are some notable exceptions where you’d want to avoid using this algorithm, so as implemented it’ll currently only override Kaiser filtering.
And – as a bonus – as this only affects texture imports, it works cross-platform!
Constraints Update
The new constraints system for VRChat is almost ready!
This feature has passed our internal QA, and we’re now aiming to start a public beta phase for it soon.
We’re also intending to include a special avatars SDK with this beta that will let you try out making avatars using the new constraints.
Our current plan is to make this a secondary open beta separate from the main one that runs before major releases, to make sure we have the time we need to address any differences between our new system and the one built into Unity.
This secondary open beta will likely only be available on the PC platform. Once we’re happy with it, we’ll shift VRChat constraints onto the main open beta, which will give everyone an opportunity to try them out on non-PC platforms.
We’ll have more information about the constraints open beta and how to take part in it soon.
Age Verification
As mentioned on our Discord, we have been investigating age verification services for use within VRChat.
While we do not have further information at this time, the current plan is to implement a form of age verification using a trusted and well-known third party processor within the year.
There’s been a good bit of chatter in the community about this so far, primarily around how the system will look, operate, and how we’ll manage user privacy.
While we don’t have details on those first two (how it’ll look, and how it will work) as the system is still in early planning stages, we will gladly share that our choice of third-party verification vendor heavily weighs on how well they manage user privacy, as well as their history keeping user data safe. We are also ensuring that the partner we’re using works in as many regions as possible with minimal issues.
While we aren’t ready to share who we are partnering with just yet, rest assured that the vendor we will choose sets and maintains the highest bar of user privacy, and is in use by large, global organizations.
We recognize and understand this is an especially sensitive topic for VRChatters for a variety of reasons, and we’re keeping it at top of mind while implementing this safeguard.
Conclusion
That’s it for this Dev Update!
Our next text update is scheduled for July 25. See you then!