Download

Multiple small levels vs one big level, performance difference?

Hi, I’m a beginner artist/level designer. I have a fundamental level design problem that needs clarification.

Starting with an example, you have room A and room B in one level. When your camera is placed in room A, room B blocked by the door will be occluded by the CPU and not rendered. So instead of rendering the entire level, only room A will be rendered. My question is that what’s the point of having inter-loading levels (putting room A and room B in separate levels) or even level streaming, if having one big seamless level isn’t going to affect your GPU rendering time as only one room will be rendered at a time?

My own answer to this is: having one big level may cost the CPU and RAM. Because CPU takes more processing time for occlusion. And the big level will load longer into the RAM (a long loading screen) and takes more RAM space. Am I correct?

My reasoning comes from my understanding of the way art assets are loaded into an UE4 level (which maybe horribly wrong):

  1. When loading a level, every asset of the level is loaded into the RAM from the hard drive.
  2. CPU decides what part of the level will be occluded, and then issues draw calls to the GPU for rendering.
  3. All information being rendered is instanced in the VRAM of the GPU from the RAM.

While writing the topic, I felt an urge to put a BIG question mark at the end of every sentence…so please correct me as that’s why I’m here. Thanks :slight_smile:

I just paraphrased a bit for better readability.

Loading times in larger levels is reduced, level streaming lets you unload unused parts of the level entirely to save resources, and you can more easily have 2+ artists working on the same scene at once without conflict.

Thank you for the reply! So upon level or streamed level loading, all assets are first stored in the RAM. Upon CPU draw command, they are then sent into the VRAM. So saving resources like you said, is saving resources in the RAM?

Thank you for the reply! So upon level or streamed level loading, all assets are first stored in the RAM. Upon CPU draw command, they are then sent into the VRAM. So saving resources like you said, is saving resources in the RAM?