Developer Update - 16 March 2023

Welcome to the Developer Update for 16 March 2023! This is the eighth Developer Update of 2023.

Today’s thumbnail features Gumball Lounge 3.0, a massive world by screamingcolor. Their name certainly gives ample warning!

If you’d like to catch up, you can read our previous Developer Update from March 9.

We’re Hiring!

While we’ve always got our Careers page stocked up with positions we’re looking to fill, we’ve recently added a few new ones!

If you’d like to join our amazing team and help build VRChat, check it out! We’re a fully remote company that hires worldwide and offer a ton of great benefits.

We’ve hired quite often out of our community (oh hey, myself included) and a lot of our unique strengths come from that. If you want to contribute and help develop VRChat, apply!

SDK Email Authentication

Last October, we introduced email verification! Over time, we’ve enabled it for all registered VRChat account users who are not using two-factor authentication.

Currently, SDK logins do not trigger email authentication. However, this is going to change soon!

Once SDK Email Authentication is enabled, if you log into the SDK, you may be prompted to check your email for a login code. Of course, this doesn’t happen if you have 2FA enabled already. Kudos to you for being mindful of account security! We expect this change to occur within the next month or two, and we’ll warn you via Dev Updates and a Discord post when we enable it.

Here’s the issue we’re wrestling with: lots of people still use very old SDKs. This is bad for multiple reasons, but it’s bad here because older SDKs cannot properly handle the email authentication process.

Once we enable SDK Email Authentication, creators will need to either update their SDK to the latest version, or enable 2FA.

As a reminder, new projects can get the newest SDK by creating them with the Creator Companion, manually installing one of our VCC Packages, or using a template project.

Old projects can be migrated with the Creator Companion.

If, for some reason, you cannot update your SDK, enable 2FA on your account. You will never receive email authentication requests if you have 2FA enabled! If your SDK is so old that it doesn’t even support 2FA-- BTW, that’d mean your SDK is four years out of datewe cannot help you. Please update your project. :smiling_face_with_tear:

SDK2 will not receive an update to support email authentication, as it is deprecated. Either upgrade your project to SDK3, or enable 2FA.

Avatars For Everyone Jam

We’re doing an avatar jam! Check out our latest blog post to learn more about the Avatars for Everyone Jam.

Our “default avatars” have been around for quite a while, and we’d like to give avatar authors an opportunity to show off their skills. If you submit an avatar to this jam and follow the guidelines, there’s a really good chance your avatar will be featured in the Default avatar row! The authors of winning submissions will receive a year of VRChat Plus, for good measure!

We’ve recently extended the deadline by a week due to some feedback from creators saying that the timeline was too short. We agree, so we extended it a week!

Again, check out the blog post for more info, rules, guidelines, the submission method, and more.

Patches! No, not the Naxx boss, WHY’D YOU BLOW BLOODLUST NOOOO

Since we released 2023.1.2, we’ve dropped a few patches! If you need to catch up, here’s the patchnotes:

VRChat 2023.1.2p1
VRChat 2023.1.2p2
VRChat 2023.1.2p3

These mostly addressed issues with the original 2023.1.2 release. At this point, most issues reported with 2023.1.2 are fixed! Yay!

Ongoing Development

SDK Warning Improvements

A couple additional SDK warnings are going in!

Firstly, on Quest, we’re having projects update their default texture compression from ETC (the Unity default) to ASTC (supported on newer hardware). Meta has suggested this for the Quest since back in the Oculus days, and obviously we’re set on more modern hardware.

RGB textures will see an 11% VRAM size reduction from this change, and RGBA textures will see a 56% VRAM size reduction, under normal quality settings. It’s also more flexible - there’s 6 different quality settings (block sizes) you can set in the per-format override settings, letting you fine-tune your texture quality wherever you need. If you hit an edge case where ETC/ETC2 looks better, it’s possible to override on a per-texture basis using the Android texture import override settings.

Notably, ASTC doesn’t support Crunch, which brings us neatly to the second point:

We’re going to start suggesting against using crunched textures from now on!

Please note that we’ve gotten your feedback pretty quick! I’ve made a post a bit down below that clarifies that we’re going to circle back around on this recommendation and make some changes. Thank you for the feedback!

Crunched textures are good at one particular thing – they reduce the on-disk size, by performing lossy (often very lossy) compression.

Once you load them into memory, they’re decompressed into their native format and streamed into the GPU as needed. Here’s the thing though: avatars and worlds are already compressed on disk in VRChat!

The only thing you affect with Crunch is the download/upload size, and generally, not by that much. Decompressing large crunched textures can cause some hitching too since it has to be decompressed when your avatar loads.

Unity doesn’t help with this very much at all – the editor window normally displays in-VRAM texture size in the preview… unless you crunch the texture, in which it’ll display the on-disk size. Not confusing at all! :upside_down_face: We suspect this is why a lot of people incorrectly think crunch saves on VRAM.

If you’re certain you want to fine-tune your upload size though, we won’t stop you. You can turn off the warnings in the Settings pane:

Turning this option on will tell the SDK not to nag you about crunched textures. In that case, we highly suggest double-checking how much your download size is really impacted!

Avatar Pedestal Changes

In an upcoming update, the internal GameObject hierarchy of avatar pedestals will be added to the Udon access blacklist. Scripts trying to access it will break!

We know some creators were using avatar pedestals for dynamic images. Please switch to using our first-party solution instead.

Update on Data Containers / Udon JSON

We last mentioned DataList and DataDictionary back on February 9! Here’s a quick update on their progress:

It’s getting close, and has the potential of being included in the next update! However, we’ve run into some hiccups with the public variable inspector UI, so we may launch initially without that function.

Of course, the structures and types themselves (as well as the JSON parser) will still be usable within Udon script, so creators will still be able to employ them. You just won’t have access to that nice UI until a bit later on.

Update on Udon UI

We last mentioned the Udon UI system back on February 16 and now we’ve got some updates and a VIDEO!

We’ve been focusing on implementing the Unity Editor Window to build Udon UI layouts easily.

The outliner for the Editor Window is nearing functional completion! You can add or remove blocks, drag and drop to organize and edit them with Markdown support.

This enables very quick and easy creation and editing of the Udon UI layout. Coming up is the implementation of the Udon UI and World interactivity!

Conclusion

That’s all for this week! Lots of work continues on Group updates, and we’re hoping to get something out to you soon to show all the cool new features for Groups. Just because we don’t talk about it here doesn’t mean we aren’t working on it-- it just means things aren’t in a state where we’re ready to show things off and get you hyped up. Except… you should get hyped up anyways because they’re really cool things.

See you next time!

21 Likes

Any word on getting a better World Instance scraper? The current menu is extremely slow, to the point of needing to restart VrC to get a fresh list of instances, even if there’s only 2 open Instances.

4 Likes

This is a logged, known bug, but no ETA on a fix.

2 Likes

Sounds good. I await that and the PC+Quest sync bug you guys reported a few patches ago, as it seems to be messing with a game world I’m working on. Good luck team.

2 Likes

I really enjoy having these dev updates be so regular. Honestly is really a big up! Keep up the good work❤️

8 Likes

Just because people misunderstand storage usage with VRAM usage, please don’t bash on icrunch compression. Keep in mind that there many things that need to fit in storage limits, including quest worlds and crunch compression let you get more out of it. Many things including what you see in majority of virtual market booths which need to fit in even more strict limits would not fit without it. Also crunch compression reducing storage size sometime beyond 50%, so i don’t understand “not much” part

2 Likes

The crunch OFF recommendation doesn’t seem right. DXT5/DXT1 can change download size dramatically on a lot of textures. BC7 Compression is very similar in download/VRAM usage though. IMO, this isn’t a good way to explain to people that crunch doesn’t save on VRAM. Thry’s tool can display VRAM use correctly ~ a similar functionality should be integrated into the SDK.

I personally have my download limit in game set to 45 MB. I prefer the minor hitch over the longer wait for a larger download on slower internet.

*Post edit from Zeni future:
This is just flat out wrong wrong. See my other post in this thread. Textures are still compressed in build, even without crunch. Someone slapped me silly about this.

6 Likes

Random response.
Im having an issue and a few others when join a world with an active video player
we are met with a Vrchat not responding message and the game being frozen
then it loops into the map again just to be frozen again from the player to make it worse vrchat locks my ALT CTRL Del sometimes I have to restart the computer because the computer is locking up from the game being frozen.

Honestly is blows my mind how this game eats up VRAM, my 3080 10GB is almost always over 8GB and in many worlds my GPU starts putting assets on my RAM. When I’m in a full Midnight Rooftop my RAM usage goes up to 28GB/32GB, this is with Graphics settings on Low and no MSAA, and I only show the nearest 7 avatars.

nice :+1:

2 Likes

This can be worked-around by the world author by using the included Network ID tool and resyncing/reuploading Quest+PC versions of the world-- it seems that this issue stemmed from using old SDKs.

Crunch compression, after asset bundle compression, offers very little benefit. Usually on the order of 1-2% better compression ratios at the cost of higher CPU usage to decompress, along with reduced texture quality.

Asset bundle compression alone is usually very sufficient.

ATSC is often better than Crunch and even lowers VRAM size, which will help the Quest’s itsy bitsy RAM issue and hopefully help reduce the ridiculous number of “out of memory” crashes we get on the Quest.

This is why we’re going a bit harder on texture memory usage lately. :smiling_face_with_tear: Try blocking Very Poor avatars and see how you perform.

We’re working on this, should be available next week last time I checked.

1 Like

Amazing stuff in this blog!

I have a question from 2 blogs ago. Is it true more people have eye tracking over face tracking?
Also any word on official face tracking?

With the new SDK warnings can there be some warnings added to worlds as well when they are being very un optimized? Seems some popular worlds eat tons of VRAM on their own!

Does this imply all people contributing to the project or just the uploader? For our project we are uploading to a community account and wonder if its just that account getting vrc+ or like how valve does it for community additions where the contributors get the rewards too.

If I recently applied (march seven!) to the Web Front-End Engineer should I apply again?

Don’t have numbers on this!

“Eventually”!

Please check the blog post, which contains and links to the exact guidelines and rules.

You should be good.

3 Likes

Then i don’t understand why i see such huge download size reductions on windows, maybe it make sense in case of ATSC but on windows with DXT it give a lot better rates, again i would not able to fit what fit on my vket booth if not crunch compression.

2 Likes

I’m rather confused about the new recommendation with regards to Crunch given this post from bgolus: https://forum.unity.com/threads/why-use-crunch-compression.581986/#post-3884308

Particularly this part here: The second benefit is loading time. A crunched image decompresses directly into DXT1 or DXT5 with no additional steps, and decompresses quickly. The idea is a crunched texture can be read from the disk and decompressed into a DXT5 faster than reading a DXT5 straight.

2 Likes

Goofy

When I was optimizing an avatar recently I found that crunching heavily reduced the size shown in Unity… while I understand that is not VRAM, it does have an impact on download to my understanding, and could be the difference between some people seeing me vs blocking the avatar. Am I missing some detail that there is some form of compression that is applied after the BC7/DXT5 step by default or something, leading the Unity filesize number to not represent the actual download size? If so, this should ideally be documented somewhere for those of us with similarly low amounts of Unity experience.

Edit: Whoops didn’t mean to make that a reply.

1 Like

Finally, advising against crunch compression! I’ve been warning people about that for eons, since I’ve got a sneaking feeling it can also lead to crashing-on-load for lower-end hardware.

sdkboxthingy

Will the “Auto Fix” button in the sdk auto-convert textures to DXT1/DXT5 compressed, or some other compression method?

2 Likes

What’s the Avatar Pedestal Change, it’s not too clear for us layman of what’s being blacklisted
Avatars pedestals via Udom (such as pasting URLs) or avatar pedestals via Udon