Does game.Loaded fire when all Instances have loaded or all assets have loaded?

I have noticed that in many games many textures/meshes/sounds/animations/decals/uiImages are still not loaded even after the loading screen goes away. Since these are only aesthetic and are mostly not necessary for function of scripts, It seems like a good way to reduce load times to hide the loading screen before these load and only wait for all Instances since those are necessary.
Do Instances have a priority over visual assets like I described? When does the game.Loaded event fire? Is it when all Instances have loaded or when all the assets have loaded aswell? If that is not the case, is there a way to separately detect when all assets for the initial snapshot of the server that roblox takes to replicate have loaded and are the Texture, Sound etc… Instances present just the assets not loaded? I have not been able to find definitive answers to these questions but I have read that local-scripts only run after game.Loaded (except in ReplicatedFirst when they run before full replication) so that might be a clue. Or alternatively can preloading be used to push instances up on the priority list?

it’s instances

assets are handled by the content provider service

you can see how many items are in the queue via the RequestQueueSize method

also if having StreamingEnabled then it could signal finished loading part of the world and let you through early

with streaming, it will fire when the game is minimally ready to play in accordance with your streaming mode

this is a diagram on the docs

the stuff in green would all be ready when game:isloaded is true

also, the assets for unloaded areas is only requested when said area is requested.
if you wanted to preload all of your assets, you’d need to use the content provider service and pass whatever asset IDs you want to preload on the client.

Would the area surrounding the player load as well (even if it is Replicated when eligible)

i believe so