Creating Large-Scale Terrain with World Machine



Hello and welcome to my guide on creating large-scale terrain with World Machine (WM)! Included in the guide below are not only tutorials on how to create height and colormaps using the software but also examples of outputs as well as full WM files for said examples.

You are also free to explore the sample games where you can view what exciting kinds of terrain you’d be able to create with the workflow I’ll hopefully be able to teach to you through a guide broken up into mini-lessons. Ones that progressively get more complex to teach you what’s possible with the software.

At the moment, the guide is still a work-in-progress as well so feedback is appreciated and welcome but do note that not all the lessons may be released.

EXPAND

:pushpin: Roblox Studio
:pushpin: World Machine B4031

ADDITIONAL NOTES:

  • The lessons assume little to no experience with World Machine or the import process into Roblox Studio.
  • It is not required to buy any license for the version of World Machine you download!
  • Although for more complex terrain, a stronger PC is recommended, given we will be using the basic version, capped at 1024x1024 for outputs, this guide should not require a super beefy PC to do!

EXPAND

NOTES:

  • Note that the flora and fauna are not mine! All just taken from the toolbox and cleaned.
  • These sample outputs are free for use! Would be great for some credit though :pray:

DETAILS

Feel free to visit and download it below:


DETAILS

Feel free to visit and download it below:


  • Base Roblox terrain tools are insufficient for creating large-scale terrain in a way that maintains a high level of detail
  • There has been a lack of resources regarding height + colormap creation on the DevForum despite the tech’s presence in Studio + its potential in creating high quality, large-scale terrain
FULL RATIONALE
On Roblox, realistic, large-scale terrain made using the base terrain tools, e.g., grow, erode, add, etc., is not only really hard to make given the amount of time you would need to spend sculpting each bump on the side of a mountain to make it look natural, sculpting and eroding areas in a way that would follow natural erosion patterns, etc. etc.

This task only becoming more and more of a time dump the larger and larger a map gets.

Yet, there is a solution: heightmaps and colormaps!

The use of which assuming one uses noise or a software specifically designed for height and colormap generation allows one to create:

  • Large-scale, realistically eroded terrain
  • High-detail, well-painted terrain

All without needing to tediously sculpt a thing!

Now, as a developer who has mainly focused on creating such large-scale terrain on the platform for a while, there has been a noticeable lack of guides or tutorials on the DevForum that teach about how one would be able to create more detailed height and colormaps despite its aforementioned potential.

Though there have been posts about creating larger-scale terrain in the past:

Though creating these from scratch are definitely difficult, using software specifically designed for such processes not only speeds up one’s ability to create height and colormaps tenfold but would also allow one to explore how else they could improve their creation by freeing up more time and energy.

Although many software exist for this process,


GLOSSARY

EXPAND

Devices

  • A device is a way for the software to represent code through the use of a node.
  • Used to represent and store everything from the most basic geometry to full simulations of erosion within the program.

Erosion

  • A natural modifier that requires you to input geometry for it to work, the Erosion device simulates realistic movement of rock and dirt to increase the detail in your terrain.

Masks

TIPS

  • (Will be added onto and sorted later on)
EXPAND

Open up another window for a larger viewport!

  • SIDE TAB
  • Mainly to be used to see what you’re editing better
  • You can open other windows as well if you want to be able to see more info all at once

Click on the eye icon in the viewport screen to lock your view on a selected device

  • EYE ICON
  • Used to see updates to devices even if there are changes to it earlier in a device chain
  • Very useful in long chains and when you want to see what changes you make with tweaks to earlier devices

LESSON 1: A noisy landscape

EXPAND

STEP 1: Insert an Advanced Perlin noise generator
Untitled design (3)

  • Found in the generator tab, the Advanced Perlin noise gen should provide you with a good base for any landscape.
  • Other generators can also provide a base for your terrain but noise generator devices are the most common to provide a good natural looking start to any project.
  • Feel free to play with the settings of the generator to get the terrain you want by double clicking the device!

STEP 2: Insert and connect an Erosion device to the noise generator
Untitled design (4)

  • This then adds detail to your initial terrain, giving it even more natural features by simulating the movement of dirt and rock over time.
  • This is very important as this is the main step in creating any terrain that gives it it’s most realistic features.
  • Again, don’t be afraid to play around with the settings of the device to see how you can do things like increase or decrease the intensity of the erosion!

STEP 3: Insert and connect a heightfield output device to the Erosion device
Untitled design (5)

  • This is then how one would export the terrain out of World Machine!
  • Once connected, double-click the device and click on “Write to disk” to export the heightmap.
  • Don’t forget to change the name so you can find it easily later on!


STEP 4: In Roblox Studio, open the terrain editor and click on ‘Import’
Untitled design (6)

  • From here, we can let Studio take the wheel in translating our heightmap data into actual voxel terrain!

Untitled design (7)

  • Feel free to play with the horizontal and vertical sizes as well though it’s important to note that if you stray from the aspect ratio of the heightmap (In our case 1:1), the terrain would start stretching. Something especially noticeable later on once we create an actual colormap
  • For the vertical size, I’d recommend just playing around until you get the verticality you want from the terrain you’ve made

Once done, you should get something like this, depending on whichever material you chose for the terrain: (I chose Asphalt)

  • Congrats on making your first realistic, if not monochromatic landscape using World Machine! Be sure to stick around for updates for the next lessons where we’ll cover creating colormaps and more complex terrain!
  • Aside from that, for now, I’d recommend either dissecting the sample outputs, looking at the software’s documentation, or looking for YouTube tutorials for more details! One I’d recommend is by a YouTuber who specializes in creating World Machine projects named HYLK!

LESSON 2: A colored landscape

EXPAND

Assuming this setup, following the first lesson:

STEP 1: Grab a Color device
Untitled design (9)


STEP 2: Duplicate the Color device three times


STEP 3: Change the HTML Color values in the devices to the ones listed below
OPT (3)

→ Grass is #6a7f3f
→ Ground is #665c3b
→ Mud is #3a2e24
→ Rock is #666c6f


STEP 4: Move the Color devices in between the Heightfield Output and Erosion devices

  • Mainly done to make laying out other devices easier in the following steps.

STEP 5: Grab a Select Slope device
OPT


STEP 6: Change the falloff value in the Select Slope device to zero
OPT (1)

  • We must always make sure to make it so the masks we use when creating colormaps only have COMPLETELY WHITE OR COMPLETELY BLACK PIXELS ONLY.
  • This is because Roblox’s colormap importer doesn’t allow for any other values except for the exact ones listed in the color key! Otherwise, you might get this error:
    image

STEP 7: Duplicate the Select Slope device three times


STEP 8: Connect the Erosion device to the Select Slope devices’ input ports
OPT (6)


STEP 9: Edit the Slope Range values for the Select Slope devices

RANGES


STEP 10: Connect each Select Slope device to their respective Color device’s Mask (Heightfield) port


STEP 11: Grab a Combiner device
OPT (7)

  • From here, we will be combining all the color data to create a proper texture/colormap for our terrain

STEP 12: Edit the Method and Strength values of the Combiner device
OPT (8)

  • Method should be Smooth Max
  • Strength should be 1.0

STEP 13: Duplicate the edited Combiner device twice


STEP 14: Connect the Color devices to the Combiner devices

  • As you do this, you should see your colormap slowly come together in your viewports

STEP 15: Grab a Bitmap Output device


STEP 16: Connect the last Smooth Max device to the Bitmap Output device


STEP 17: Output your colormap

  • Don’t forget to name your output so it’s easier to find!
  • Make sure you change the file format to PNG 16bits/channel to make sure the output is higher quality:
    image

OPTIONAL STEP: Viewing your output in World Machine

EXPAND

STEP 1: Grab an Overlay View device

STEP 2: Connect your Erosion and Smooth Max nodes to the appropriate ports

STEP 3: View your terrain with the colormap overlayed on it

STEP 17: Import it into Studio alongside your Heightmap


Once imported, it should look like your landscape but with actual terrain variety!

  • Congrats on coloring that realistic landscape! Again, hope this helps you with whatever you want to create! :pray:

OTHER DETAILS:


Thanks for taking your time to follow the guide! For any questions feel free to comment below and feel free to suggest lesson ideas, different strategies to approaching the terrain generation, etc.

Aside from that, feel free to post what you’ve made based on the tutorial below as well!

I truly hope this guide has and will help you create larger scale terrain for your game in a way that’s quick and easy but if not, I hope at least you’ve learned something new! Thank you again for your time :saluting_face:



76 Likes

This looks great! I will most likely be using this. Thanks! Is there a way to import the hightmap as a colormap as well so that you don’t have to paint the terrain manually by any chance?

4 Likes

Sorry for the late reply but I just added another part that would help you with automatically coloring that terrain from the first one! Should help you with the issue of having to do the painting all manually :pray:

3 Likes

This is absolutely fantastic! I’ve been experimenting a bit but I’m still struggling to understand how to exactly add shorelines/water, is there plans for future lessons regarding more advanced geographical features?

2 Likes

Am planning on creating one for a river or lake in the future for sure! Just taking a bit because of other responsibilities. Thanks for the suggestion though! For now, I’d recommend looking into the River device specifically.

Here’s an example as well for reference:




:link: TMD FILE:
RiverExample.zip (23.0 KB)

5 Likes

Are there more sample games besides the ones listed under your Roblox profile?

2 Likes

Thank you for the reply, I must apologize for my late response, it was rather informative!

3 Likes

Why didn’t you use the levels? or make a macro for the stack of bias/gain nodes?

1 Like

Is it possible to use this for Cave generation? I’m very interested in the topic and would appreciate it if you can create a resource on the topic!

No. World Machine is essentially a better photoshop for terrain. It is 2D that builds 3D terrain.

You would need something like QGIS or ArcGis.

I spent the last 3 hours trying to colormap with WM. Your blueprint took maybe 10 minutes. You’re a godsend.

Now if we only had a way to import water in too.

Edit: In attempting to colormap riverbeds after the rest of the terrain to avoid grassy riverbeds, I inadvertently taught myself how to import water. Feeding the Tributary bitmap from Create Water to the Select Slopes will isolate riverbeds, then assign color and output to combiner like normal. This will probably only generate water at the bottom of the bed, but it’s something at least.

1 Like

Actually completely right about this, have been doing this in my most recent projects though due to the way I kept stacking bias/gain nodes for the projects and general tutorial shown here, I have been too busy to overhaul everything in this tutorial again.