Loading
Rob Elam

Game Developer

Unity Expert

Tools Developer

Team Leader

Performance Analyst

Rob Elam

Game Developer

Unity Expert

Tools Developer

Team Leader

Performance Analyst

Sentinels Terrain Generation

So with Sentinels, I knew I had some challenges to deal with. I was the only one making levels initially, and even when I had help later, I wanted a system wherein I wasn’t going to sacrifice much past work to make changes to levels. Most of the time game developers just create levels with rough temporary art so they can test the level, then they finish it up later with final artwork. That’s a fine process, especially with larger teams, but the problem is when you implement your final art, you hugely disincentivize changes to the level because you will invalidate at least some of that fine tuning when you make a change. This means that as you make level look good, it will become more ‘static’, so undesirable designs are more likely to remain.

In addition, I wanted to have more of the terrain be procedural, as frankly my abilities as a coder greatly exceed my ability and patience to lay down details :). So working within Unity’s existing terrain system, I built a distribution system on top of their system. Here I supply as little data as possible, roughly how high/malleable the terrain is, as well as roughly where grass/trees/rocks will be.

Then I feed the maps to a node graph in World Machine 2, a procedural texture generator for use in generating terrain maps.

This produces output that I then reload in unity, where it looks something like this…

Here’s the final output, with me changing the Ecosystem applied to it, allowing me to completely change the look of the level with a click. This not only allowed me to not bake the look of a level into said level, but I can tweak the shared ecosystem profile to improve it’s look, making all levels using the ecosystem look better.

The advantage of this system is clearly that it requires minimal source data, thus making it flexible and easy to create new content. Also, the levels look high quality, while still being mutable, therefore they can be demoed or put into testing and still changed based on feedback.

The downside is that it does take about 1.5 minutes to perform an iteration on the terrain, and is not fully automated. Also, you do have occasions where the process does not produce the result expected, perhaps kicking off another iteration or to to fix. However, I knew when I created it that I would sacrifice fine tuning ability, but also that I was not willing to do the fine tuning in general anyway, so I was cool with the trade.

All in all, I’d have to say this system has not yet paid itself off. It’s really borderline, it’s a cool system, but also took alot of work, and there are new unity tools that are pretty cool and might suffice if I were developing it now.