Skip to content
Brass Orrery

Version 1.0, coming to Fab. Orrery Terrain 1.0 is not on sale yet; this guide can still change before it is.

GuideOrrery Terrain 1.0Start

2. Quick start

This takes about five minutes. You make a hilly terrain in an empty level and fly over it in Play.

  1. Create a project from the Blank template (no starter content) and enable the plugin as in Install.
  2. Open a new empty level. Delete anything in it except a light, if you want one.
  3. In the Modes dropdown choose Terrain (Orrery). The mode has the palettes Manage, Sculpt, Paint and Features. You start with Manage > New; the other palettes are in Edit in the editor.
  4. Choose the New tool. Its settings appear in the Details panel.
  5. Set:
    • Source Kind to Procedural. The other kinds are Flat, Heightmap, DEM and Landscape; the dropdown lists the registered ids.
    • Size (km) to 2. Sizes are rounded up to whole tiles of 127 cells (128 posts, the height samples of the grid) a side.
    • Cell (m) to 1, which is the default.
    • Height (m) to 0, Amplitude (m) to 40, Wavelength (m) to 400. These are the defaults.
  6. Look at the message line. It shows the tile grid, the cell size, the side and area of the terrain, the baked size on disk and the memory kept resident, for example 16 x 16 tiles, 1.00 m cell, 2.03 km square, 4.13 km2; baked store about 2 MB, resident about 0.02 MB. Fix any error it shows.
  7. Press the tool’s create button (Create Terrain). The plugin creates a terrain actor and a source asset in /Game/Terrain, in one undoable step.
  8. The terrain appears in the viewport. In the editor, game code cannot edit it (it is read-only to Apply Brush and the other runtime edits); the editor mode’s tools can.
  9. Save the level and the new asset with File > Save All. The asset is left unsaved by the tool.

The terrain covers the area from the origin (0, 0) towards positive X and Y. A 2 km setting covers about 2032 m (16 tiles of 127 m).

  1. In Place Actors, add a Player Start.
  2. Set its location to X 100000, Y 100000, Z 15000 (centimetres). That is 1 km in from the corner, 150 m up.
  3. Press Play. The default pawn of the Blank template flies, so you see the hills from above.

The first seconds can look wrong. On a fresh project the editor compiles shaders and pipeline states the first time the terrain draws. Until they are ready (the editor shows “Preparing Shaders”), the ground near you shows the default checker material and the grass is grey. This is not a fault; it ends by itself, and later runs reuse the cache.

Terrain near you draws at full detail. Terrain further away is drawn from a coarser layer. See Concepts.

In the Level Blueprint, on Event BeginPlay:

  1. Call Get Terrain Subsystem (category Orrery|Terrain|Query).
  2. Call Has Terrain on it and print the result. It should print true when the terrain actor has finished creating the terrain.
  3. Call Get Ground Height Accurate with Location (100000, 100000, 0), typed on the node, and print Out Z and Out Precision. Right after BeginPlay the precision may be Approximate while tiles stream in. It becomes Exact once the full-resolution tiles near a camera or player are loaded.
Blueprint BP_TerrainCheck · Event Graph
The graph as text
  1. Event BeginPlay (event)
    • Out Output Delegate (delegate): not connected
    • Then: runs Print String 1
  2. Get Terrain Subsystem (pure function)
    • Out Return Value (OrreryTerrainSubsystem object): to Has Terrain › Target
  3. Has Terrain (pure function; Target is Orrery Terrain Subsystem)
    • In Target (OrreryTerrainSubsystem object): from Get Terrain Subsystem › Return Value
    • Out Return Value (Boolean): to • 1 › In Bool
  4. • 1 (operator)
    • In In Bool (Boolean): from Has Terrain › Return Value
    • Out Return Value (String): to Print String 1 › In String
  5. Print String 1 (function call; development only)
    • In In String (String): from • 1 › Return Value
    • In Print to Screen (Boolean): true
    • In Print to Log (Boolean): true
    • In Text Color (LinearColor): (R=0.0, G=0.66, B=1.0, A=1.0)
    • In Duration (Float): 2.0
    • In Key (Name): None
    • Then: runs Get Ground Height Accurate
  6. Get Ground Height Accurate (function call)
    • In Location (Vector): (100000.0, 100000.0, 0.0)
    • In Accuracy (EOrreryTerrainAccuracy): Best
    • In Surface (EOrreryTerrainSurface): Modified
    • Then: runs Print String 2
    • Out Out Z (Double): to • 2 › In Double
    • Out Out Precision (EOrreryTerrainPrecision): to Enum to String › Enumerator
    • Out Return Value (Boolean): not connected
  7. • 2 (operator)
    • In In Double (Double): from Get Ground Height Accurate › Out Z
    • Out Return Value (String): to Print String 2 › In String
  8. Print String 2 (function call; development only)
    • In In String (String): from • 2 › Return Value
    • In Print to Screen (Boolean): true
    • In Print to Log (Boolean): true
    • In Text Color (LinearColor): (R=0.0, G=0.66, B=1.0, A=1.0)
    • In Duration (Float): 2.0
    • In Key (Name): None
    • Then: runs Print String 3
  9. Enum to String (pure function)
    • In Enumerator (EOrreryTerrainPrecision): from Get Ground Height Accurate › Out Precision
    • Out Return Value (String): to Print String 3 › In String
  10. Print String 3 (function call; development only)
    • In In String (String): from Enum to String › Return Value
    • In Print to Screen (Boolean): true
    • In Print to Log (Boolean): true
    • In Text Color (LinearColor): (R=0.0, G=0.66, B=1.0, A=1.0)
    • In Duration (Float): 2.0
    • In Key (Name): None

BP_TerrainCheck in the samples project (/Game/DocExamples).

If the answer stays NoData, the location is outside the terrain. If you used a different size, adjust the location.

Plugin 1.0 · Unreal Engine 5.8Found a mistake or something unclear? E-mail us