Give Page Feedback | API

Streamable Grids - Axes

As you should be well aware, there are three axes in 3D Game Engines; the X, Y, and Z axes. Most if not all games will take place on at least two of these axes (2D Games), with a majority also utilizing the third axis. When we speak of 2D games, it's generally understood that movement and data calculation only take place on two axes, and that most assets will only have dimensionality on those two axes.

When speaking of the Streamable Grid's Axes Types, this understanding does not always hold true.

Axes In The Streamable Assets Manager

Axes in SAM define the coordinate system used by the Streamable Grid in order to place Streamable Cells within the Game World. More specifically, the Axes define which coordinate space to place Rows and Layers of Cells, as the Columns of Cells are always placed on the X Axis. Generally speaking, the Axes should be chosen based on how you want the Grid's Cell's place on the World, as well as how the World should be updated in response to the Player's Movement. Hopefully this will become more clear as we look at the Axes Types in detail.

--Upgrade Note--
Previously, Axes were called World Type, however the selectable options remain the same.

Two Dimensional vs Three Dimensional

With Two Dimensional Axes, the Streamable Grid is limited to a single Layer of Cells, meaning every Cell has a Layer value of 1. Cells on the Grid can only differ by Row and Column value.

Three Dimensional Axes allows the Grid to have multiple Layers, and therefore Cells can have different Layer values.

The most noticeable effect of 2D vs 3D is in the requirements for your Asset Chunk Names. When using a 2D Axes Type, Asset Chunks do not need to have a Layer value present in their names, because all Asset Chunk's will always be on Layer 1.

Additionally and more importantly, the Axes Type impacts how the Active Grid drives dynamic streaming (loading and unloading of Cells) for World Groupings using the Grid. If you want dynamic streaming to only react to the player's position on two axes, use a 2D Axes Type. If movement on the third axis should also trigger dynamic streaming, use the 3D Type.

Note that when using 2D Axes, Cells can still have a height on the 3rd axis, although this height will only be used when building each Cell's Bounding Box (and every Cell on the Grid will have the same height). The position of the player on that 3rd axis is not used to drive dynamic streaming!

Two Dimensional Using XZ Axes

With this Axes Type, The Column Position of any Cell will be on the X axis and the Row Position of any Cell will be on the Z axis. The Layer position of every Cell will be equal to the Y Position of the World's Origin. This Axes Type is suitable for a majority of Asset Chunk Types where the assets are situated fairly close to a fixed Y Position. It is very common to use this Axes type with Unity Terrain or ground meshes, however it is not required.

When using an Active Grid component, Cells from this Streamable Grid will be loaded and unloaded based upon the Player's X and Z position. The Y position of the Player will not have an effect.

The Layer Position of any Cell will always be on the Y axis and will match the Origin Cell Y Position of the World.

Two Dimensional Using XY Axes

With this Axes Type, The Column Position of any Cell will be on the X axis and the Row Position of any Cell will be on the Y axis. The Layer position of every Cell will be equal to the Z Position of the World's Origin. This Axes Type is suitable for a majority of 2D side scrolling games and matches Unity's 2D orientation.

When using an Active Grid component, Cells from this Streamable Grid will be loaded and unloaded based upon the Player's X and Y position. The Z position of the Player will not have an effect.

The Layer Position of any Cell will always be on the Z Axis and will match the Origin Cell Z Position of the World.

Three Dimensional

With this Axes Type, The Column Position of any Cell will be on the X axis, the Row Position of any Cell will be on the Z axis, and the Layer Position of any Cell will be on the Y axis. This Axes Type is similar to the 2D XZ Axes Type, however unlike with the 2D Type, this Type can utilize more than one Layer. It is suitable for Asset Chunks whose positions vary across a wide range of the Y axis, such as a 3D Space Exploration game or an earth based game that makes full use of the Y Spatial Region.

When using an Active Grid component, Cells from this Streamable Grid will be loaded and unloaded based upon the Player's X, Y, and Z position.

Combining Streamable Grids

As you may or may not be aware, you can combine multiple Streamable Grids together under a single World, by utilizing multiple World Groupings. When doing so, there are a few restrictions regarding Axes Types that you should be aware of.

1) If the Base World Grouping's Streamable Grid has an Axes Type of Three Dimensional, then all Sub World Groupings must also use Streamable Grid's with an Axes Type of Three Dimensional.

2) If the Base World Grouping's Streamable Grid has an Axes Type of Two Dimensional Using XY Axes, then all Sub World Groupings must also use Streamable Grid's with an Axes Type of Two Dimensional Using XY Axes.

3) If the Base World Grouping's Streamable Grid has an Axes Type of Two Dimensional Using XZ Axes, then all Sub World Groupings can either use a Streamable Grid with an Axes Type of Two Dimensional Using XZ Axes or Three Dimensional.

Choosing Axes For Unity Terrain

Unity Terrain are not compatible with the Two Dimensional Using XY Axes Type. If for some reason you are building a 2D side scrolling game and wish to use terrain, you can use the Three Dimensional Axes Type with a single Row.

It goes without saying, but you have two options when using Unity Terrain, Two Dimensional Using XZ Axes or Three Dimensional.

Using 2D XZ enables you to use Terrain Asset Chunks without a Layer value in their name, however it limits the options available to you when building your world. This is because even if you use the 3D Axes Type on a Sub World Groupings Streamable Grid, the Terrain Cell's will need to sit on Layer 1 in reference to that 3D World Grouping. As such, the Terrain Layer will be the lowest layer of Cell's possible on your World, meaning you cannot have Cell's below them.

With a Three Dimensional Axes Type, this limit is removed, as you can place the Terrain on whatever Layer you want, having as many Cell's below the terrain layer as you want. This opens up the possibility of building floating islands, underwater ocean levels, and giant cave systems The drawback is that you will need to have the Layer value in the Terrain Asset Chunk names, and if later you decide to adjust the terrain so they are on a different Layer, you will need to change these Layer values in the names.

Another difference between the two is that when using the 2D XZ type, the player's y position will have no effect on what Cells are loaded into the World. Even if the player moves 10,000 units above/below the terrain, as long as they are within the bounds of the World, the terrain will be loaded. This may or may not be desirable.