Mechanic #054 - PGC World|
A technique for building a logical overworld for a procedurally generated RPG.
Another mechanic seeking to procedurally generate an RPG. This time, the focus is on an overworld (you know, that stuff between towns and dungeons - the glue that holds the whole experience together).
First, I need to make the distinction between narrative RPGs and simulation RPGs. A simulation RPG is just a sandbox with little plot. You are given an open world and the freedom to explore it as you wish. There may be minor obstacles, like zones having enemy levels that are too high, but you are generally free to still enter the zone at your own risk.
A narrative RPG is one which very tightly controls you exposure to the world based on the narrative structure of a story. There are usually obstacles all over the place that prevent you from moving forward. At worst, it might be a building that has a locked door. At best, it presents logical obstacles that make sense within the context of the story. For instance, you can't get over the mountains without an airship, and oh look, you meet a guy who will build you an airship if you rescue his daughter from the mean ogre.
There is a third type of RPG structure (probably more, but while I'm thinking about it) and that's the exploration RPG. These are very similar to narrative RPGs, except that story is not what moves you forward past those obstacles. The classic examples are Metroid and Zelda. You can't lift a block preventing you from going forward without first finding the strength bracelet in a dungeon.
Structurally speaking, an exploration RPG is identical to a narrative one, but it is considerably easier to procedurally generate since it doesn't wrap it's gameplay progression in story. There is also a lot of unlocking new areas in old ones once you've gain a new ability, so there's back tracking, and a strict linear progression actually ruins the experience.
A narrative RPG, however, tends to flourish with a strictly linear progression where each "episode" might have minor elements of exploration and non-linearity. For instance, in Final Fantasy (yes, the first one), the bridge to the next island won't be built until you've fought and killed the boss north of the castle town. However, you can explore the castle, grind experience, gain money to buy things at the town, and so on.
So, a narrative RPG works by providing a linear set of hubs - usually at first, until the entire world is open about halfway to two thirds through the narrative. Each hub might include something like a town and a dungeon (most old school Japanese RPGs work exactly this way), but there might be a mini-dungeon on the way to a dungeon, several towns, a small outpost with a casino, and so on. The hubs themselves can usually be considered chapters in a larger story, since each one usually has some sort of beginning, middle, end to it before you can move to the next place.
Above, I've made a graph of many different hubs. For effect, I've also included each hub's elements - the little boxes extending from each one represent a town or dungeon or some other enterable element on the map. The big boxes - the hubs - don't really represent anything physical but a metaphorical location that all the elements are built around. For instance, a hub might be an island, or the desert zone, or something like that.
The actual plotting of the hubs could be as simple as just using some random rotation for each spoke, but I presume that there would be more complex requirements. Maybe major and minor hubs influencing how far away each hub is from the previous one, or concerns taken for the shape of the map itself. I should point out that this is a really simple example - most RPGs would have around twenty or so hubs of varying degrees of significance.
Once you've taking a flat tree and given it some sort of spatial organization, basically, you just grow the region of each hub, like mold. Just keep growing them until they reach a certain side, run into each other, or can't grow any further. The major/minor hub thing could come into play here, making sure to give dominant growth to major hub regions of minor ones.
As you can see, where each region connects with another one creates a border - or more precisely, a gate. As you can see towards the bottom of the map, there is a section where one region borders a region other than the previous one in the linear tree. That's okay.
Basically, each gate exists between two regions - and only two - and we know which hubs each region belongs to. Now we figure out what different terrain obstacles are available for each border. For instance, early on in the game, you won't have access to a ship so water cannot be used for a gate between two regions in which a ship hasn't been found (which we know because it will happen in hub 2).
Each type of terrain obstacle can be checked with the narrative abilities to know which ones are possible. There are also borders which are between two zones which might need a one way connection. Going from G to A is okay, since you've already been to A, but going from A to G would skip a bunch of hubs and screw everything up. Luckily, we know that the player earns the boat in region G, which means a water gate can only be crossed at region G or later.
Long story short, take each border, figure out what gates are possible and pick one that best fits.
After that, it's just a matter of filling in the terrain for each region - feel free to use whatever techniques you'd like, so long as the terrain inside the region never goes across a border-gate. In this example, I've put multiple islands inside the top left two regions, with a bridge linking the two together. The three regions below are connected linearly with a dock only in the first area - this means that water can be used as a closed gate.
As with all my PGC theories, this one has not been tried out in practice. However, I think the philosophy is sound. Build a tree of your game's narrative structure - a sort of meta-backbone, if you will - and then design everything in it around that tree. This philosophy is also behind the environment tree entry (#004).