Open MR-Alex42 opened 6 years ago
Yeah, I've been thinking about this one for a while, just not sure what is the best way to tackle it. Should it be part of the WorldOrb information or the world itself? Being part of the world itself means it needs to be loaded first, so the information can be fetched. If it was on WorldOrb, it wouldn't be there for dynamically constructed world orbs (like int he hub).
Second question is what should it wait for exactly. From Neos' perspective, everything loads dynamically, so there's no "official" list of assets to load. The current Loading indicator just waits a second and counts how many loads were requested from that world and then waits for those to be fulfilled (although this might have issues if new loads are constantly requested dynamically).
With the option of in-world check, it could be actually nice and flexible, if there something that implements some kind of IWorldReadyIndicator interface, then people could define their own logic and rules (or use one of the canned ones).
Anyway, thanks for suggestion! Just need to think about this one a bit more.
Since the initial creation of this issue, mechanisms have been introduced (e.g. the teleporter in the MTC) that inform the client when the world is ready/if it should be auto-focused. It could be nice to implement this mechanic as a toggleable setting for users that prefer to wait for a majority of a world's assets to load prior to focusing the world after joining an open session.
This was recently brought up again by Electronus.
As shifty alluded to, this is a feature I would love to see implemented. its toughly unpleasant to be stuck in a "loading' state unable to use you menus or move while the world takes it time loading. While i was told after the fact about the emergency disconnect feature at the time the only thing I knew to do was force close NEOS as I couldn't stop the world from loading from within NEOS.
I had accidentally ran my hand though a session joiner and had a couple worlds begin to load.
It is planned as an UI option, but it's not a priority, the main goal is to continue improving the loading smoothness through various optimizations and balancing mechanisms.
For example if this were implemented now, you would still be stuck and unable to use your menus while the world is loading, the only difference would be that you'd be in the original world, rather than the new one.
i have a friend that said they almost had a seizure from a world loading because of a floor having Z-fighting when meshes were loaded but not textures
Hey I was told to come by here and drop further support for an option like this, its extremely jarring and eye straining, furthered by the fact that some headsets will return to its own environment if the loading in neos causes even a minor hang.
If I could make a suggestion, something like a "blindfold" feature (similar to tabletop simulator where it just covers your entire vision but allows action/loading in the background) to keep the world and all of its loading assets out of view until everything is fully loaded/caught up could do the trick, at least for initial world load in. I'm new here and have little idea of what all is going on under the hood but figured i'd throw out an idea that seems easier than redoing a whole loading process
There will still be stutters, even in another world, due to asset loading and garbage collection occurring on the main thread
I suspect that once improved memory management for asset loading is implemented, this feature would become more useful once implemented.
Oh the stutters aren't so much the problem i'm referring to as the visual clutter/strobing unloaded textures, having a way to temporarily obstruct seeing them would be a godsend, especially for headsets that pause things if you remove them from your face, a temporary blindfold or something similar would maintain immersion and prevent photosensitive users from suffering.
There shouldn't be much strobing there, unloaded shaders and textures should use a dark checkerboard visual. Could you give me some examples of what kind of strobing you're seeing? That might be something we could potentially address.
Not sure how i'd be able to provide a physical example but usually it would be overlapping textures flickering in and out or anything moving. They are in fact a dark checkerboard for a texture yes, but they often overlap or blink in/out of existence at a rapid rate during loading
I think what you are referring to is z-fighting
There shouldn't be much strobing there, unloaded shaders and textures should use a dark checkerboard visual. Could you give me some examples of what kind of strobing you're seeing? That might be something we could potentially address.
Yeah, I believe it's the z-fighting they are referring to. The dark checkerboard can flicker when a few materials/texture maps are all loading in the same position, @Frooxius.
I see, thanks for the info. I'll see what we can do to tweak the loading visuals to avoid the Z-fighting.
Blindfold doesn't necessarily help, because of Neos' dynamic nature. When it comes for the headsets returning to their own environment, you'd have to adjust in the settings though, the only thing to prevent that is reducing stutters, which falls under various optimizations.
The shader has been reworked in 2021.4.9.1114 and visuals tweaked, which should fix the strobing now!
The default behavior of Neos loading a new world is displaying it bit for bit while Neos is loading it. However this behavior might not always the best solution as it could break the user immersion. It also displays how the world is constructed. Content developers would probably like to show a finished and polished product so it would be great to add an optional mode that lets the user wait until a world is fully loaded and initialized after the double tap on a world orb. This could be combined with a loading progress indicator displayed on top of the world orb that is loaded.