reanjr
First Post
nopantsyet said:JimAde is definitely thinking along the same lines I am here. I agree--as barsoomcore pointed out--this is a complicated and difficult thing. Does explain PCGen, but PCGen also carries baggage from the fact that it was the first thing out there. That's not to say it's a poor application; there is a lot to like about it. But it is exactly the excpeptions that cause the biggest problems. PCGen is somewhat constraining in that area. On the other hand, DM Genie allows you to override nearly everything, but you risk losing track of how anything got the way it is.
This is why I am doing mine in a very datacentric-way. Once all of the rules have been represented as data, you can design an app as a plugin system to do what you want with the data. You need not be constrained by anything. If you have altered your teleport spell in your game to be level 9, you simply define a house-rules namespace and add the additional rule to an XML file. You set the app to use or not use specific namespaces or plugins. Voila, an architecture that supports any OGL system.
I want to really consider how it is that people play the game at the table in order to really account for that. What's the first and easiest "outside the rules" character tweak? "Can I exchange X class skill for Y?" Let me make that change easily, without having to modify or recreate the original class.
I reiterate last point.
And I think accounting for rule exceptions is probably the easy part. Accounting for other aspects of table-top play lead to questions like, should the data model account for history and progression? Snapshots, deltas, dates and times, etc. What about the ability to annotate changes? ("DM said I could do this because PC was raised by flumphs.") What about automatic annotations like, "+6 Int (Circlet of Intellect)? "
Again, a plugin architecture allows for any type of add-on you would need. It's interesting that my basic design would allow for a plugin to handle any of the things you mention here, even though I hadn't thought of any of them.
And yes, at some point you have to ask the question, "Does X belong in the data model, the API , the persistence engine or the application?" At what level should internationalization be implemented, for example?
The way I am going about it is to take the entire ruleset and represent it as data. This allows for logic and rules changes by editing a simple text file that is near-plain english. I18n is something that can be done at the data level, though I do not plan on placing any real support in it. From what I understand, most rule books are never published outside of the English language anyway. I may be wrong on this. Anyway, you could take the spells.xml file and alter just the spell description and you would be supporting i18n. XML already supports this.
My primary objective is to facilitate tabletop play, whether at game-time or in preparation. (Or both.) It might not explicitly support it, but it should probably not eliminate the possibility of network interaction. It should probably not eliminate the possibility of storing as XML or as a database. It should probably not eliminate the possibility of being used in an online application like 3EProfiler.
My goal is also to facilitate tabletop play, though I do have an explicit goal of making it network enabled so that if you have a group of players around a table with PDAs/Laptops/whatever they could all share data. This would, of course, work over the internet, too, but that's more of a side effect than anything else.
I think it's a pretty tall order, but I think it can be done. I think it means taking stats and rules individually and really understanding how the function in the game and how they are used at the table. It sounds like a lot of work, but I think it's worth it.
I disagree. Again, if all the rules are represented as data that is easily altered, it doesn't matter. Plugin writers can add or alter functionality as they see fit, as long as they have the rules.
But what I really want to know is...Who's going to write the rules regression test?![]()
That's what end users are for, silly.