I’ve made some good progress with the little time I’ve been able to devote to the project:
1) Powers are largely done. All elements of a power can be entered via a generated UI and an XML document is generated that can easily be retrieved. I have two examples: Lance of Faith and Fey Step. From these documents, I will be able to generate either power cards or a reference sheet — but that is a much later step.
2) Feat entry is primarily done (there may be some improvements later), and the generation of the XML document for Feats is about 1/2 done. I do have a very simple example: Durable.
3) The schema and skeleton generated UIs for entering classes, class features, and racial traits are in place. They’ll need some improvement and model adjustments before they are functional, but that isn’t too much work — it is mostly a variation of the work I figured out for powers.
4) All major elements can be easily referenced by a GUID.
I will be continuing to work on producing generated XML for the remaining items: classes, features, traits, races.
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.