Yah, I've been really quiet for a while now. But it's just because I've been thinking...alot. I should mention up front that this discussion will be heavily technical, and in fact I discourage non-programmers and casual programmers from reading this, since it may just confuse you (no offense intended, honestly--this confuses me).
I'm convinced that there has to be a way to (flexibly and efficiently) generate characters (PC's and NPC's) both randomly and semi-randomly (ie, with limited input from the user). I'm also convinced that all of the character generation software written to date is doing it wrong. This is not a reflection on the talent or effort that has been invested in these projects. PCGen, most notably, is an incredible piece of software that is far and away the most sophisticated program of its type. However, every program available (and I certainly include my own generators when I say this) suffers from at least one significant defect: when a new ability is released in some published source, it requires (or may require) the program itself to be modified to support the new feature.
Naturally, projects like PCGen (which have pretty much categorized the entire bulk of published material) have reached a point where almost anything that comes out can be incorporated without significant modification to the program. But they can't guarantee (and I'm not singling out PCGen here--no existing software can guarantee) that any feature that might be concieved by publisher or fan can be accomodated without modifying the program again.
Now, the bad news is, I don't have a solution. But I think that I may be on to one. I've been doing a lot of research, thinking, and modeling, and I believe that if we can understand the problem, we can build a system in which any new feature can be implemented simply by changing the data; the program itself need never change in response to published material.
I would like to get some experienced software engineers talking about this issue. I believe it will tend toward the theoretical, and in fact I hope it does, because if we start talking about implementation too soon, we'll lock our thinking into a limited set of solutions.
So, a few ground rules for this thread:
I'm convinced that there has to be a way to (flexibly and efficiently) generate characters (PC's and NPC's) both randomly and semi-randomly (ie, with limited input from the user). I'm also convinced that all of the character generation software written to date is doing it wrong. This is not a reflection on the talent or effort that has been invested in these projects. PCGen, most notably, is an incredible piece of software that is far and away the most sophisticated program of its type. However, every program available (and I certainly include my own generators when I say this) suffers from at least one significant defect: when a new ability is released in some published source, it requires (or may require) the program itself to be modified to support the new feature.
Naturally, projects like PCGen (which have pretty much categorized the entire bulk of published material) have reached a point where almost anything that comes out can be incorporated without significant modification to the program. But they can't guarantee (and I'm not singling out PCGen here--no existing software can guarantee) that any feature that might be concieved by publisher or fan can be accomodated without modifying the program again.
Now, the bad news is, I don't have a solution. But I think that I may be on to one. I've been doing a lot of research, thinking, and modeling, and I believe that if we can understand the problem, we can build a system in which any new feature can be implemented simply by changing the data; the program itself need never change in response to published material.
I would like to get some experienced software engineers talking about this issue. I believe it will tend toward the theoretical, and in fact I hope it does, because if we start talking about implementation too soon, we'll lock our thinking into a limited set of solutions.
So, a few ground rules for this thread:
- Try to keep things generic, at least initially. An ideal solution would apply to more than simply random character generation.
- Limit implementation discussions to examples of what you mean by a particular approach. If possible, avoid discussing implementation issues at all.
- Let's try to identify related issues that exist in other fields of software design, and see if we can apply existing solutions to this.
[/list=1]
For example (and this is where my thinking has led me to date): character generation can be considered an N-Body problem. Each character has a set of "n" attributes (the "bodies"). A change to one attribute may affect any number of other attributes.
Now, N-Body problems have many different solutions--physics simulations use them all the time to model the affects of forces on a set of bodies. Perhaps we can apply some of these solutions to a character generator.
I know that if we can identify the problem, we can find a solution. I've been trying to do it myself, but I think this could really benefit from a larger group applying their minds to it. Please, contribute! What other ways can we look at a character generator? Let's brainstorm and discuss, and see if we can't invent a better mousetrap!
Thanks,
Jamis