Sponsored By

Procedural terrain generation in Unreal Engine 4 with Houdini

I’m developing a procedural terrain generation tool in Houdini that can be used in Unreal Engine 4. This tool should make it easier for small teams to create realistic looking terrains that suit their game and/or gameplay.

Lars Volkers, Blogger

January 24, 2017

6 Min Read
Game Developer logo in a gray background | Game Developer

Games these days are getting larger and larger and require more content than ever. This increase in content goes combined with the need for better graphics every year. But both more content and better graphics require more time. This is one of the reasons procedural generated content is becoming more popular in de game dev scene. One of the things that benefit from procedural generation is realistic looking landscapes in games. The use of large terrains has seen an increase over the last years. This is mostly due to the still growing popularity of open-world games. These games often require huge landmasses to allow the player to explore to his/hers heart’s content.

However, creating these large terrains often take many hours to create and large amounts of skill to make it look realistic. Procedural terrain generation makes this process way faster, but often requires a lot of mathematical and technical knowledge to create a suitable terrain. Tools like World Machine, Vue or World Creator take away the need for complicated mathematical formulas. But even then, the results from these tools often need quite a bit of post-processing to fit the game(play).

Large studios can afford the extra tools, time and skill to develop larges terrains tailored to their specific game. But for indie developers and small studios this is often way above their head. With the power of Houdini and the Houdini engine, I’m trying to streamline the creation of (semi)procedural terrains straight from within Unreal Engine 4.

Houdini

I’ve chosen Houdini from SideFX to create my terrain tool. It has great integration with UE4 via the Houdini Engine and creates a basic interface to interact with whatever digital asset you use. This allows me to fully focus on features for my terrain tool without worrying whether something is possible in Unreal or having to design interfaces for each and every feature.

The tools you build in Houdini are called Digital Assets and can be used both standalone or as part of a larger procedure or digital asset. Everything, with a couple of exceptions, you create in Houdini also automatically works in UE4. So by using Houdini as base of my tool I ensure that users can not only easily use it straight from within UE4 but can also use my tool as part of a larger procedure or digital asset.

The project

At this point I’ve made it possible to create good-looking base terrain from two different starting situations.

First and foremost, you can create a fully procedural terrain. The tool allows a theoretical endless amount of octaves. Each octave has settings for strength and how much it will blend with previous octaves.  Per octave, you can add any combination of 7 different noise types that can be multiplied, added or subtracted from one another. Each noise can individually be configured based on the features from the noise, how strong the noise should be, whether and how much it should be smoothed and within what value range it should produce its values.

Fully procedural generated terrain in Houdini using different kinds of noise

Img 1. Fully procedural generated terrain in Houdini using different kinds of noise

The second way takes an already sculpted as input. The same features as for the fully procedural terrain can be applied to the input-terrain. But on top of the previous features, this part of the tool offers the option to adjust noise strength based on the slope strength of the input terrain. This way you can soften or smoothen the noise the more shallow the terrain gets.

Sculpted landscape from Unreal (grey landscape) enhanced with noise using Houdini Engine (white landscape)

Img 2. Sculpted landscape from Unreal (grey landscape) enhanced with noise using Houdini Engine (white landscape)

Future plans

For now I plan to focus on some terrain filters and a basic climate system.

The terrain filters are an important part of making the terrain look realistic and will include erosion, smoothing and terraces. The filters will be influenced by the slope of the terrain and later on by the climate system. Rain will barely fall but thermal erosion will be very noticeable in a dry and hot climate.  If time allows it I will explore more filters like riverbank erosion or wind erosion in higher areas of the terrain.

The climate system will allow users to paint temperature and humidity settings on the landscape and thus create different biomes on the same terrain. This data will then be used to strengthen or weaken the effect of the terrain filters. If time allows it this data will also be used to generate different weight maps or textures based on the climate.

Finally, if everything goes better and quicker than expected I hope to add textures to the terrain and add foliage placement based on the slope of the terrain.

Current problems

Like every project, this project has encountered its share of problems. Right now the project is far behind on schedule because I didn’t had access to the Houdini Education licenses or the Houdini Engine itself until two weeks ago. This made it very hard to start developing since it was unclear to me whether everything made in Houdini could be used in Unreal Engine 4. My first prototype heavily depended on the painting functionality in Houdini, which later on didn’t seem to work in UE4 and required quite a different approach.

The main problem regarding the tool itself right now is the lack of export options in the Houdini Engine for Unreal Engine 4. UE4’s landscape tool is highly optimized for large scale terrains. Though Houdini Engine can import these landscapes it unfortunately cannot export back to the landscape tool. Due to this the mesh exported from the Houdini Engine either is too expensive performance wise or has too low of a resolution to compete with the landscape tool. I’m hoping that this will change with the new Houdini 16, but otherwise I might be able to solve this by applying tessellation to the terrain to get better looking terrain closer to the player.

Summary

I’m trying to develop a procedural terrain generation tool in Houdini that can be used in Unreal Engine 4. This tool should make it easier for small teams to create realistic looking terrains that suit their game and/or gameplay. Allowing different ways to create the base terrain makes this tool suitable for different situations. With the base terrain generation mostly done, the focus for further development is on terrain filters and a climate system to increase the realistic look of the generated terrain. For now, the stretch goals are more filters and textures and foliage placement based on the terrain and climate data.

Thank you all for reading my article. I would love to hear what you guys think of my project. If you have any comments, questions or suggestions, please mail me at: [email protected]

Read more about:

Blogs
Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like