Procedural level generation

Many of you have probably had the opportunity to play games such as Minecraft, Diablo or The Binding of ISAAC. One of the main elements of these games is the procedural generation of levels, which involves their pseudolosowym positioning according to certain specific rules. The use of such mechanics in the game has many benefits and many problems that I will try to only partially shed light, because this topic is quite extensive.

The main advantage of randomly generated levels is that each is unique, and it pulls behind a few things. Each time a player receives a slightly different game experience, which in the proper design of the game can significantly increase the replayability, because the player will not be able to learn to play memory. This randomness can also be seen, encouraging the exploration of the New world, because it is not clear where the diamonds or chest with great treasure were hidden this time. Well-made procedurally generated levels can significantly prolong the life of the game. Ask yourself whether you like Minecraft would you to monitor if you land on the same map every time?
Another such game is the ability to match the difficulty of gameplay on a regular basis during the game. As a designer you can predict the situation in which the generated boards become a bit easier when the player will fare very poorly or too well. This mechanism can help keep the player on the monitor. The game will never be too easy for a smooth player, nor too difficult for a weak. An additional advantage of such mechanics is that the player does not have to know about it, and you from behind the curtain you can control his impressions. Unfortunately, I can not recall the title that used this mechanic… Maybe because I didn't even notice it? However, znote with this careful-the player may feel ripped or undervalued when he notices that the game altered the level of difficulty without his command.

As I wrote at the beginning of procedurally generating levels carries with it some drawbacks.
It is difficult to lead the player in such a way that his impressions were the best. You do not have direct control over what will be thrown opposite the player, as in the case of manually created levels.
Keeping the storyline and narrative is somewhat difficult. Not having complete control of the world is hard to form the world in such a way that the player receives relevant information in the correct order. Diablo solved this problem in an interesting way. Important events are placed in places that cannot be circumvented if the player wants to push the storyline forward. It also combines randomly generated levels with the parts of the map that were created manually.
The next problem is to ensure that the locations in the game make sense, and the elements of the world have played together. This Problem occurs for example in the game Swindle, where the game often generates empty rooms or corridors that lead nowhere. It is also worth pointing to Minecraft where some elements of the world, eg villages are generated sometimes in a very strange Spelunky01_1377679564way. The economic question still remains. The design and programming of procedurally generated levels is difficult and time-consuming. You should think well about whether the result you want to achieve justifies your work effort. Creating a system that will only generate a few levels can pass the goal, but when you use a hundred, a thousand, or infinite multiple levels in the game, then it can make sense, because simply the effort required to create such levels Manually will be much larger than the creation of algorithms that will construct the levels themselves.