DevBlog#16 Expectations vs reality in game design (Are you ready for random levels?)


Hi everyone,

As you may remember, in the last week’s blog I was talking about procedural level generation and best practices on how to implement it in the game. This week, however, I have spent balancing out the random aspects of the generation and the whole level design.

Upon starting to create randomly generated levels, I realized that design itself does not fully work out the way I imagined. Somehow the proportions were off. Adjusting size for playable character, enemies and/or environment did not help and I started to look at ways to fix this.

How I thought this could work

Initial idea was to follow pattern of Downwell – one main direction to go and no variation upon placement of main level.

Initial idea

As you can see in the picture, the whole level is vertical and enemies are being placed mostly on sides of the level. If enemy can’t roam freely around, it is stuck on the small edge of the level. So there is one problem – there isn’t much of a space to move around. Imagine if you as player would jump on platform and the enemy is literally right there in the same spot – it would be a mess and chaotical gameplay.

Another problem that I encountered was the vertical placement. If game like Downwell can handle this pretty good because there is no need to go back (up), in From Hell case it is quite bad because player can fall down (because physics, duh). If the player would fall from edge and there would be no platform to jump back on (for example, if platform would be destroyed), the game would fail and you would have to start a new game. Not a great design, don’t you think?

How I think this could work

Simply put, in order for this to work I have to create not completely vertical level. See random generation example below:

Screenshot of randomly generated level in Unity(from distance)

One main rule that I made is, that player should be able to go through this level back and forth without any additional help (perk, booster, platform creation device, etc.).

The cool thing here is that now, even with some of the area being horizontal, main level direction is still up. Meanwhile, horizontal direction enables me to place items, enemies and other features in the level so much easier.

How to randomly generate something but not fail at it

Since this is intended to be randomly generated level game, the question is – how to create completely random, but at the same time, great level?

In my opinion best approach is to start by manually creating the level. Yes, I know, seems a bit contradicting, right? But here are some points why you shouldn’t rush with creating everything randomly:

  • manual creation allows you to test level design better
  • you need to have very clear understanding about what should go where before you can do random
  • you may find out that something does not fit the game at all and should be, therefore, not even considered for random generation

Let’s go through each point one by one.

Manual creation allows you to test level design better. Instead of thinking about technical aspects on how to make a platform appear in the level, you can focus on the design and gameplay. No one will want to play your game if it is boring. No matter, how elegant the solution for random generation you have made.

Having very clear understanding about what should go where. In order to make something randomly appear you have to automate actions that otherwise would be performed manually. Automation itself is already a big challenge, so not even knowing what to automate and just “being there, doing something” is not going to bring your project to life.

Considering random generation for your features. It is much better to add a platform by hand and play through with your character, in 5 minutes realizing what should be improved upon, rather than trying to make this platform appear for 5 hours and then understanding that it does not even fit the game.

What’s next

So there are some ideas of mine, how to make random generation much better and how to get better at game development so you could get closer to finishing your game. I hope that these points will help you in your journey of developing games!

Points that I made above are going to be in my to do list for quite some time, in order to improve the game and to make it more enjoyable. Therefore, probably next few blog posts will be more as updates about my progress on testing design ideas. (So I could automate and randomize them later.)

Feel free to share your thoughts in the comments or in game’s Discord channel!

As always, thanks for reading, don’t forget to subscribe for weekly game development blog and have a great day!

Leave a comment

Log in with itch.io to leave a comment.