Dev Blog of Madness

Check the Dev Log Index for more Dev Blogs.

Terror Chasm Development Recap 1: Level Generation-

Over the course of the last few years we've been working diligently to bring you our up coming platforming game which we call Terror Chasm. We are very pleased with our work and love the progress that we've made on it. However, due to equal parts needing to focus our energy on actually making the game, and the simple acknowledgment that it's likely no one has really been paying attention until now, we haven't been keeping up with the devblogs. So to remedy this and get everyone caught up, here is the first of a multi part recap of what we've done and our progress up until this point.

One of the most important features of this game, especially once you begin playing, is the procedural level generation. The idea here is pretty simple- gamers like replayability, and since we are a small studio we don't have the resources to hand-make a whole lot of content such as massive open worlds. So the solution that we came to was to design an A.I. system that can essentially produce infinite different levels for the players to enjoy. While procedural generation has been around in games for a long time, we had to create an entirely new system for this, in order to achieve what we really wanted. What we needed was something that would be more akin to A.I. driven level design, where the A.I. is acting more like a human level designer, rather than the standard kind of procedural level generation that other games have used in the past. The kind of extreme procedural generation that we are going for is not what you typically see in most 3D games, which often use much simpler and more basic methods to procedurally place objects in a level and rarely use it for anything that could dramatically affect gameplay.

We needed something that could create levels in a more literal sense. A system that could "intelligently" place, swap out, and interchange any and all of the separate elements of the game (traps, puzzle elements, platforms, etc.) and reconfigure them into different levels, which would of course create different types of challenges for the player in terms of gameplay. This meant that not only would the separate components of each level have to be intelligently placed by the A.I. in a way that the player could navigate, but the physical structure of each level (walls, floor, etc.) would also have to be custom configured for every level that is generated. The truth is, until very recently this was technically not even possible. It's only with the most recent advancements, with things like the Unreal Engine, that this sort of thing can be reasonably done for a commercially available game like this.


We spent nearly two years designing this system and figuring out how it would work. We wrote up extensive design documents talking about how the game would handle puzzles, traps, the platforming obstacles and other items in the game. The next thing we had to do was test this idea, but rather than jumping right in with extensive programming, we decided to test the concept on paper, literally. We created a D&D style turn based mockup and used something similar to what we were planning for the computer to use to design the levels, only in this case instead of a computer algorithm we just used some multi sided dice and corresponding charts to determine how we would create the level in this 2D, hand drawn test. We then used little rubber animals as avatars to play through the levels and see how well this idea would actually work. This first test went pretty well and we learned some valuable things from it.

The next step was to create an actual playable game prototype, so we used the same process to create a level that way and mocked it up in the engine as a simple level that we could play through just to see how this would work. This gave us a great sense of what the gameplay would actually be like and allowed us to correct and refine things even more.


The most significant task was yet to come. This was of course creating the actual code and systems that would allow this A.I. level generation to function. It took many months but eventually we had a system that could intelligently create playable levels for the player to navigate. The very idea that we could instantly generate hundreds or thousands of different original levels with just the click of a button was extremely exciting. Because we want to provide these levels to the player automatically, the A.I. has to be able to generate these levels entirely on its own with absolutely no direct oversight from us, the developers. The A.I. has to be able to generate millions of these types of levels and each of these has to be unique, playable and winnable. This was quite a task but once we had this system up and going, we were extremely proud of it. It's not the sort of thing you'd normally expect from a 2 man indie team.

Since we've got this system up and running we've continuously added more complexity to it including giving the A.I. the ability to generate multi-story levels, where the player can go up or down in different parts of the environment. We've also added more procedurally generated decorations like plants and moss that you will find throughout the levels that you are trying to beat. And even more recently we've added other types of physical obstacles that you must navigate within the hallways of the temple, in addition to the traps and puzzles that we have lurking around every corner.

But this is not the end, and in fact we have lots of plans to continue to add to the complexity, uniqueness and challenges of what our level generators are able to supply to the player (our plans include the ability to generate more complex, and less linear level layouts, among other things). As development continues, what our A.I. is able to provide for you in terms of various gameplay and platforming challenges will only become more interesting (and terrifying!).

- False Prophet