Why and How? Procedurally Generation!
In early development we planned to customly create multiple room layouts. Our first game prototype used exactly that and judging by reactions from people, it turned out we did good job, it was fun, but the question was for how much longer. How many times player will die and repeat the same sequence of rooms with the same content over and over again, until they get bored. We didn’t want that to happen.
Procedurally generation of rooms
We did our homework, tried few solutions, but it wasn't that easy.
We found games (like the Binding of Isaac) that use something similar, but not what we had in mind.
Although we did not wanted to use handmade layouts, neither we had time to customly create that many variations,
the thought of using completely procedural rooms also did not appeal to us since we won't have a good control of
the quality of generated rooms. There are numerous things where we want control,
like having multiple connected enemy and puzzles rooms before a boss room, or having a room where we could heal ourselves after an intense battle.
Luckily for us, we found the best solution for the game. If you’re familiar with procedurally generation, we use generative grammar that generates layout of rooms using some input we define. Basically what we do is create a set of rules where we can define many things like: what room visuals should be placed, which rooms should be connected, what content should be placed, and many many more.
What did we gain by using this approach? In the image above, there are many different room layouts. All those layouts (and many others) are generated from the simple set of rules. Every time you die, you need to carefully explore your environment again, however the game difficulty does not need to change much at all (at least if we're going to be gentle). Each player will get an unique and different experience.