Procedural Generation, Variety and Reproducibility

By Davide Ciacco (Twitter,Website)



Most of the time I hear people around me talking about procedural generation only as an algorithmic alteration, or generation, that grants some things a wide variety — and that is a very important feature!

If used wisely, procedural generation can provide our games with art, music and events which work together to make them always engaging, interesting and replayable. But, this "variety", if leading to excessive randomness, can be unsuitable for certain situations.


In some games with procedurally generated levels, especially if a leaderboard is present, every player should be playing the same exact level so that the score is fair against other players results. In these cases procedural generation should grant both variety and reproducibility.

A couple of real examples: in my game "Idle Duels" there are procedurally generated armors and swords (in pixel art) and the enemies encounters happen in the same order for every player, they have the same statistics so that the position of a player in the leaderboard is fair.


The same thing happens in my game "Pepidox", a simple game where you have to avoid obstacles. All the levels are procedurally generated, but the colors, the obstacles positions and properties like speed or density are not random! Every player will have to face the same challenge that each other has.

I'm currently working on a game that features procedurally generated music, I will probably choose a certain seed to generate the main menu music because, while variety is good, sometimes is better to reproduce the same thing for everybody to make it recognizable.

The reproducibility aspect of procedural generation can also be very useful in multiplayer online games, where some events and contents can be procedurally generated reliably on all the player's devices (the clients) connected to a certain match, without the need to exchange data with the server.