andargor said:
I have no problem with custom info from different tools being stored in the export, and that is safely ignored by other tools. Maybe I didn't understand your example correctly, but if changes are made in another tool, then a common way of indicating that those changes have been made to other tools would have to be implemented. I still maintain that "recorded" user choices is probably the most tool independent way to do this.
Unless everyone is going to agree to a common "audit" format, which is going to be a bit tougher than just getting people to use one common "character data" format, there is not going to be a way for different applications to know what another application changed and how. Not to mention, I think its really beyond the scope of things. Are there common elements of 3rd Ed. that can be tracked as character data? Sure, stuff like noting what the base ability score is, what level a feat or a skill rank was assigned at, what level a class was taken at and its hp, etc.
Ah. The unique ID issue. There are two ways of doing it:
Um, no. A uniquie ID is unique because the chances of it ever being in existance at the same time is astronomically small as Davin noted. The Windows OS provides a Globally Unique ID (GUID) that is easily available programmatically. The GUID is significantly big, and the algorithm that produces rigorous enough that you won't see the same GUID twice. Tons of stuff on the Windows platform rely on this. Java has a UID, which isn't quite as globally unique, but would be unique enough. And Mac OSX/Linux/Unix has something similiar but I forget its nomeclature.
- Having a central repository to ensure there are no GUID collisions. It would need to be relatively real-time in order to not slow down anyone's development (i.e. it can't be a periodically published list). Also, it needs to be OS independent (I know Windows has a facility for generating "random and unique" GUIDs, but it won't apply to Macs or Linux)
This would in general be a bad idea. Now you're tying all programs to the internet. Even assigning blocks of GUIDs can cause issues and collisions. So this is the baby out with the bathwater.
- Using game system elements to establish uniqueness. I submit that a name, a type, a version, and a source reference (perhaps with the game system name) would be sufficient. For example, I have not seen duplicate D&D feats named X from the same source, except errata (and the version tag fixes that).
Yes, this *might* work too. Its definetly far better than just a feat or skill or whatever name. But you'd have to come up with a nomeclature that all parties would be agreeable too.
The common XML format is just that (the DIB

).
Well, um, to some extent. DIB is very basic, but it doesn't really have enough information such as layers, alpha channels, etc., etc. The XML data format would need to know about the "DIB", i.e. the exploded character data plus some layering to be able to track level stuff, i.e. what level a feat was added at, as its the basic. On top of that would be program specific information. And basic information for any custom data plus program specific information for that custom data.
If my XSL-fu was as good as my code-fu, I'd probably draft up something fairly quickly for DMGenie, RPM and Campaign Suite, and the common format is really irrelevant.
Sure it is... without a common format somewhere, it means every RPG software app out there for d20 has to code up transformations for every other data format too. Essentially reinventing the wheel every time.
What I was getting at is that you *can* have a common format, without too much trouble thats able to be used between applications. Further still, but allowing proprietary information to be embedded in the format you could move away from needing transformations.
Nonetheless, back to the root.. what I believe you proposed, what I've tossed out there because I've been using it for some time now and its been through several revisions, and what CSX proposed in beta and DMGenie is going to support for importing, are fairly similiar with some minor differences. If we could get a common import/export format at the very least that contains enough basic character information then individual programs only now need to do transformations from ONE common format to their own format. For CSX, it already has guy's like Jay Cline willing to do such work.