Hey Au-heppa,
There’s a lot of info here. I’ll just respond as I go through.
Wireframe mode does not cull the actors from being visible.
Precomputed Visibility Volumes are an offline form of visibility/occlusion culling. These have to be baked before hand so that the cells know whether an actor is visibile or not. If you’re targeting mobile these come in really handy since it does not have a form of dynamic occlusion culling and everything is rendered all the time.
To enable Precomputed Visibility Volumes you first need to go to the World Settings and enable it there. Then when you build the lighting for the level the cells will be placed on top of surfaces. The information on my site here can help you set these up until we get some official documentation for this: Precomputed Visibility Volumes
Also, keep in mind that these do not work well with streaming levels and get more expensive with the more assets they have to store, since it is all done offline and not dynamic!
Visibilty and Occlusion Culling work in this order from cheapest to most expensive:
- Distance
- View Frustum
- Precomputed
- Dynamic Occlusion (Hardware Occlusion Queries)
Instead of focusing on letting dynamic occlusion work start using Cull Distance Volumes to cull these actors that are not within range. This should always be used instead of solely relying on dynamic occlusion to do all the work. By reducing the number of actors that have to have their visibility checked by the gpu can help you better optimize your game!
Levels not to load when the game starts: control this via Blueprints and making sure the level is set to load via BPs, you can set up trigger boxes to do so. Having it set to Always Loaded means that it’s always loaded, so that’s why it’s there when the level starts!
Have the apartment level load when the front door is unlocked the first time: You can set a trigger box here to load. and delay the entry to the room for the load if it takes moment.
Have the apartment visibility turn on and off from a trigger or the level streaming volume (but only after the apartment is unlocked the first time): This can still be setup via BPs
Have all the items in the apartment continue to have collision even when they go invisible: If you’re using level streaming this isn’t possible since the level is removed, however, if you’re using Cull Distance Volumes, the visibility of the actor is removed but the collision will stay. This is fundamentally how they work, but just disabling the expense of the visibile part of the mesh.
Have items that are removed from the apartment not go invisible outside it: not sure what you mean on this one.
I tried other settings too. If I didn’t set it to “Always Loaded” the level would reset itself if I would walk away from the level streaming volume and then back. Doors would close themselves, closets that spawn items when they are first opened would reset themselves and then respawn the items when I would revisit the apartment (ending up in double items).
When levels are streamed in and out they are essentially loaded from their original state. If you need to keep track of the position or function of the actors that changed, like doors opening or items collected, you need to have an alternative method or have something that tracks these states and then updates them when the level is re-loaded otherwise it’ll be back to it’s normal state since this is not saved via the level streaming in and out.
Overall, I think a lot of your issues would be resolved if you used Cull Distance Volumes or setup a way to track the states for the actors in the levels that you want to be streamed in and out. Again, when streaming in and out the level it’s just grabbing a reference to this level and not saving its current state. If it did that, then you would change the level everytime you played and it would always be what it was last left as when playing.
With performance and keeping an eye on optimizing you also want to make sure that you’re using profiling techniques to identify where issues are coming into play.
Below are some good resources that should help you maintain performance and some additional tricks like loading levels transitions to wait for a room to load before entering.