Open bontebok opened 1 year ago
please define what "heavy" means
and also how do you define how heavy a certain flux function is?
Also you have to keep in mind that people want to be in the bodies that they're comfortable in
please define what "heavy" means
There's no clear definition, however an avatar with IK, dynamic bones, lots of blendshapes / driven or not, many meshes, more than a few materials, building tools/backpacks, lots of custom Protoflux, visual or functional add-ons, particles, high resolution textures, high poly meshes, etc etc etc.
As for a performant avatar, that would be a simplified avatar with no IK, simple visemes and no extraneous blendshapes, 1-2K resolution textures (or no textures at all), low number of materials, no extraneous Protoflux or built in dev tools, etc.
and also how do you define how heavy a certain flux function is?
It's not a science, but you can have someone equip two different avatars one after another one and track the CPU utilization for the various Resonite threads under the client and hosts, uses as well as monitor for frame drops.
Also you have to keep in mind that people want to be in the bodies that they're comfortable in
Of course, this is why it's the user's choice on which performant avatar they'd like to favorite. Examples may include heads and hands (a "flatty"), Neoroid, Neofur, etc, or an IK avatar that lack extraneous systems and has been optimized to perform better than what the user may typically spawn into for normal worlds.
Hmm... Probably the best immediate option for this problem would be for any worlds/sessions that need it to make use of existing tooling to block cloud spawned avatars/use a default/template avatar while allowing the user to switch into a different one if they choose, @bontebok.
There may be a social cost, e.g. folks complaining they aren't loaded into their avatar by default, but that is still likely the best path forward immediately.
With the assumption that this is to be used in the context of events like the Creator Jam- perhaps the template avatar users are placed in those sessions could be configurable via cloud variables?
The user could be encouraged to make an avatar they feel comfortable in by customizing their avatar parts, and have that persist across events.
This would allow users to be 'themselves' without loading their default avatars, and still give them the chance to switch into a different avatar if you allow it as the host.
I don't see an immediate/sensible path forward for this feature request at present as it opens its own set of issues- e.g. by what metrics are an avatar's performance gauged by? A user could just as well set their 'normal' avatar as their 'performant' avatar and it leads to the same issues.
Likewise- it would add complications with the current interface to manage/track which avatars are current set as favourites.
If this feature were to be considered, however, I'd suggest the terminology be "fallback avatar"- the host preference option you requested also has some overlap with the already existing 'mobile friendly' session setting- so I'd suggest that if this were implemented in some form- it could be tied to that instead.
Also you have to keep in mind that people want to be in the bodies that they're comfortable in
That's fine, up until they start ruining everyone else's experience with their terrible avatars, then it's everyone's problem.
Unfortunately the current "block avatar" functionality does nothing to counter this in the cases I've tested.
Blocking cloud spawning and issuing a warning goes so far, but some people simply don't care and switch back to their heavy avatars. Then the option only become blocking these people at the host levels but tracking down who is the performance hog in itself is almost impossible unless you can somehow isolate each person entirely, which isn't going to happen.
Is your feature request related to a problem? Please describe.
Heavy avatars can cause a significant freeze when initializing, especially on worlds that have a lot of users or are being hosted on older hardware. Additionally, heavy avatars can reduce frames by bottlenecks on both the CPU and the GPU. This request is to provide an elegant way to allow hosts to load a more performant avatar for users who are joining the world.
Describe the solution you'd like
I'd like to request a feature to allow a second avatar to be favorited that is designated as a performant avatar. Additionally, a new feature should be exposed to world hosts to provide a setting to prefer spawning the performant avatar over the regular favorited avatar.
For heavy/large worlds or ones that are hosted on older hardware etc, the world host can change a session setting to prefer to spawn the performant avatar instead of their regular avatar to reduce the avatar hit and load on the update loop and rendering when joining a world.
This would option should automatically fall back to the user's regular avatar if a no performant avatar has been favorited. Also, there would be no restriction placed against the user to prevent them from equipping their regular favorited avatar.
Describe alternatives you've considered
Not sure if there are any alternatives, unless there is a focus on reducing avatar spawning hit and overall avatar performance. Currently hosts can prevent cloud spawning of avatars, but this often leads to complaints from users that they are not being spawned into their preferred avatar.
Additional Context
No response