Hey, my name is Feike Postmes, I am a dutch guy who recently graduated at Breda University (formerly known as NHTV). My graduation project was a work placement done at Square Enix’s Advanced Technology Division in Japan.
I got into this area almost immediately I started studying as it was one of the specializations offered to me by my education. While most of my fellow students dived into Maya, I went to jump into Houdini. This work placement was the first “Large Project” I did, as far as you can call a project of 1 semester large.
This article will zoom into the project I did and go over some of the decisions I had to make.
About the Project
The premise of this project was to connect the design and art part of environment creation. In many cases, the ”Ideal workflow” would be:
Designers create a block out level > artist beautify the level > level = done.
This is, of course, very oversimplified and usually impossible to achieve. The actual process can be much more chaotic with a lot of back and forth between the level designers and the environment artist. A lot of questions arise like when to give art priority over design which needs to be solved case by case.
Going modular is one way to ensure the lowest amount of work is lost, the designers can work with placeholders, and the artist can work parallel to create the art assets. There are still some downsides to this, the designers still lose some flexibility while the artist is still following a destructive workflow as some pieces might need to be remade.
Going procedural is the answer I found here. Not only is it a massive speedup when having to create large levels but it also helps a lot giving flexibility to the designers while the artist can work non-destructively.
The system uses 3 different inputs:
It starts with the art assets provided by the artist. These art assets need to follow a few rules to make sure they fit in the system. The most frequent rule is that the y/x plane is where the object intersects with the wall.
Next are the basic shapes. These can be standard cubes from unreal or Prisma’s (random polygon extruded up). There are 2 types of shapes, positive and negative shapes. First, all the positive shapes are placed and after that, the negative shapes cut out holes.
Finally, there are the basic settings. Here you can control how many windows/doors there need to be placed and how the materials are handled.
The shapes can get pretty complex, and as long as your art assets have the right sizes, they will fill up your building. In the stress test, I used over 50 Shapes and made it 10 times larger than I ever intended the tool to be used for. It went surprisingly well. The tool took around 15 seconds to bake the massive structure.
What’s Happening in Houdini
Here is where the story gets a bit more complex. Houdini gets the basic shapes and throws them into a big Boolean. This large mesh gets then subdivided in facades. The facades get assigned their type. Think about windows, doors and plain walls. Then these assets get placed. The tool tries to place the right amount per façade and scales them a little bit to make sure they fit. The arches and trims get placed similarly.
Advantages for Gamedev
The first obvious advantage is of course time. If you need to create a lot of buildings you will save a lot of time placing assets. It also helps to do iterations. This way the user can try out a lot of different configurations where also the impact of the visuals on the gameplay can be tested. The designers can keep on changing the level while the artist keeps updating the inputs of the tool. UVs are also dealt with so again a lot of time is saved doing repetitive tasks.
There are a few directions I really like to go with the tool. Some features are missing due to time restrictions. I didn’t have time to (fully) implement these:
Roofs, the most interesting but also a difficult feature. Would really like to tackle this problem.
The ceiling is missing, when you walk beneath a balcony, you won’t see a ceiling. The ceilings were very easily created manually by an artist and not very visible, so I scrapped this feature to save me some time.
Terrain adaptation. Currently, the tool only works on flat or slightly uneven terrain. It would be cool to have this further developed and make it adapt to very large height differences.
Art assets: Sietske Wielsma
Supervisor from my work placement: Adelle Bueno
Supervisor from my University: Zoran Arizanovic