Procedural generation can be used to create almost any kind of content, but in games, we usually see it used to create levels, enemy encounters, and loot drops. This random element allows games like Diablo to offer players infinite replayability, since every dungeon run will both look different and yield different results. This approach does have its weaknesses, however. Handcrafted levels will always be better at delivering a powerful experience that's mapped to the game's story pacing. Procedural generation is also best thought of as an economy of scale: the more levels you have, the more worthwhile it will be to program a procedural generation system since it's a complicated undertaking that must check for broken, unplayable maps and special rulesets in certain areas. It's also possible to merge the two, by having a specific handcrafted experience like a boss fight in the middle of an otherwise procedurally generated world. Overall, as more games start to focus on creating infinite content to keep players engaged, we can expect to see more procedural generation in our games.