Druidstone: The Secret of the Menhir Forest and Procedural Generation

The latest developer blog post form Ctrl Alt Ninja, the team behind the upcoming RPG Druidstone: The Secret of the Menhir Forest, talks about procedural generation and how it will be utilized in Druidstone. Here's an excerpt that sheds some light on that:

To our surprise, there has been some heated discussion about Druidstone being procedural. We didn’t really expect that but in hindsight it’s easy to see that we should have communicated more clearly what it means when we say Druidstone has procedurally generated content. Otherwise it’s way too easy to get the wrong idea.

So let’s talk about proceduralism in Druidstone. Procedural games can be roughly split in the following categories:

1. Fully procedural games like Minecraft, Dwarf Fortress and No Man’s Sky, which generate the whole world procedurally. Most of them have sandbox type of gameplay.

2. Procedural games with some predefined content. For example, most roguelikes have special rooms that are handmade (often called “vaults” in roguelike jargon).

3. Games with handmade, predefined content in randomized order. E.g. FTL has designed encounters but their order is randomized and Binding of Isaac has handmade rooms whose order is also randomized.

So, which category does Druidstone fall into? Druidstone has a story that unfolds as your progress in the game, so option 1 would not work. Telling a predefined story in a fully procedural generated world would be almost impossible. Technically options 2 and 3 would both work but in the end we picked option 3 because it just fits better into the game design and is just so much easier to accomplish.

What that means in practice is that the world of Druidstone is split into areas that are “randomly” connected. An area could be almost anything, a room in a dungeon, a forest meadow, a graveyard, an encounter with a NPC, you name it. Internally we call them all “rooms” even though they may not resemble a real room at all. Basically each room is a handcrafted mini-level in itself, and can have enemies, traps, NPCs, etc. Rooms are picked from a large pool of rooms, so that there are more rooms than fits into a single playthrough.

Technically each room is defined by a piece of Lua code, so the system has a lot of flexibility. With Lua it’s easy to have some randomly varying content in the rooms as well, if we want to. For example, the enemies or items in the room may be randomly determined. We try to keep the rooms relatively small to maximize the potential of surprising room combinations.