Developer Update - 11 July 2024

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:

optionbones

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.

image-20240612-164641

  • 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.)

image-20240708-233202
image-20240708-233427
image-20240708-232552

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!

23 Likes

Any news on the new Input system? My joystick drift is getting terrible and it would be so nice to have hand tracking on PC.

12 Likes

I’m anticipating the new Unity limit changes :sweat:, I hope that the Android upload limit does manage to increase soon because that would make Quest compatibility so much easier.

Wait shouldn’t this say enforced? (Or maybe I’m just really dumb)

2 Likes

I sure hope what you’re saying about privacy with the ID verification system is true; Will we be able to block out optional information (such as a passport number?), as you’ll have no reason to have that information specifically, only my photograph, date of birth, and ID expiry date.

On another note, what’s the current state of Udon 2 and Persistence? Have they had any major update in the past weeks since we last heard anything about it? I and many other VRC creators are very much excited for these features, and it seems they keep getting left in the dark for the most part.

6 Likes

I am so happy to hear about the Age Verification thing, I hope this is implemented well and becomes a solid feature of VRChat.

9 Likes

Goodbye for good Dynamic Bones. You will not be missed

12 Likes

Welcome back! Hope you guys enjoyed your break.

Awesome to see group audit logs have a filter now. Still hoping that when age verification gets pushed through, there can be hope of optionally adding content gating for groups (been talking about this one forever!), but these other updates are sweet. Thanks for keeping avatars optimized! Some can be very problematic.

2 Likes

May the inforced be with you

2 Likes

I don’t mind that it gets removed, because I don’t think I’ve ever turned it off, nor know anyone that turns it off. However, what are the costs/downsides to just removing it from the UI and allowing it to still be changed in the JSON file?

I don’t think this option is worth keeping, but in general, I have not liked the previous precedents of removing, adding, or changing debug settings based on whims. For example: The contradiction between a staff member expressing that VRChat will not add experimental features to stable, but then two experimental features toggles were added.

When will impostors be auto-generated?

Does this come as a precursor to implementing mipmap streaming by any chance? I know it was marked as interested. I really feel like this is the last big hurdle in improving VRChat performance for dense instances.

I am honestly glad that VRChat is taking this seriously. I do plan to submit my ID personally.

I just hope that alongside it comes a re-engagement of the “adult” and “sexual” tags being blocked for minors. Tupper mentioned in the December 7, 2023 Developer Update that it was disabled, but we have not heard about it being re-enabled.

I know some communities that rely on the sexual and adult tags to run 18+ events, and they were shocked and upset that I showed them it doesn’t work like they thought. I think VRChat can work on communication in this area.


Quest 2 hardware has not changed. I don’t know why they’d be able to increase the limits. For now, just generate an impostor. It’s the quickest and easiest way to have a Quest-compatible avatar.

5 Likes

How will removing auto-converted dynamic bones effect really old avatars? Will the dynamic bones be disabled? Will they go back to being regular dynamic bones? Will the avatar just be completely disabled?
I was just playing around with the random avatar function in Prismic’s Avatar Search and there are Tons of avatars that still are using dynamic bones because they were created back in 2018-early 2020. And at this point I’m not sure if any of those avatar authors can fix those avis

Is the steamVR 2.0 input still planned to be in the next beta or next next beta?

5 Likes

I must say this is pretty disappointing…

While I’m happy to see even more potential performance gains and the soon to be reduced limits, most of the big features that have been previously talked about are STILL not being mentioned or implemented

Where is the rest of the creator economy (mostly the avatar/assets part)? Where is UDON 2? Where is the elusive persistence? Where are contacts, physbones and OSC for worlds? Where is that world tab in the menu that was announced ages ago with the new menu design? When will the player collider be fixed like it was announced in March 2023?

Of course the team does deserve breaks and I’m by no mean saying you all aren’t working hard. Just that it seems prioritizing things seems to still be an issue. So many announcements have been made in the past and just… Are not here after so long.

Those updates are nice but please, focus on achieving what has already been announced before making new things and/or let us know when there are changes of plans that will delay such announced features.

Hyped for the vrchat constraints tho-

19 Likes

Super solid dev update, really excited for all of these features. Especially the VRC constraints.

I extremely hope that the age verification processor you chose really does have privacy as a pillar. Some are pretty crazy with what they get away with in their privacy policies. Was reading one the other day that retains your information for like 3 years to train their system. Crazy.

1 Like

VRChat CONSTRAINT. Can I use the SDK beta now? But I have to switch to VRChat beta?

This is something that I also have expressed and have been shamed many times for suggesting. People have this defense: “but they only have so many hands”.

Yes, but how are BOOPS more important than anything else listed here? That feature was missing core functionality and didn’t have a clear value add other than VRC+ justification, but they still wasted development time on it. And for what?

When we look at scenarios like the VRC Clock controversy and many other replies developers have given, it clear to me at least that VRChat considers problems that do not exist. This works to both deny legitimately useful features, and also promote useless features.

People don’t understand that task prioritization is different from bandwidth. The point of prioritization is to manage your team bandwidth better, but it seems VRChat is not prioritizing tasks effectively.

9 Likes

The title of the section is poorly worded, they aren’t removing dynamic bone conversion. They’re just forcing it to happen for all avatars and removing the option to disable it.

7 Likes

There’s 2 things of interest I would like to bring up in this dev update

So with this area with the new mipmapping experiments, does this mean that VRC is able to utilize mipmap streaming as well? And from the looks of it are you guys also likely to potentially look at future texture compression algorithms such as Nvidia’s Random Access Neural Texture Compression or AMD’s recent research into Neural Texture Block Compression whenever those would be made available for developers?

About a month ago I made a post on the feedback forums with regards to bringing back the old behavior of using root rotation in full body. When the update was pushed to live last year a lot of prefabs that relied on the avatar’s root rotation did not work properly in full body, but it behaved normally in half body and desktop. Would it be possible to have a “Use Root Rotation in Full Body” option in the Constraints or have it be a separate component?

2 Likes

Detail Preserving Image Downscaling would be completely unrelated to mipmap streaming

In SteamVR, there is a setting for joystick drift.
Settings; Controllers; Edit Thumbstick Settings; Thumbstick deadzone.

4 Likes

I know that they are technically unrelated. But I used this as an opportunity to ask for an update on mipmap streaming. Having their hands on mipmap downscaling techniques makes me think it’s related to research into mipmap streaming.