Massive Worlds Workflow
This powerful workflow allows for rapid environment creation for large Unreal Engine projects.
This is a general workflow for creating large scale worlds up to 256km² using Brushify. This can be used for both Games and Film.
If you are beginning an Unreal Engine project, please carefully read through this as it may save you a lot of time/guesswork and help you to understand some of the high level concepts that go into creating real-time worlds.
Landscape resolution is not the most important factor for creating detailed worlds.
Graphical Detail should be achieved through the landscape Automaterial through efficient use of real-time texturization. Do not try to create landscape detail by throwing more polygons at the terrain, this will not work well for real-time and will make workflows much slower.
A smooth and low resolution landscape is actually more conducive to smooth gameplay, less spikes and edges to catch or hinder player capsules and vehicles as they move throughout the world. It will also help Procedural foliage and grasstypes system place assets on the landscape, a smoother landscape is highly beneficial for avoiding poorly placed procedural meshes.
Detail can also be achieved through placement of high resolution meshes such as Brushify Distance Meshes, Cliff or Canyon pieces, or Megascans Megassemblies. These can also use Nanite which will perform far better than the landscape itself.
A single landscape benefits artists and designers as it simplifies workflows. Doesn't require baking of any proxy meshes, everything can be done in real-time.
Think of the Landscape as a Canvas on which you add other details. Your paint in this case are the Meshes that you use to populate the world.
Before we begin, please note that the Brushify Landscape Automaterial allows this workflow to be possible.
Step 1: Understanding Design & Layout
The first impulse when beginners start to create game landscapes is that they jump into software like World Machine or World creator, generate some random perlin noise or something, without consideration of what they are actually designing. Scrolling through any landscape creation forum or Unreal Reddit you'll find countless examples of 'Randomly generated noise' However while this might look okay in some screenshots this is not how real game worlds are designed or developed.
Before we do anything we will Generate an overall 8k Global Heightmap that contains the basic landscape elevations for your world but without any real detail.
If you've ever played a game like Skyrim or GTA V or Red Dead Redeption this would be akin to the World map. For example here is the Global Heightmap from GTA V:
Straightway this does look quite daunting. Because as you can see, there is a lot of detail. Rockstar have detail in the form of erosion noise most probably from software like World Machine, World Creator or Gaia. But how did they get here? The answer is Step by step. Rome wasn't built in a day. We don't need to add that much detail straight away. We simply need to tell our landscape the Basic Heights of our world... the Design and Layout of our world! So instead of something detailed like that... we just need this:
Now that doesn't seem so difficult. It's literally just a bunch of blurry blobs. But it's crucial that they are well designed blurry blobs! Basically the Global Heightmap that we need is literally just Blockout or if you're in movies a Previsualization. It's the heightmap before we add all the cool details! This is where you design your overall layout for your world. Using the GTA V example above you can still see the big flat area in the south where the city of Los Santos is. And if we were to import this heightmap, that area would also be perfectly flat, ready for us to start placing City assets and adding those details.
It doesn't matter how you create the global heightmap. If you want to use World Machine or World Creator to generate your initial heights you can, but the Unreal Engine tools are in some ways better for sculpting large global heights.
You can simply skip importing of a heightmap step entirely and create the global heightmap using the in-engine sculpting tools!
In some ways this is actually a better workflow! because it allows you to block out your world in real-time.
Step 2: Creating a landscape in Unreal Engine and (optional) importing a global elevation heightmap
If you are generating a For Unreal Engine the heightmap must be 8161 x 8161 for a 256km² landscape, this will give us the maximum resolution Unreal Engine is capable of handling on a single landscape actor.
Importing the global heightmap is simple, for this example we'll use the Brushify Starter Level.
Open the level and delete the landscape actor. We're going to start fresh! Now go to Activate Landscape Editing mode on the Top Bar.
You should be presented with a new panel on the left, this is where you can enter your landscape settings. Specify your Heightmap File if you need one. If possible it should be 8161x8161 and use the .r16 RAW format.
Specify the MI_Landscape 8161 material instance from Go to the Brushify/Materials/Landscape/Presets folder
By default the 8161x8161 landscape will give us a size of 64km² squared. However if you want to go even larger you can increase the scale slightly. Remember the scale is Exponential. So a small increase will greatly increase playable landscape size. For example setting scale at 125 will result in a 100km² landscape, which larger than GTA V and Red Dead Redemption 2 and won't sacrifice much landscape resolution.
Next assign the Brushify Landscape Automaterial to the Material Slot Go to the Brushify/Materials/Landscape/Presets folder
Here you can find a ready made 8161x8161 preset. This will make sure your landscape tiling settings are already setup for the landscape resolution out of the box.
Now everything is shiny and black, so we need to assign a Layer info and fill the landscape with a paint layer.
Now we have textures.
Don't worry if your scale is too much, go into the landscape actor properties in the details panel, and lower the scale.
Now we have our global heightmap imported and our landscape is all setup.
If you didn't import a global heightmap, that's fine too. You'll simply have a blank flat level.
To demonstrate how you can work without importing a heightmap, i've flattened this area here:
Lets add some detail to this part. I just select the sculpt brush and make a few basic blobs. For now lets imagine this is a mountain range. It's easy to add and remove at this stage and really take our time to concept out the layout of the world in Real-time. Plan where your locations will be and the overall design of your game. Remember it's possible to easily change these later so don't worry about finalizing anything.
Suppose we have this blobby mess now, how do we make that look like a real mountain? The answer is Alpha Brushes
Step 2: Use the Alpha Sculpting Brushes to ADD detail to the areas that most require it.
If you haven't already, go to the Alpha Brushes tutorial and follow that one to learn how to use alpha brushes in general. I'm going to grab the Moorlands alpha brush (the same one I was using in the Alpha Brushes tutorial) and I'm going to place it over the low detail mountain. Making sure that the radius is almost the same and that the Clay Brush is ticked. I also adjust the rotation to decide where the erosion pattern will go!
With this technique you can quickly add detail to your basic sculpts.
You can also skip creating the Blobs and simply go straight to stamping huge Alpha Brushes. This is a very efficient way to layout massive worlds. With this workflow you are able to work entirely in real-time and make changes within Unreal Engine, without needing to export the landscape back into World Machine to add erosion details. This workflow when combined with high-end 3d assets it gives exceptional results on a huge scale.