Saturday, July 28, 2007

Procedural Content Generation for a Star Trek MMORPG +

Originally Posted by psyonic:
Creating satisfying input should not be too hard. ... This is hand crafted data, EVE Online use such techniques extensively ... EVE's portrait data is stored procedurally, and transmitted to all players from the server, and reproduced. Each time, the same portrait is grown, procedurally, from the data. Portraits made by the players themself, from the portrait editor in chargen.
You're right about EVE's character portraits. That's a good real-world example of how storing information as a few numbers and using static code to generate the output for everyone from those few numbers at run-time allows a lot more objects to be stored and communicated than if you (for example) stored character portraits as JPEG files.

Again, the tradeoff here is storage space and communication speed versus processor speed. Pre-generating and storing object information as big files that can pretty much be slapped as-is onto a user's screen or out their speakers is a good way to go when CPU speeds are low compared to hard disk sizes and communication rates. But when everybody's got a fast processor (and coprocessors for video and audio), and you've got a huge number of objects to store or share among many users, then a procedural generation system that stores form/behavior information as a few small input parameters starts looking much more attractive.

That said, I suspect you may be minimizing the difficulty of generating input parameters that produce satisfying output.

Why do people spend so much time using the portrait editor of EVE's character generator, or indeed with the advanced portrait editors now found in some games? I would say it's because finding a set of input values that produce aesthetically satisfying results when run through procedural code is non-trivial. Out of all the possible combinations in a system with a large possibility space, a lot of those combinations will look awful. So finding a combination that satisfies our aesthetic sense of beauty is basically an exercise in creating art.

People can do that. But how do you get a computer to do it (and do it reasonably efficiently) when you need to do it perhaps millions of times? How do you teach a computer to be able to generate combinations of input values which when run through a procedural generation system produce output that many users will find aesthetically pleasing?

I agree with those who think that this is a challenge. Where we may disagree is that I don't think it's a flaw or deficiency in the theory/technique of procedural generation, because coming up with satisfying input values isn't a problem that procedural generation was designed to solve.

If anything, procedural generation may actually be a tool that gives us some hope of ever seeing machine generation of aesthetically pleasing combinations of input parameters. Parameterizing inputs to a generation system makes it a heck of a lot easier for a computer to provide inputs to what we might call an "art generation system" -- it would be much harder if a program had to create beautiful JPEG images or MP3 songs directly!

Even as parameterized input it's still hard for a computer to generate output that we find pleasing. Just cranking out a bunch of pseudorandom numbers is easy, but the results are generally horrible. The difficulty lies in figuring out the rules by which we humans perceive beauty, then turning those rules into code that show the computer how to select specific numbers that follow those rules.

That sounds funny -- rules for perceived beauty? -- but they do appear to exist. Here are some examples of this with which I'm familiar (there are probably many others):

Theoretically, it should be possible to use rules like these to condition the pseudorandom generation of input parameters to a procedural generation system so that the output satisfies our aesthetic expectations.

Game design leads us to some funny places, doesn't it?