LerpworksAcademy
On this page

World and levels › Large worlds

Open world: how it loads in pieces

Know first: LOD, instancing and Nanite: drawing a million blades of grass, Numbers in a computer: integers, floats and precision

How does a huge world fit into a game that has memory for only a small piece of it? The game cuts the world into square pieces and keeps in memory only the ones around the player. Farther out, the player sees simplified copies. This lesson shows how to choose the size of the pieces and the loading range, and why a fast player is harder to keep up with than a slow one. It also looks at how a big world is handled in the editor, and why everything far from the center of the world starts to shake.

Why this matters

A big world does not fit into memory whole. Every tree, rock and house needs models, textures and physics, and an open world has a great many of them. So you design a world from the start to load in pieces (see the lesson “How a world is built: from large to small”).

Picture a toy city that is bigger than the table. Only the blocks around the player’s figure fit on the table. As the figure moves, you set new blocks down ahead of it and clear the ones behind. Streaming a world works the same way: the world exists around the player and nowhere farther out.

For this to work unnoticed, you have to decide four things. What pieces to cut the world into. How far from the player to keep things loaded. What to show in the distance, where nothing is loaded. And how to keep up when the player races off in a car.

Further in the article

  1. The cell grid and loading range
  2. Streaming sources
  3. Speed and time budget
  4. What always loads, grids and HLOD
  5. How to choose the numbers
  6. The world in the editor and in a team
  7. Large coordinates
  8. How other engines do it
  9. How to check
  10. Where it breaks
  11. Connections: the same idea in other fields
  12. Sources and further reading
  13. Key points
  14. Test yourself