Give Page Feedback

Loading Blueprints - Uniform Ring Type

The Uniform Ring Type is a great general purpose Type that can be used for a wide variety of Assets and games. Since it is the easiest to setup, it's usually a good idea to use this Type when you are first starting out, so that you can get your game working as fast as possible. Later, you can switch to a more advanced Type if your game or Assets dictate it.

With this type, the Blueprint uses a single Loading Pattern defined by an Inner Area and 1 or more Rings of Cells.

Uniformity

Uniformity means the Blueprint utilizes a single Loading Pattern no matter where the Player is in the game world. While the pattern is the same, however, the Cells that are loaded do change depending on where the Player is.

Think of a stamp. The stamp creates the same pattern no matter where you place it on a piece of paper, but the area that's stamped is different every time. It works the same for Uniform Blueprints.

Shifting The Pattern

With Uniform Ring Blueprints, when the Player crosses the Inner Area Boundary, the Pattern that is loaded is shifted in the direction of the crossed boundary by 1 Cell. For example, if the Player crosses from the Inner Area to a Cell in the next Column, all Active Grid Cells have their Column value incremented by 1.

A test is then performed to ensure that the Player is actually within the new Inner Area; if they are not, the entire Active Grid Grouping is rebuilt, with the Cell the Player is in becoming the Key Cell.

This strategy is intended to shift the Inner Area in a way that reduces the chance that the Player can immediately travel in the opposite direction and re-cross the boundary, which would cause another change to the loaded Active Grid Cells. Of course, this advantage is only realized if using more than 1 Inner Area Cell on each Axis.

This advantage is unique to Uniform Ring and Uniform Custom Shape Blueprints and is the primary reason for using them over their Non Uniform counterparts.

The Inner Area

Uniform Ring Blueprints are able to utilize a variable size Inner Area (a single Cell or multiple cells).

When the Inner Area is a single Cell and the Player crosses its boundary, they remain very close to the new boundary that forms when the Pattern is shifted. This means it is very easy for the Player to re-cross the boundary in the opposite direction. This can result in a lot of World rebuilds when the player is in an area right on the edge of two cells, because if the Player repeatedly crosses the boundary in a short period of time, the Loading Pattern will constantly change (we call this Pattern Churn).

To solve this issue you can use multiple Inner Area Cells on each Axis. This way, when the Player crosses the Inner Area boundary, the Inner Area (along with the rest of the Cells) are shifted and the Player ends up not near the edge of the opposite boundary.

To better visualize this, set your Inner Area to 2 Columns. Now, imagine the Player crosses from the right most Blue Cell into the Green Cell to the right of it. In this scenario, the Green Cell would become part of the new Inner Area, while the right most Cell in the previous Inner Area would become the left most Cell in the new Inner Area (the new Key Cell). The Player would then be sitting right in the middle of the Inner Area and would need to travel some distance before crossing the boundary in both the left and right direction.

Physical Surfaces And Crossing The Inner Area Boundary

When the Blueprint is being used with Assets that interact with the Physics system, especially walkable Assets like Terrain or other ground meshes, it's important to ensure that the Player can cross the boundary of the Inner Area properly.

The best way to do this is to make sure that the Inner Area is surrounded by at least one ring of Cells that use the same LOD. This ensures that those Cells do not change LOD as the Player crosses into them.

If you do not do this, it's possible that the Player will walk into a Cell while it is transitioning between LODs, which may cause the Player to fall through the world or enter geometry that it shouldn't.

This is not a concern with Assets that do not interact with the Physics system.

Adding LODs

By default Blueprints start with a single LOD. You can add more by navigating to the Cell Pattern Data tab and pressing the Add LOD Group button.

When you add an LOD, that LOD's Ring Thickness will automatically be set to 1. To increase or decrease this value, you can use the corresponding field in the Cell Pattern Data tab, or use the Pattern Editor slider controls. Note, however, if the thickness of an LOD's Rings is set to 0, no slider will appear in the Pattern Editor. You must change the thickness to some value other than 0 for the Slider to reappear.

Removing LODs

An LOD can only be removed if it is the last LOD in the Blueprint and not LOD 1. This is because removing LODs that aren't the last one would result in LODs that come after being promoted, since it's not possible to have a missing LOD.

You can however set any LOD's Ring thickness to 0, which will cause no Cells to be loaded for that LOD when using this Blueprint.

If an LOD can be removed, you will see an X button next to the LOD in the Cell Pattern Color Key (found in the Cell Pattern Data Window). Press the X button to remove the LOD.

Cell Indexes

The Cell Indexes (R2 | C4, R1 | C1 for example) do not actually correspond to World Cells from a World Grouping, since the Uniform Ring Blueprint is intended to be used universally across all Cells. However, you can think of the Indexes as representing the Cells that would be loaded if the Key Cell (bottom left cell in Inner Area) were Streamable Grid Cell Row 1, Column 1, Layer 1.

By default these indices represent Endless Grid Indices, however you can change them to show Streamable Grid Indices via the View Controls window. You can also hide the Cell Indexes, change their placement, or make them bigger/smaller using the View Controls window.

We do recommend using the Draw Endless Grid Indices option, as it better represents the Pattern and shows you the Cells that would be loaded regardless of the Streamable Grid size the Blueprint is used with.