Where to start? The following should be done in order.
in reply to RFC: RPG ;-)
- Is this a rules description or a rules engine? What I mean by this is are you intending on using this to just build and maintain characters or run games with? I would say to start with just a character sheet maintainer. You can always expand later.
- Figure out which systems you intend on supporting at first. White Wolf? AD&D (if so, which edition? 2? 3? 3.5? 4?)? You can always add systems later, but trying to solve ALL systems is going to doom you to failure. I would suggest just supporting what you play right now. You will need to refactor later anyways, so embrace it.
- How amenable do you intend on being to supporting house rules? Initially, I would say no.
Those questions are going to define the initial scope of the project. For the first 0.01 release, you should make the scope as narrow and tight as possible. Remember, you're going to "release early, release often". It's hard to release early (like in 2 weeks) if you have more than 20-40 hours of work to do.
Now, let's take a look at tools. You're right to look at the data structure first. Programs are nothing more than data manipulation and visualization tools. So, 0.01 should be that and just enough of a UI to manipulate what you release. Then, as you refine the data structure, you will refine UI and vice versa. But, start very very small. A possible release schedule might be:
- Fire up the UI and create a character with a name. Additional features (each one tested):
- Be able to save the character.
- Be able to retrieve it later from a list of known characters.
- Be able to delete it.
- Be able to change the name.
- Define a trait. This includes (all tested):
- Name a trait. Guarantee the name is unique.
- Provide descriptions (long and short).
- Be able to modify, delete.
- Be able to find traits. (Search is very very difficult. Providing a good UI is even harder.)
- Connect a trait to a character. This includes (all tested):
- Altering traits connected to a character (adding, deleting).
- Providing a number of 'points' a character has in a trait.
- Preventing the deletion of a trait if any character has it.
- Adding to the UI (find all characters with a trait, etc)
Just getting to that point will take a good 2-4 weeks. I think we would start there. And, yes, I'm offering to help out, but on one condition - the initial datastore be DBM::Deep (which I support). I want to get some real-world usage of it in a database-like setting because I want to add search capabilities to it, possibly using Data::Structure::Utils, possibly even using Presto as an overlay. The datastore can change should this project exceed the capabilities of DBM::Deep - I don't care. I just want it to be the first if you want my help. :-)
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?