One of the least appealing aspects of creating an RPG game (tabletop, video, or otherwise), is creating a critical mass of content.
A simple story about a boy seeking vengeance for the death of his family is a good starting point, but very quickly the game master can be bogged down with the creation of minutia. Where did they live? What kind of place is it, and what did they do there? Who were the people who attacked them, and what was their goal?
Aside from details relating directly to the storyline, there is also a very large amount of other detail that might be nice. It's good not to mislead the players, but at the same time not ALL footprints will belong to the villain.
["Paw"] has, in his tenure as a game creator, put together a veritable mountain of charts to fill in these details. And now ["Calin"] is investigating ways to electronically put all this information together in a useful way.
Ideally, a game creator could specify a bare minimum of detail (whatever is relevant to the story at hand), and a world generator could fill in the rest of the environment. Obviously an element of randomness would be necessary, but randomness with a starting seed could ensure that details will not change arbitrarily.
The problem is, how do you begin such a monumental undertaking, of putting together such a generator?
The best place to start is probably to break generation down as far as possible, and move on from there. Here's an example in two dimensions:
drawing:firstexample
We have a line seperating the top from the bottom. The two end points are pre-determined, but the line connecting them is calculated by a computer program. In this case, there is nothing at all random about how it was calculated. If we altered the calculation program to include arbitrary fluctuation, we might get something like this:
drawing:secondexample
If our goal was a terrain generator, we would want to further alter the program to keep the fluctuations within a reasonable distance:
drawing:thirdexample
Now we can assign a few important points like this:
drawing:fourthexample
and end up with a reasonable mountain like this:
drawing:fifthexample
The key it seems, is to first write a calculation that is very mathematical and precise, and then introduce variation such that at any given point the variation is not far from the precise calculation. In this manner we have a result that is neither too arbitrary (like the very spiky image 2 above), nor too cold and uninteresting (like image 1).
When trying to draw a precise line between two points, first the dimensions must be defined. If we were trying to generate the history of a city, and determine events leading from thriving health to downfall, our first dimension would be time. Our second would be 'city health.' We could easily throw in a third dimension of population if we like. We now have enough information to calculate a straight line from one end to the other Probably best to add some definition to city 'health.' I think this time we'll use poverty and happiness such that a healthy city has very low poverty and high happiness, and an unhealthy city is of course the reverse.
drawing:sixthexample
Here it is clear that a major cause of the downfall was population increase. As the population went up, city health declined. Based on the amount of time involved, we might see that the population increased naturally, but resources were not expanded to fill the need... or we might see that the population increased rapidly from an influx of people, and resources COULD not be expanded quickly enough.
drawing:seventhexample
Here we see the opposite cause - the population decreased until none remained. Again, depending on the time scale, we might find that the population decreased in a slow and easy manner (such as moving away as resources were depleted) or in a much faster way, such as plague or attack.