So I’ve made some initial progress on a D&D 4E character builder:
1) I’ve named it Mulciber after the forger aspect of Vulcan the Roman god of constructive and destructive fire.
2) I started with a pretty strict relational model but while that works for most cases it failed to handle some of the exceptions well and would require a bunch of tables with heavy keyed relations. Just didn’t work right.
3) So I’m switching to an XML document based model (which will have a simpler relational model DB behind it) that seems to work VERY well. This format allows me to encapsulate both data and workflow (choices and options) in the same object. Very nice….
4)I’ve created a fully fleshed out schema for powers that holds all of the appropriate data and can take into account other factors (such as character level or feats) that impact the some values. This flexibility means that a power like the dragonborn’s “Dragon Breath” that has 6 values that vary (ability that the attack roll & damage is based on, the value of the ability bonuses, energy type of the attack, the range of the attack, the number of dice rolled for damage, and the type of die rolled for damage) — thus very specific power cards can be generated with out all of the extra verbiage that is currently present.
5) I’ve started the XML descriptions of some other elements (class, race), but they need some refinement.
I’ll probably work on the XML documents and how they stack for a little bit more — so I get a very good understanding of the workflow. Then I’ll start making document builders (WebUI to enter data to create the documents) and the database backend to store the data.