Level Streamer

Worldcomposition

Terrain Tile and all of its large and small tiles in the Levels Tab

If your map is very big we recommend that you use the world composition workflow of unreal to stream in only necessary assets closer to the player. https://docs.unrealengine.com/4.27/en-US/BuildingWorlds/LevelStreaming/WorldBrowser/

In Bus Simulator 21 we settled on the following streaming parameters and setup

3 Streaming Tile types which have different contents, sizes and streaming distances:

  1. Terrain Tiles: Contain terrain tiles and very big assets that are visible from far away (Big Ships, Skyscrapers, …); Terrain tiles have a size of 2km x 2km; tiles need to be indexed in the following format for the levelstreamer to stream them correctly: TerrainTileName_x0_y0 to TerrainTileName_xXX_yXX

  2. Large Tiles: Contains Large Assets like buildings which should be visible from medium distances, but not from across the map; each Terrain tile is split into 4x4 Large Tiles

  3. Small Tiles: Contains all small clutter objects, that only need to be visible when the player is close; each Terrain tile is split into 4x4 Small tiles

 

 

 

 

 

Tools

The Mod editor provides a couple tools to make the moving of assets to the small and large subtiles as well as the creation of those tiles easier.

 

 

 

Generate SubTiles

This takes the currently active level and adds the empty x0_y0 - x3y3 large and small to the project. You might need to restart the engine for the new levels to correctly show up in the levels tab. This needs to be done only once when the levels are first setup.

Move Actors To Subtiles

Takes the currently active terrain tile and distributes the assets in it to the large and small subtiles depending on their size and position in the scene.

Make sure to load the terrain tile and all its subtiles before you execute this. Be careful to not touch your pc while this process is ongoing. Unreal uses the system clipboard to move assets between levels, changing the clipboard contents while this is ongoing will lead to data loss.

Distribute Actors To Subtiles

This takes the current sub tile and distributes it to the active terrain tiles and all their subtiles. This is usefull if you for instance cluttered across terrain tile borders and want to fix that.

Make sure to load the terrain tiles and all its subtiles before you execute this. Be careful to not touch your pc while this process is ongoing. Unreal uses the system clipboard to move assets between levels, changing the clipboard contents while this is ongoing will lead to data loss.

Validate Actor Level Assignements

Non destructive action, the the tool will give your a list of all assets that would be moved when the move or distribute actions are executed.

Level Streamer Setup

Our level streamer allows you setup streaming distances and set up streaming levels that should be loaded all the time.

  1. Make sure all your streaming levels are Assigned to Layer → None. If they are set to anything else they will be constantly streamed in and out as both our level streamer and unreals levelstreamer will fight against each other. This will lead to performance issues.

  2. Go to the “ModMapMultiplayerLevelStreamer” Data asset

  3. Set the Segment Prefix to the TerrainTileName you set when creating your tiles as well as the tile size of your terrain tiles

  4. You might need to play arround with the Origins and Invert X or Invert Y settings to get the streaming to be centered around the player

  5. add all levels that should be loaded at all times to the Always loaded level list