Impose public avatar optimization guidelines
H
Hugo Zink
When the optimization guidelines for public avatars were first introduced, I was quite happy. Slowly, most of the lag-inducing avatars went away, and public instances were actually playable again without having to block all avatars.
Avatar cloning was the first thing to start taking that away. Suddenly, the most unoptimized avatars imaginable were inhabiting public instances once more, and I found myself having to obsessively check the stats on every avatar just to keep a steady framerate and not get sick.
But now, Community Labs essentially allows any avatar to be public at any time. This is extremely bad for performance, as the optimization bot is apparently going to be phased out. This means that extremely poorly optimized avatars can once again hit the public, and avatar authors will have zero incentive to optimize anymore.
Please consider putting in some hard optimization limits somewhere. This situation is becoming unmanageable. I have a top-tier CPU that is still struggling to keep up with the vast amount of dynamic bones.
This change is completely undoing all that the game has done for performance in the last 6 months, and makes the game near unplayable for a lot of people unless they hide
all
non-friends avatars. Please consider putting some optimization limits in somewhere.Log In
Legoman99573
Some avatars have gone over the limit and still runs fine. Most of the "optimization" stuff isnt going to be the same for everyone. My older PC hit 5-10fps with an avatar with 50 dynamic bones on it and can say the optimization guidelines have been pretty vague and seems to be tested on 1 machine. Most of the issue is the networking and nameplates. Fix both of them and everything is usually fine.
I have had a model run fine in unity and it run really poorly in vrchat and is also based on the world you are in and how optimized the world is in general.
To worlds that maliciously make people lag out yeah, they need to be moderated, but you should be able to report the world just fine.
HostileLogOut
the game is build around user generated content, avatars,games etc. the way they can optimize it is obviously to make a hard limit but also improving their coding in general. majority of the problems comes from the network API in vrchat and the fact that they dont use the newest Unity version is just another problem. and if you have a 100% gpu usage that is fine cause its suppose to do that. if you got 100% cpu load that means your cpu is a tad to old. or to many things is running on your pc. i can say this cause the game uses 1-2 cores at best.
and mostly alot of people wont have avatars with more then 70k polygons which is still utterly low in terms of how much it should be able to handle. Vrchat should be able to handle millions of polygons per user without reducing the framerate to 30 ish. but it can't. and this is the developers fault. for not understanding how to optimize their networking api
FruityFusion
They should just switch to u2019.4 a bleeding edge unity version, with GPU based rendering
GotoFinal
then change your friends if you don't like their unoptimized avatars. Don't force your opinion on them by limiting their choice.
Raphfilia
FruityFusion: And Multithreading so CPU's wont keep dieing while already overclocked to 5GHZ.
GotoFinal
I'm against this, this is not a way to fix performance issues...
Eric Fontes
GotoFinal: agree.
kawashirov
This is exactly way to fix performance issues: prevent unoptimized content to get published and track it.
CurtisVL
kawashirov: A lot of people don't realize the biggest performance issue in the game is user content. Hard limits should have been in in the first place, like they are in every other game that allows user content. ¯\_(ツ)_/¯
GotoFinal
kawashirov: no, this game is all about user created content, limiting users will only cause issues.
I could talk for hours about my ideas to "improve" performance, but I personally think that the best idea would be to get rid of the unity (not as a game engine, but from our - client point of view) - but this would be huge project for vrchat team. As allowing us to use unity to make avatar causes a lot of issues.
Imagine that vrchat team can now add super amazing replacment to dynamic bones, but it cost 200$ on unity store - no one will buy this. And people will keep using dynamic bones too, and they can't just remove that in 1 day.
But with own avatar editor they can just abstract that components, so you configure where your avatar have hair, skirt, other dynamic elements, and vrchat itself would use best available components at given time - and you don't need to buy any assets.
But like I said, it would be huge projects for few months of hard work - especially that they would need to support import of already existing avatars from unity, including all that advanced animators avatars with a lot of particle systems and other stuff like that.
With system like that they could really focus on improving performance of avatars without limiting users that much, it would be also much simpler to implement a lot of other optimizations, like LOD. Maybe even more advanced stuff like atlasing textures with same shaders etc (but that would be tricky for more advanced models)
Tho I think that rigging and modeling should not be part of editor itself, as recreating whole blender inside game would be too much :D But some simple common elements to allow create simple avatar from parts - why not.
This would also open possibility of creating in-game market of models or parts of it ;) And vrchat could make small cut from all sales in it ;) Even more freedom to creators - yet, much better way to optimize content.
GotoFinal
look at my answer to sergey
GotoFinal
then you are saying that we should pirate stuff that other people worked on? Then you are an issue in this game, not unoptimized avatars ;/
H
Hugo Zink
GotoFinal: why would limits not be a fix? If you have absolutely zero limits on avatar optimization, there is also no end to how unoptimized an avatar can get.Without any guidelines or limits at all, a single public avatar could take you down from 90 to 30 FPS.
You say that limiting people will cause issues. But your suggestion to restrict people to an ingame-only avatar creator is downright insane. That's FAR more limited than the system we have now! That would kill the game in an instant.
GotoFinal
Hugo Zink: wut? how my idea is limiting? it gives more power to both users and vrchat team. Whole idea of standalone editor is to be able to support everything you can do currently but with much better flow and tools. As then it is also much easier to like include live preview of your avatar, easier to add new components by team so you can use them, and yet you can still create every possible avatar. Where do you see any limitations here?
And sure, there can be some hard limits on avatars, but current rating system is pure shit, you can find poor avatar that works 10x worse than the ones with very poor rating. People can add a lot to avatar without degrading it performance, as not whole avatar needs to be enabled at once, just because avatar have 20 materials does not mean that it is slow, as this materials might be used by separate objects and only one of them is visible at the time. So I will be much more optimized than other avatar with 5 materials.
Also many properties are completely ignored, like I can make a skirt with 1k polys using cloth component - and I can use refresh rate of 300 causing your game to lag as hell, or 5 (you would be surprised how good it looks even with such slow update rate, and default is like 120 or more) making it run pretty fine, yet both will have same very poor rating even if one of them can work better than other avatar next to you with a lot of dynamic bones.
So limits should be enforced at runtime, like limit max separate materials rendered at once per avatar, and just inform in avatar editor that such limit exists, but you can upload avatar with more materials, as long as you will not display all of them at once.
Current system is pure shit and nothing more, it tells you exactly nothing about avatar performance. You are either of excellent or unknown performance. There is nothing between in current system, as it is not able to see any difference.
And again, custom editor is definitely not to add any limitations, but to remove them, allowing you to use more and better tools and make sharing of work much easier, or updating avatar to new version.
CurtisVL
GotoFinal: I suppose that makes sense really! Using a home made avatar editor that could automatically do some forms of optimization would be great, but as you said, it's a huge project!
A lot of the things that cause insane amounts of lag can be quite easily fixed, a lot of people are just stuck in the mindset of 'Optimization = Avatar looks bad', which isn't true if you put some effort into optimization!
Sure, you'll have less dynamic bone affected bones, but if you merge some bones you'll likely not notice the different unless you specifically look for it, and changing hair force settings to stop it resting on a collider is barely a noticeable change too.
Right there you've already gained a lot of performance.
I think sometimes people are just a little selfish, because they couldn't be bothered researching how to fix issues with their avatars performance, everyone else has to deal with it instead. :/
GotoFinal
CurtisVL: and editor could add Level Of Distance automatically for stuff like dynamic bones, so if someone is far away from you... then you don't need to render that bones, or simplify calculations to make them work like there is 2x less of them. As you only need that perfection for people that are standing next to you.
And last point can also be fixed by better tools, editor should give you hints and warnings, what is wrong with your avatar and how to fix it. and for some stuff even offer some automatic solutions.
H
Hugo Zink
GotoFinal: dynamic bone already has "distant disable" forced on, which means that dynamic bone disables itself when further away than 15 meters.
The SDK already tells you how to fix lack of optimization, the problem is that most people don't care and it doesn't seem to work for dynamic bone right now.
GotoFinal
Hugo Zink: no it does not, there is stupid link to tips and some idiotic warnings that means nothing as I already explained why current rating system is useless.
And yes, people are lazy and don't care about s lot of stuff - this is why companies hire people to design tools that can direct user in good direction, just pasting some links it not enough. It must guide user from start to finish. And doing that in unity will never work good enough.
And I still don't know what is limiting about custom editor.
CurtisVL
GotoFinal: That 'stupid link' had individual videos on exactly how to do those optimizations though. The tutorials are very easy to follow, just a lot of people simply can't be bothered with it. :/
GotoFinal
CurtisVL: but you need to click on it, no one will do this. so it is stupid and useless ;)
CurtisVL
GotoFinal: Exactly! xD
Hagbard Celine
CurtisVL: There are some limits but it is still too easy to turn them off with some "tweaking" in the SDK.
They need a server side hard limit for stuff like polycount and dynamic bones. So even if people find a way to upload that crap they will only see a red error avatar when they try to load it ingame.
狐小百合
I have a PC with most of the parts still from 2012 and a 2014ish CPU (2016/2017 era GPU though for dynamic bones it doesn't matter) and everything seems to run fine? It was a cheap build for sure. It's only when maps get absolutely jam packed do things start to stutter.
Raphfilia
狐小百合: Exactly what I was saying, they should optimize shitty worlds first with Mesh Colliders all over the damn place, before imposing limitations to Avatars xD
D
Donut2Ninja
I'm curious as to why you're having such difficulties running on a "top-tier" cpu when I'm running a ryzen 5 1400 and I can run 25 frames with a full world of mostly poor rated avatars. I mean my cpu is no where near top-tier and I rarely have issues where I have to start blocking peoples avatars. This game still performs great, but limiting people to be able to share avatars just because they carry a poor rank is going to drive creators and players away which is the opposite of what the devs want. Once they move to the most current Unity engine things will be better, as they got better with the last unity move.
CurtisVL
Donut2Ninja: 25 FPS is unacceptable though, the headset has a 90Hz display, 60 FPS should be considered 'low'. The low frame rates can be very motion sickness inducing for some people, especially those new to VR. :/
H
Hugo Zink
Donut2Ninja: your own comment kinda proves my point. You say you "rarely have issues", but 25 FPS is unacceptable in a VR game.
Remember, these guidelines only apply to PUBLIC avatars that you find in worlds. If you desperately want a private avatar with 2000 collision checks, you can still have one.
People seem to have no problem with the poly limit. People don't question that 2 million polygons will make you lag. So why suddenly all these arguments whenever a dynamic bone or material limit comes into play?
Naelily
If you have a "top-tier" computer you are not going to run into constant lag unless you around a lot of Very Poor models. I would be in favor of restricting Public models to Poor and better (considering it is stupidly easy to get the Poor rank and still have a well-performing model, thanks to odd requirements of Medium). Also it is worth mentioning that CPU has not very much to do with framerate, you need a proper GPU (graphics card) to handle high-demand 3D/VR applications.
H
Hugo Zink
Naelily: this game is almost entirely CPU-bound, and a lot of the more expensive calculations all run on the same thread. GPU barely matters in this game as long as you're on a GTX 980 or better, or if the world you're in makes very heavy use of the GPU via shaders.
Being around a lot of "Very Poor" models
is
the situation I'm talking about. It happens very easily when there's no optimization limits on avatars. Sometimes you run into avatars with 10k dynamic bone collision checks, which is enough to make you lag on its own.Naelily
Hugo Zink: GTX 980 is a pretty high low-bar, I run a 970 and do just fine. Lots of folks are on laptops or pre-9xx series gpu's or equivalents. To be honest I don't understand why the SDK doesn't disallow uploading Very Poor rank models in the first place, seems like a more obvious step to take.
CurtisVL
Naelily: As someone else said, the game is very limited by the CPU. Dynamic Bones run entirely on a single thread (Single CPU core), an i5 will out perform a 12 core i7 in this case, ironically.
This isn't something that can be solved easily though, as far as I know. :/
Kasuraga
CurtisVL: only if the i5 has more clock speed. IPC is still king, and the CPU with the highest IPC AND has more than 4 threads will run best. VRC scales to just above 4 cores (only because the 5th core and beyond then are able to run all the OTHER stuff your pc has to run) so more than 4 cores/threads with very good IPC performance will run best. It's why the 9700k with 8 cores/8 threads without HT runs better than the 8700k with 6 cores and 12 threads (better performance per core)
going from a 6600k at 4.7ghz to a 7700k at 4.9ghz made a BIG improvement on overall performance on VRC since I now have more overhead. the game can 100% use up 4 cores of my i7 while the other 4 are able to do everything else my pc needs it to do. before, my CPU was always pegged at 100% while playing vrchat.
CurtisVL
Kasuraga: My point was that typically as you get more cores, the single core performance goes down, some i5 CPUs out perform i7 CPUs in single threaded tasks, such as Dynamic Bone calculations. :p
You're right though, overall a CPU with more cores would be ideal. Realistically, you could force VRChat to use maybe cores 4+, so there's less OS-trash running on that one thread dynamic bones wants to use... In theory!
I have an i7 5820K, it's basically a Xeon. Single core performance is really bad, the multi core performance is 'acceptable'... xD
Jar
Avatar optimization is VRChat's number one problem, performance guidelines should be the number one priority for the VRChat team. Phasing out the optimization checks is a step in the wrong direction...
Raphfilia
Tbh, I don't think it will make any differences, I know a lot of people who optimized their shit even while this System wasn't even in Place, also if the World is already shitty optimized like The Pug or other Worlds that are Public, it won't make any difference if you have optimized models, I already tested that with Twenty people with Green Avatars with literally nothing on, no Dynbones, no Cloth Physics nothing, just Stick Figures Atlased with Noe Noe Shader on, and it still dropped the shit to 20fps. What we need is optimized Worlds first, and then we can look after if Avatars are really an Issue, also we don't have Multithreading since Ages, so if your Single Core Power is low you are fucked anyways.
Mic_Sounders
Raphfilia: That's most likely an IK, not a world issue. If the world is laggy, you'll drop to low FPS just from being there. If the more people in the world the worse it gets, despite the avatar, it's the IK causing problems, since it's still the most CPU intensive process.
Raphfilia
Mic_Sounders: Might also be that yeah, but my whole point is, there is stuff that needs optimization first before we go after the "bad guys" with very poor avatars, my Avatars are also very poor because the boundary box gets calculated wrong, am I bad now just for that, I doubt it xD
Mic_Sounders
Raphfilia: Never seen the bounding box be calculated wrong unless you mean marker avatars, in which case it's calculated right due to how markers work. Though, if your bounding box is massive on top of having a highly unoptimized avatar, you might be the bad guy because it means I'm rendering you no matter where you are lol
I'm of the idea that it's our part as a community to at least make some attempt to prevent lag, but yeah it's also their fault to some degree as well. The difference being snapping your fingers and making a reprogrammed IK isn't feasible while snapping your fingers and not having 5000 DB collisions (standard on a certain popular creator's avatars) is. It actually takes more work to add those dynamic bones than it takes to not. We have a quick fix, they don't. It's why avatar ID blocking gives both users and creators what they want.
H
Hugo Zink
Mic_Sounders: I'm pretty sure bounding box calculations have been broken from day one. The implementation is buggy and depends on your position in the world. Moving one meter can change your rank from Poor to Excellent. I don't take bounding box calculations seriously because of that.
Raphfilia
Hugo Zink: Thats exactly it, my old Unity 5 Avatars are all very poor because the Server things it has a boundary of 2 Million while there is nothing on, not even a marker.
CurtisVL
Raphfilia: Avatars are a huge issue still, consider performance in a world like 'The Box', which is one of the best performing worlds right now.
It seems dumb that we need a world with so little in it just to counter act the performance of some avatars though. :/
LunarLapNeko
Having things like dyn bones forced off in public worlds would be a good optimization solution (want to show off a avatar fully then make a private instance of the world)
Naelily
LunarLapNeko: That is a horrible idea IMHO. If dynamic bones is such a supposedly laggy script, where are the people making a better one? All I hear is silence when I bring that up. Why is it in 2019 making some bones move is such a computationally-intense operation when I am getting two copies of a 3D environment fully rendered at 90 fps. It is mind-boggling and something doesn't add up.
LunarLapNeko
Naelily: there are alternative but the vrchat devs do not implement them because they are harder to put on avatars (VRM bone groups for instance which is gpu based alternative to dynamic bones and free)
H
Hugo Zink
Naelily: there
are
alternatives to dynamic bone scripts, such as the VRM plugin that was just mentioned here. They're just not being implemented for some reason.Unity Cloth also exists, but despite being backed by a professional team, that one still has issues of its own, including performance issues with too many vertices. Physics systems just aren't that easy to optimize.
Dynamic bone doesn't have to be laggy by itself, it just isn't made to handle 190 skirt transforms. The operations that happen in dynamic bone are computationally expensive, but also quite accurate and nice-looking. It just wasn't made for high transform counts.
CurtisVL
LunarLapNeko: Dynamic Bone colliders are what cause the most lag. All dynamic bone physics for every avatar in the instance run on a single CPU core, that's mainly why they cause so much lag. Ironically something like an i5 will out perform a 12 core i7 due to this. :/
LunarLapNeko
CurtisVL: yea...majority of the avatars i up have no colliders at all..just fine tuned values (for hair/small accessoires mostly,long skirts should be correctly weightpainted in my opinion or just ignore clipping)
CurtisVL
LunarLapNeko: Cloth is actually pretty good for most skirts if done correctly, even with colliders for the legs it's A LOT higher performing than dynamic bones is. :p
GotoFinal
Hugo Zink: but adding that alternative ways means that everyone need to change their avatars, and later there will be other "better thing" and again everyone need to update their avatars, it would be nightmare, and you would need to support few systems at once for some time to not make 90% of community angry at you.
You can read about my idea in one of comments above. I think that would be much better for game and allow for much better control of avatar components by vrchat team, while not limiting content creators.
Load More
→