Opinion: Are procedurally generated levels all that great?

Reading other game descriptions, either from Soul Reaper’s competitors or other game developers, and especially indie developers, it seems like procedurally generated levels is the de-facto solution for content creation.

I get it personally. As an indie game developer, it’s very hard to produce good content on a tight budget. Creating an engine that will generate content that’s different every time makes your game more re-playable and potentially more interesting.

zom.png

The problem

It’s very hard to create original and interesting content that’s procedurally generated.

When we got started on Soul Reaper, we set out to do fast prototyping of different features that may or may not make it in the final game. The vault dungeon floor generator was one of the things we prototyped. Our system worked well enough: it would generate coherent rooms and place objects in logical locations. But the more we played, the more we thought it was repetitive and boring. If we wanted our game to be “infinitely re-playable” like some games advertise (and nothing against these games by the way), then I qualified our attempt as a failure. To be infinitely re-playable, it needs to be FUN!

We advertise Soul Reaper as being inspired by games such as The Legend of Zelda, Final Fantasy and Castlevania. All GREAT examples of carefully crafted levels. I don’t want to lie to our players: if we’re going to publicly say that our game is inspired by such great games, it has to deliver! And procedurally generated levels just didn’t cut it for us. Do you think Zelda, Final Fantasy and Castlevania would be as great if the levels were procedurally generated? I don’t.

Do you think Zelda, Final Fantasy and Castlevania would be as great if the levels were procedurally generated? I don’t.


So Danny, what did you guys do then?

We decided to manually craft every level in the game.

gr.jpeg

BUT, we wanted the benefits of procedurally generated levels: the feeling of new every time. At the time of this writing, we are aiming to have 80–100 floors in the game (depends on funding we get through Kickstarter later). Imagine going down the same floors over and over again… BORING! We agree.

So we added randomness.

Every set of 20 floors leads to a different theme, like lava cave, snow mountains, etc. For every set of 20 floors, we’re crafting between 100 and 200 floor plans/layouts. When the player goes down a floor, a layout if selected pseudo-randomly. So the chance of you seeing the same layout multiple times in a 2 hour session is low.

But that’s not all! Each layout has sub-sections that may or may not show up. Or be blocked by obstacles. Some of which you can deal with from the start, but for some, you need Zelda/Metroidvania-style tools to remove. A grappling hook for example.

Enemy and other object placement is also pseudo-random. When crafting the levels, we specify where (groups of) objects can show up and at what percentage. The group selection is also random. Let’s say we have two groups: #1: a set of 3 treasure chests; and #2: a fire pit. Sometimes, for the same layout, the player will see the chests, and other times the fire pit. Chances are players will never notice that it’s the same layout anyway!


So, does it work?

We think it does. Hard to tell… We have not created enough layouts yet to fully test our assumptions. One thing I can say is that the levels are definitely more interesting. Will it help with re-playability? That I can’t say yet. More on that in a future post!


Any other ideas on how to improve your solution?

Actually, yes. It may be too far-fetched and too difficult to implement, but we think that we could add some machine learning to the mix. Told you it was far-fetched! The levels were create generate valuable information on how to build a good level. If we have enough data, we think we can train a model that can generate a good enough level, which we could improve manually afterwards, dramatically cutting down the time it takes to create.

We think that we could add some machine learning to the mix


What about you?

What’s your experience with procedurally generated levels? Does it work for you? Have you found alternatives that work better? Let us know here, by email, on Instagram, Twitter or Facebook!