Developer Update - 14 March 2024

VRChat doesn’t parse or run website code (e.g. JavaScript). It just gets the response from that URL as text. And even if it was an HTTP redirection, I don’t think it would do that still.

2 Likes

I only hope the limits will be applied AFTER the build, not before. It’s already a huge issue with physbones blocking builds of avatars because they are above the limit in editor, but not after build.
With all the tools like vrcfury and modularavatars any limits applied before build are just pointless. I often end up with like 600 dynamic bones in vrchat stats, only to upload avatar with like 40 so I needed to write own scripts to force the build thro.

The limits have to be enforced post build as it’s really hard to predict the final sizes beforehand, so it should interact fine with tools which run on build

2 Likes

If 98%~ of avatars are under 600MB uncompressed, then why is the limit being set to 500MB? Wouldn’t it make sense to just leave it at 600MB then?

Not sure myself, but I’ll pass that along! Thanks for the heads-up.

I think you’re correct, here, but I forwarded it along regardless.

1 Like

The best solution I can think for this would be to create your ‘base’ with nothing but the always available features, copy that base and then use VRCFury to add the various version specific items as modules and letting it handle the merging of animators, menus and so on.

The string and image downloaders both do not allow any redirects. And in this case javascript is not even ran. The string-downloader is more akin to an API call than a browser opening a web page.

2 Likes

String Loader does NOT follow any redirects and will throw error if you try it, this has been thought of and has been reported to VRChat Security Team before String Loading has been released :slight_smile:

Also, it ignores any javascript on the website as well, however there are other ways to force redirect, but even those are completely ignored by String and Image loading.

VideoPlayer has redirects enabled due to many providers relying on redirects.

1 Like

The limit is being set based on the hardware we see people using, and the point at which we see problems start to appear. The goal of this change is to fit inside specs we observe and to prevent problems from occurring.

If we based the limit on the avatars that already exist, that’s “the cart driving the horse”, if that makes sense.

The 600MB figure was chosen for demonstration purposes.

3 Likes

I guess I’m failing to see how this is useful. You’re trying really hard to not exfil data from VRChat, when people could still use this method to dynamically update a gigantic JSON of pre-computed URLs that can still be used to exfil data.

Why not just allow a separate untrusted URL called “Allow POST Requests” or something that has to be turned on per-world, or is disabled after you leave a world?

This is exciting!

Why not just do it now? I’m sure you know that people aren’t going to know about these new limits unless you both a) post a new notification in-game and b) put it in the VCC.

If you wait until they go to upload an avatar + only if they hit the limit, it will be a surprise to everyone. Then starts the cycle of “VRChat sux, they blocked my avatar for no reason!!1!” when it goes into effect.

absolutely based advice


Advice for the VRChat Staff

Advice for the VRChat Staff

First of all: Absolutely stoked about Estimated Memory usage. It seems to solve my problems with VRAM more eloquently than even my feature requests were.

However: From now on, can we stop having useless conversations about the “contentious nature” of a feedback request, or whether or not the majority of users understand what “VRAM” means?

I am seeing a pattern develop:

  1. User asks for feedback request.
  2. VRChat comes up with some crazy nonsense on why this feature is difficult to implement.
  3. VRChat then releases that feature sometime in the future out of nowhere with no warning.

What it sounds like to me is that you all are trying to probe for feedback on features that you’re already working on, but you’re doing it in the worst way possible. You are making lots of people upset for no good reason. If you are just in the middle of developing that feature, is it so hard to say “We are working on something like this,” and just not reply with anything else?

Examples

Here is Strasz mentioning the “contentious nature” of a “clock”. (???)

image

Here is Tupper mentioning that “VRAM” is hard for people to understand and this feature is a massive UX challenge.

image

image

Both of these staff members proceeded to get roasted by dozens of people because of how outlandish these comments were.

Just please: Stop doing this. When you do this, it makes people think you’re going to a) mess up the feature REALLY bad, and b) not do the feature at all. The rollercoaster is exhausting.

Shoutout to Polytool for optimizing my avatars.

4 Likes

Thanks for clarifying, would you happen to know what percentage of avatars would be in the 500-600MB range for comparison? It’d be interesting to know if it’s going to be a meaningful amount of avatars that would need to start optimising again.

This is definitely needed!

You can think of two ways to implement such a function: using folders or tag searches, but the second is a thorny path.

Since there are many users from many different countries on VRChat, users will want to use their own language for this purpose.
To organize well, the folder/tag names must of course be in that language. (As a Japanese, I would use Japanese.)
In that case, it is very difficult to type non-english language in game with tag search!

1 Like

Please, don’t enforce limits for offline uploads. Offline avatars don’t hurt anyone, but limit creativity a lot!

6 Likes

It makes about an extra 1% difference, so ~97% of avatars are unaffected, the vast majority of avatars are much much less. In any case though it’s always good to optimise as much as possible.

There’s a number of ideas you could use this for.
For example, having a database of pictures you host on Github, Dropbox or another trusted source. You could download the most up to date database when you join the world, then do text search queries of that database and pull down URLs provided by it.

You could have a curated playlist of music or videos for your world you could now edit without needing to upload.

You could have non-managed instances of a world which plugs in to the same stream (like a club world) automatically update it’s stream URL for different events or performers when a change happens.

1 Like

While we’re talking about optimization, I guess I should drop this guide by Cam’s Avis. It shows how to use UVPackMaster and SimpleBake to drastically improve quality while reducing material count and texture resolution.

UVPackMaster isn’t really necessary, but SimpleBake makes it incredibly simple to bake textures compared to the normal, convoluted method in Blender.

Quick Material Optimization

https://www.youtube.com/watch?v=VnmYM3vkYBk

They also apparently did one with UV Tile Discard (UDIMs) in Poiyomi! Yay!

UV Tile Discard (UDIMs)

https://www.youtube.com/watch?v=CfpjcO_ISDs

1 Like

Ok great!
Would be also great if the limits would not apply for local builds, as sometimes when testing a lot of clothing at once its easy to make something huge, but its not what I actually want to use.

1 Like

I see now, thanks for the clarification. This is actually more useful than I realized.

One thing to consider: Are you accounting for all avatars on the platform, or avatars uploaded within the past couple years?

To my knowledge, a significant amount of VRChat avatars are old SDK2 avatars that were uploaded years ago and not really used anymore.

If you trim it down to avatars uploaded within the last year, how does that number change?

Since this is being added, it makes sense to also add an option to view your fallback and impostor alongside fallback shaders.

4 Likes