top of page

Level Generation Tool

A procedural level builder tool created with Houdini. The idea behind this HDA was to create a tool that level designers could utilize in order to speed up their level building process in Unreal 5.

Breakdown

Here is the network inside of Houdini. To get a better overview of my many different systems, I thought it was really important to have a structured and clean network.

The first step was the spline. Prior to deciding that I wanted to have a spline based system, I had started researching a randomized level generator using Wave Function Collapse,Blob Tilesets and Wang Tiles. I asked a couple of level designers about it, and they were not fond of the idea of randomization, instead they asked for more control.

 

Very early on I had some issues when importing the HDA to Unreal. You could no longer just import a curve node and get a spline in Unreal. I found a method that worked in the end. Instead of using Curve.2.0, you’ll have to use the older version of the Curve node and an attribute wrangle containing “i@unreal_output_curve = 1 ; i@unreal_output_curve_linear = 1 ;”  and It should start working as intended.

 Being able to add room for boss fights and points of interest was the most important feature for the level designers. That way they can prototype fast and modularly. I came across Adolfo Reverón’s website. He had a level generation tool setup with rooms, I learned a lot reading his process and breakdowns. He mainly built his tool with VEX, I was not yet confident enough in Houdini to use Vex myself. He did explain a bit of code, that makes the spline intersect correctly with the floor, and delete overlapping mesh.

The wall system took the longest to create. I wanted the level designers to be able to use modular wall assets no matter the size, and create no overlap. I've organized it so that you can easily drag and drop your assets into a slot in Unreal and it will change it out with the previous asset. All that is required is to input your wall size and the structure will adapt.

Another feature that I added was a procedural set-dressing tool. A quick way to procedurally place assets or decals in a room with randomized control.

The doorway system detects where the rooms intersect with the spline and creates doorways there. The height and width of the doorway can both be changed in case the metrics change or the door asset is altered. The texture on the doorway as well as the floor and ceiling can be swapped out for any texture of liking and the uv scale can be changed procedurally too.

The final step was to take my tool and make it into a HDA and ensure that It worked in Unreal. I had a couple of level designers stress test it, and give me feedback. When I had tweaked it according to their feedback and fixed some bugs all that was left was to replace all the placeholder assets with Megascan assets. 

Once you've built a level that you like, you can bake it into a static mesh and then run through your level to feel it out. If you don't like the layout after doing a runthrough, if you use your tool again it will still have your last built layout, that way you won't lose any progress.

I've included a short video of a runthrough of a level I created with my tool.

Conclusion

Looking back at this project, it was indeed a challenge and a half, especially for someone that's not greatly familiar with Houdini. In hindsight I should have probably started with a smaller project. That's said, thanks to this challenge I've become more confident when using Houdini and I've come across a lot of useful information that I can use in future endeavors. I also learned the relationship between Houdini and a game engine, in this case Unreal.

bottom of page