I’m currently trying out this strategy.
- Have all levels be full levels (no sub levels. That means no level streaming).
- Each level can now have its own lighting setup.
- I converted a main actor that had a lot of game logic into a UObject and made it a primary asset.
- This primary asset is loaded and maintained by the game instance.
- I have preview platforms and cameras for the UI. I’m going to try to put these into level instances and manually load them in. I’m scared that the cameras will cause problems, but we’ll see.
- Manually update all references to the assets in each level every time a level is loaded (like the spawner actor, the preview assets, the lighting, etc.)
The irony of all this is how many nodes and methods need a UWorld pointer, yet you can’t have more than one world. Even with streaming levels, they still use the persistent UWorld.
I really wish Unreal Engine had better support for levels. It’s 2024. It shouldn’t be this difficult for something that all classic games need and use.