Today I would like to tell you about the procedural generation in DEADHUNTERS. As a 2 man team we realized quite early that creating levels one by one would prove to be an unimaginably time consuming task, so we had to look for a solution. We didn’t want to completely give up the creative aspect of creating each level to an algorithm so we thought of a system that combines both hand-crafted details and large amounts of machine generated data.
In this post I would like to show how we tailor our assets for procedural generation. We create groups of similar meshes that can be swapped with each-other. Such as tombs, coffins, graves etc… You can see some examples of them below. The key is to design these objects in a way that they have very similar dimensions but also look different enough to justify calling them a variation.
On this level, the algorithmic aspect comes into the picture when it picks which member of the group should appear on the map. The creative part comes from designing and also placing these groups. You may think that this is nice but it isn’t really procedural generation and you would be right. The real deal starts when these groups are combined together. For example, I can place down a tomb group and onto the group I can put some decorations, well these could be chosen from another group; it can be skulls, bones, mushrooms, cups, vases or candles. I hope you can imagine how combining various groups of models variations can lead to an insane amount of outcomes.
We will create another post going into much more detail, showing how these groups can be swapped successfully and how an actual map can be built from them. However, that is a long way from happening as we still need to work on the generator itself and the assets as well. In the meantime, it’s up to your imagination to see the possibilities of such a system :)
Finally, if you would like to see how I created the Great Axes for the game be sure to check out this video:
If you are interested you can follow the game on STEAM and add it to your wishlist.