Dealing with huge ish worlds (20 km size)

Hi,

As part of our required development, we are required to develop a system for a huge sandbox world of 20 kilometers in size (as a maximum). As our target hardware has limited ram we need to solve the following issues so any practical advice is welcome:

  1. we need an easy way for artists to build detailed content in the world, such as towns, forests, etc. Would using LoadLevelAdditive be a solution for this with a low thread priority for loading, or are Asset Bundles better? What are the pros and cons? We would need occlusion culling and navmesh support without a doubt. Things would also contain their own lightmaps and textures, and a lot of sound files per area.

  2. we also need to figure out how unity can unload previous assets. We would like to be able to clear ram and make way for new content. Is there a good way to unload this data without the unloading taking a performance hit? As far as I know unity won’t unload very well, information is unclear here. Also, can background loading be cancelled?

  3. Any large-seamless-world management tips you can provide will be of great help.

  4. This is not multiplayer.

Thanks!

Summary

  1. need navmesh, umbra, lightprobes
  2. need to manage ram, navmesh, umbra, lightprobes performance

Currently suspect unity is not capable of doing this efficiently. Will try streaming only textures and sounds. First. Suspect larger worlds will cause navmesh to be considerably slower, lightprobes lookup to be slower and umbra to be slower.

I wouldn’t use LoadLevelAdditive as it doesn’t give you the tools to unload stuff. With Assetbundles you do have the power to unload assets loaded from assetbundles.

Occlusion culling will only help with performance (only render what you can see) but not memory wise.

Best tip is: start small to check if your loading/unloading manager works. Don’t test only in the editor profiler as its not reliable. Just create a build and connect it with the profiler. Once happy, scale it up to a larger production.

Thanks - we would still need umbra though to keep rendering a decent pace. It seems like much of unity’s engine simply has no support within asset bundles (for navmesh/probes/umbra).