Developer Update - 16 March 2023

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!

I really appreciate that you warn us about that change, and that you give world creators time to adapt, there’s a prefab used to read avatar pictures and I can imagine that many worlds uses that feature.

Short story : I remember when last year my world (Circuit Master) and a few other worlds I knew broke because of a change related to the networking (Instanciated GameObjects cannot send network event anymore), I got a complaint that my world stopped working a few weeks after the update, it took me days of debugging to figure out the issue, and when I wrote a canny I was told that it was an expected behaviour now… All that because there were no regular developer updates back then, and because I missed that one line in the patchnote, and even if I saw that line in the patchnote I wouldn’t have been able to fix the issue in time, that was heavily frustrating for me.

So basically, thank you for warning us about that change.

1 Like

I think having a big warning about crunch compression is a positive thing.

The discussion so far has been focused on crunch compression’s efficacy at reducing filesize. I think it’s better for the SDK to point out that crunch compression is bad. The way it’s displayed in the Unity Editor misleads users, and a warning will act against that. Better to warn people upfront than have them find out the hard way that it doesn’t reduce VRAM usage, especially if the SDK could include VRAM metrics as well to go with the performance rank adjustments.

With worlds, it sometimes makes sense to take a noisy texture and mash some of that noise up with texture compression artifacts. But avatars generally don’t benefit from crunch compression over just using a smaller, higher quality version of the texture. If you know enough to have your cake and eat it, you know enough to disregard the warning.

4 Likes

I think a info message might make sense, but not a warning, let alone an error. crunch compression has its place and is useful.

it is true, that the unity editor is very misleading and it makes sense to explain the situation to the user. It does not however make sense to portray it as the worst thing ever and to say nobody should ever use it.


So per Salbug’s post, there apparently was a “Feature” added, to make trigger not take the picture, but only in fly mode?

Toggling this fixed it, but… really, not cool, lol. I do read all the patch notes and dev updates and i dont remember reading this “update”?? Maybe im crazy, haha.

What is the policy for fixing the bug that causes Image Loading ( ImageDownload / VRCImageDownloader) to flip upside down just by Quest? If I simply reverse objects on Quest only, images will flip upside down again after the fix, so I think you need to make the policy known.

[Build: 1282] Image loader on quest loads images upside down | Voters | VRChat https://feedback.vrchat.com/vrchat-udon-closed-alpha-bugs/p/build-1282-image-loader-on-quest-loads-images-upside-down

This is an significant issue as Google Drive is now blocked by Video Player and the transition to Image Loading is being rushed.

I don’t consider 28 to 35 MB a considerable improvement, when the quality of crunch is going to be very noticable. Yes, your explanation of total lobby download makes sense. However, what you gain in a 20% improvement, you will almost always lose in very noticable quality losses.

There is an actual trade off and crunch isn’t a silver bullet. It is a decision that needs to be made, and I really, really think that just reducing a HQ texture down 1 step of resolution will do a lot more than crunch would. I’d be happy to grab an avatar and do a test to show this off, even if I end up being wrong.

Exactly my point of why it’s more of a last resort. If someone’s internet suffers, they can reduce their download size to whatever they want. I wish I could do the same with texture memory, since there are some avis with good texture memory, but might have 70,001 polys.

Maybe they could react based on the SDK version? Fix it for SDK 3.1.12 and newer as example. It’s been a month maybe they could add a flag for callers to get a properly rotated texture.

I am curious about the comment about UV difference being a possibility. When I was encoding my own ASTC textures, the output would show upside down in Unity. The compressonator also doesn’t remember being told to create mip maps between runs of the GUI. I should download the cli version of that just in case I need it…

So many avatars have 4k textures which are mostly a solid colour, and other absurdities. I can only assume the creators simply never bothered to tweak the import settings. The first step should really be to just reduce resolution until the quality is no longer acceptable. It would save heaps of VRAM and bandwith.

Texture origins are different for Direct X (top left) and Open GL (bottom left). My guess is that that’s probably related to the texture flipping issue.

1 Like

Wish we could get an update on that Built in flight, No clip, and other such tools.
I miss being able to fly to explore worlds, it made life in VRC so much more exciting and enjoyable, No rules or limits on where I can go or what I can do, so much freedom. Even notorious would block flying in public worlds or even game worlds. I wish i could go back and have more wholesome fun. I wish There was an officially supported client that would let world devs and even rondos like myself have more fun in any world. I remember when vrc made a promise to work with the modding community, I guess its a dead dream now.

I came to vrc because of the new experiences, the fantasy, games and all the things reality couldn’t give me, having a client made that so much better, it gave me wings in any world, worlds that where to big to explore on foot got boring quickly, and worlds that had flight built in where too limited and few and “one trick ponied” up, flying was just the best feature for any wholesome non malicious client user. Now? I can sit quietly on the ground, Watching all the cool kids fly with wings, like Gods.

I was a God once… I wish You guys could of seen the fun, just a few simple tools gave all the good guys, even games we could play.

Now all the “Gods” are crashers, botters and thieves.

VRchat feels dead now, I wish we had the freedom to defend ourselves in these “Client wars”. It was a level of fantasy VRC can never Recreate for me.

Games empty out within 20 minutes, Parties are exclusive to paid members, Everyone just sits in front of a mirror and plays music, back then we could have fun.

Chaos in games the likes of which could drive any man insane, people being superhero’s defeating evil client users, it was like a movie.

It was fun

VRchat was more fun than any normie could ever know.

1 Like

1 Like

The quality loss highly depends on the texture, more often than not I find the quality loss (@100%) acceptable, and I consider a 20% reduction significant enough to be worthwhile doing so.

I’ll also note that others have reported a much greater reduction that 20%.

I had recently experimented with reducing the resolution of textures while switching from DXT1 crunched to BC7 and found my bundle size increased slightly.

I have learned that the effectiveness of crunch vs asset bundle compression does vary texture by texture, with some textures being essentially uncompressable via asset bundle compression but can achieve a high compression ratio via crunch (approaching 50% iirc), while other textures benefit better from plain asset bundle compression.

Some way of detecting the above would help with reducing both the potential uncrunch stutter and keep download sizes down

I would encourage you to explore different areas of VRChat! Even on my alts, my experience is very different from what you describe (although I do have the distinct advantage of knowing where to look)

Letting you fly around without restrictions probably won’t solve the issue of not being able to “find your people.” We’re working on solving that problem in different ways.

In the mean-time, I’d encourage you to check out community event aggregation sources like VRChat Party Hub, if that’s your thing. As far as I’m aware, none of the parties and raves and clubs they list are paid-entry. In fact, I’m kinda curious what paid parties you’re talking about here… I haven’t seen them!

I’d also encourage you to dig a bit deeper than the “default” worlds you go to and find groups and circles of people that do different things in VRChat. Again, making it easier for users to self-organize and run communities is one of the things that will help alleviate this issue.

For sure, but just like you said, it highly depends on the texture, and you found it acceptable. “Acceptable” depends on the person and the intent with the avatar.

I’ll have to do my own tests, because I feel like it would make more sense that a lower resolution HQ texture would compress better than a higher resolution crunched one. But like you said, it does depend on the texture.

Though this isn’t including the general rule that a higher quality, smaller resolution will generally look better than a lower quality higher resolution one (plus the VRAM savings with a lower quality one anyways). Plus, I’d imagine urging users to go for a lower resolution texture versus using crunch will be more effective in the long run with VRAM usage.

VRAM usage is consistent across sessions. Downloads are often inconsistent, if at all happening over the course of a few days with the avatars being cached. It may also be more useful for users to be able to adjust the size of the cache from 20 GB (which, to my knowledge, is not adjustable currently).

I think it would be useful if VRC could show the bundle size in-editor so you can compare it better. I plan to do a test at some point to see how my avatar(s) fares with it.

I do think that if a user is having such significant internet problems or has a data cap, they should be utilizing the maximum download size feature. I generally find crunch useless, and I find most players these days at least have 100 Mbps connections which are perfectly suitable for downloading this stuff. If someone wants to use crunch, great.

But if someone values the quality of DXT1 or BC7 over the 10-30% download size reduction when their avatar may only be 20-40 MB already, then they should have that decision, knowing the crunch is more of an optimization feature than a necessary feature.

I’ve had textures where this rule isn’t true, from my brief testing I see;
Finer details can survive crunch better then a resolution drop.
Textures with sharp edges can go either way.
Soft edges can survive a resolution drop fairly well.
Before now I’ve seen low res + BC7 advocated for skin textures, so again, it depends on the texture but I suspect gradients are the best fit for your rule.

This can be adjusted in the config file, In my case I’m not currently willing to dedicate more space to cache.

I’m not advocating to always use crunch, I’m just saying that we shouldn’t say to never use crunch, as per the proposed sdk warning. You say they should have the decision to not crunch, but likewise I feel they should have the decision to crunch.

Whatever the SDK suggests should be done with the user base in mind. Most content creators don’t have a very good understanding of how texture compression works and often end up making simple mistakes. Making VRAM a performance metric is a (huge) step towards improving that—it at least gets people thinking about their textures.

I think the SDK should not require any particular texture configuration, but there are some obvious recommendations it could make:

  • Warning that crunch compression doesn’t decrease VRAM usage, and may not greatly decrease download size
  • Warning about using uncompressed (RGB24/32) textures
  • Warning about very large 8k textures
  • other potential traps that new developers might fall for.

The rest of us can safely ignore these warnings when we have determined what’s best for our particular project.

2 Likes

No. I don’t make worlds. I want proper immersive stuff i can take with me to other peoples’ worlds and enjoy them in tandem with my own stuff.

You would probably get more traction if you tried to explain your issue from the perspective of avatar development. In other words: what about this limitation is making it difficult to make a digital representation of oneself?

If you are just trying to create something whacky, like those avatars with built-in rollercoasters, that’s cool and all, but you may just have to accept that limitations like these are inevitable. At least until some sort of prop/inventory system gets added.

Christ, no wonder you and the VRC staff are giving out such bad advice if you think that everyone has a 100Mb connection these days. This is DEFINITELY not true. The overwhelming majority of people DO NOT have a connection this good.

As an example, here are some metrics - Internet Speeds by Country - Fastest Internet In The World Map - keep in mind that people with incredibly fast connections will be pulling that average up and making it seem like the lower end isn’t as bad as it is. Hell, the main thing I hear from friends in the US is how they’re stuck on a bad provider with rubbish speeds because they have no alternative choices in their area.

I suspect everyone is playing with crunch right now, as discussed later in thread?

I wonder what the average internet speed of VRChat users is.

Didn’t say “everyone”, and I also said “I find”. So obviously it is biased towards me. But my point is, at least in my circles and the places I am most often, the people have fast enough connections and I don’t hear people having issues with download speed. Yes, of course that’s biased, but that’s my point: If people around me don’t mention it, then it likely isn’t that much of a problem if at all, and there’s little reason for me to optimize with crunch (especially when my avatar is already only 8 MB of download and 45 MB of texture memory).

You also kind of are ignoring the context of what I said. I also said:

If people are using avatars that are 60, 80, or 100+ MB, there is probably something else wrong with their avatar that would cause problems, more than just download size. And those are the people that would probably actually see a significant benefit from crunch. And I also said:

The reason I say this is not for them to be excluded. I say this because, if enough people say “Hey, I can’t load your avatar because it’s too big and my internet is too slow”, people will probably be motivated to improve their avatars.

It’s the same reason I wish we had specific limits for texture memory rather than just the safety settings, and it’s why I wish mipmap texture streaming was enabled for avatars: So avatars with horrendous texture memory might look terrible with the mipmap streaming and might be convinced to try to make their textures better.

1 Like