# Why's it so hard to create a character generator that rocks?



## WingOver (May 10, 2004)

I partly answered my own question.   Making anything that does everything is obviously hard, especially if its software and the rules are for D20.  But besides that, it seems that the D20 rules are mechanically precise overall and lends itself to be transferred into software better than previous editions.  So why hasn't this been done?

Neverwinter Nights and The Temple of Elemental Evil had some serious D20 rules under the hood, even if they didn't quite implement everything ("real-time rules" for NWN, templates, monster races, etc).  But it seems that it would only take a few more steps for those companies to create an all-encompassing, slick character generator.

My post isn't intended to slam the exisiting generators out there (e-tools, PCGen, Redblade, Campaign Suite, DM's Familiar and Genie, etc.)  I have the utmost repect for their work.  However, I downloaded and used these apps but wasn't satisified because:

1. Didn't trust that the stats were properly calculated 100% of the time.  If I have to double-check, then what's the use?
2. GUI not intuitive, or too busy.  If I know D20, but can't figure out how the software is implementing it, then again, what's the use?
3. Unable/difficult to create new data (races, classes, magical items, etc).

D20 has been out for over 3 years.  There's a lot of talented software designers out there.  So why isn't there a single, all-encompassing, rocking character generator available yet?  Is it too hard to design?  Is it a huge project that needs a large team and too much money?  Is D&D too "small-time" to bother with?  What do you think?


----------



## trancejeremy (May 10, 2004)

Well, as someone who has written a d20 character generator of sorts (I say that because it mostly works, but is far from complete), is that it's a whole lot of work. A whole lot of work. And it's really really boring work. And besides the programmings, there's tons of data entry.

NWN, Temple of Elemental Evil, etc, had large staffs of professional programmers that were well paid.

I mean, the character rules are generally pretty easy. But then you get all sorts of extra stuff, like equipment, spells, familiars, lots and lots of feats. And there are some tricky bits, like Rogue's special abilities - you have to support choosing those. 

Plus, the OGL is kinda murky when it comes to software, I think. A big company would no doubt want to license D&D from Hasbro (which is also pretty murky, as I think another company has electronic rights to D&D). The net result is that it's probably not worth the investment.


----------



## WingOver (May 10, 2004)

trancejeremy said:
			
		

> And it's really really boring work. And besides the programmings, there's tons of data entry.




Try programming software for the electricty industry or accounting.  Now that's boring work!      Developing a D&D character generator synchs with our hobby at least.

The OGL/D20/licensing issue is a good point.  Maybe those big guys don't want to mess with all the legal wrangling.  Making a D20 compliant generator is difficult, and using the OGL would be easier programmatically, but lousy for marketing.

Maybe the D&D market's not big enough for them?


----------



## frugal (May 10, 2004)

WingOver said:
			
		

> I partly answered my own question.   Making anything that does everything is obviously hard, especially if its software and the rules are for D20.  But besides that, it seems that the D20 rules are mechanically precise overall and lends itself to be transferred into software better than previous editions.  So why hasn't this been done?




D&D rules like most things in life follow the 80/20 rule: 80% of the rules are straightforward and easy, 20% of the rules are a complete nightmare.

Have you ever looked at the monster advancement rules for 3.0?

A decent PC generator has to cope with 3.0 and 3.5 the differences in rules are subtle and complicated. We have been trying for 12 months to come up with and XML representation of the rules and keep hitting "exception cases".

Consider something simple like "Greater Weapon Focus", you can only take GWF for a weapon that you have already taken "Weapon Focus" for. So you need to do the following:


Mark a character as having a particular feat
Mark the particular feat (weapon focus) with a particular weapon
Be able to examine the user to see if they have the weapon Focus feat
Be able to examine the feat assigned to the character to get the weapons that it specifices
assign a new feat to the character based on one of those weapons.

And you need to be able to dop all of that without hard coding the feats as a special case. PCGen is the only character generator I have seen that does this and even then it hardcodes some parts of that operation.

You also need to be able to query the character in quite complex ways: "You are only allowed to take this class if you can cast 3 different arcane spells at level 4 or above". That is quite difficult unless you hardcode the concepts of spells and spell levels into the program. It is possible to do it with generic "leveled objects" but you still need a querying language that can extract the information.

So not only do you need to encode the concepts in a generic way, but you need to write a query language that is both generic and high level enough that users can work with it.



			
				WingOver said:
			
		

> 1. Didn't trust that the stats were properly calculated 100% of the time.  If I have to double-check, then what's the use?
> 2. GUI not intuitive, or too busy.  If I know D20, but can't figure out how the software is implementing it, then again, what's the use?
> 3. Unable/difficult to create new data (races, classes, magical items, etc).
> 
> D20 has been out for over 3 years.  There's a lot of talented software designers out there.  So why isn't there a single, all-encompassing, rocking character generator available yet?  Is it too hard to design?  Is it a huge project that needs a large team and too much money?  Is D&D too "small-time" to bother with?  What do you think?




D&D utilities are written by gamers to satisfy a particular need. 90% of the people who write open suorce programs are not professional programmers, and of the 10% who are they do not want to spend their time writing high level design documents to make it easy for newcomers to the project (they get enough of that at work I can assure you).

In general assume that getting any 2 people to work on a project (they are not being paid for) in the same way is like trying to get an octopus in a string bag. the more people you add to the project the larger the holes in the bag get ;O)

There is no one on the PCGen team (that I know of) who is skilled in Interface design and ergonomics. Professional teams can hire a designer or two to make the product polished, free product have to hope that they can fnid a gamer who works as a designer and who care enough to put up with the developers who just want to hack something together and do not want to spend 3 times as long writing the interface as they currently do.

With regard to editing races, classes etc. As far as PCGen goes the developers do not generally enter data so they do not use the editors, nor do they know what a user wants from the editors. The data entry guys use a text editor because they want to work at a lower level and are entering large lumps of data. So you end up with a few users who try to enter their own classes with no one to support them.

Frugal
PCGen developer
Professional Software Engineer.


----------



## frugal (May 10, 2004)

WingOver said:
			
		

> My post isn't intended to slam the exisiting generators out there (e-tools, PCGen, Redblade, Campaign Suite, DM's Familiar and Genie, etc.)  I have the utmost repect for their work.  However, I downloaded and used these apps but wasn't satisified because:




Just as a quick metric PCGen has over 900 classes and 300,000 lines of code. To make it slick and user friendly would probably double that to 1,800 classes and 600,000 lines of code.


----------



## WingOver (May 10, 2004)

Thanks for the reply, Frugal.  So basically the reasons there isn't an uber-generator:

1. D20 rules are complex and extremely difficult to put into code.
2. It's a lot of work.
3. There is little motivation to overcome 1, 2 without getting paid.
4. Most of the programmers are gamers, without necessarily all the exact skills required.

I'm willing to bet that reason #1 is the primary reason, and that the 20% of nightmare rules are the cause.


----------



## Joshua Randall (May 10, 2004)

I like PCGen, and I use it, but its main problem is this: it's trying to do too much, all at once. I'd like to see PCGen get stripped down to just the RSRD (3.5 rules), and then be tested to make sure everything works. Right now it's iffy even with basic issues like accurate melee attack bonuses or armor classes. And that is unacceptable... or as unacceptable as a free, open-source program for D&D can be.


----------



## WingOver (May 10, 2004)

Joshua Randall said:
			
		

> ... or as unacceptable as a free, open-source program for D&D can be.




I appreciate the efforts of the PCGen team.  Every hour spent coding/maintaining PCGen is one less hour of free time to play D&D, write adventures, or just relax.


----------



## Davin (May 10, 2004)

I agree with the basics of what others have said.  D&D/d20 rules seem neat and clean (and compared to previous versions, they certainly are!), but trying to code them brings out the hidden issues.  Basic functionality is trivial (let's guess about 5% of the total workload for about 50% functionaltiy) -- and that's about what you get from most spreadsheet-style generators.  Handling the majority of cases isn't too bad (about +10% of the workload for another +45% of capability).  But that last 5% of exceptional conditions could easily amount to the remaining 85% worth of effort.  And that's just for coding -- data entry and other issues add considerably to the difficulties.

Another reason that you see incomplete systems are that people tend to write their software for just what they need, and that tends to also be among the easiest parts to do.  But for a good, general, commercial-like package you have to build in all the little quirks to make a really complete system, useful to anyone and everyone.  For the reasons outlined above, few (if any) people have the motivation to take it that far.


----------



## Joshua Randall (May 11, 2004)

*WingOver*, I appreciate what the PCGen team has accomplished, too. And I groove on the software. I just get frustrated that there are a bazillion non-core d20 sources being added -- most of which break the functionality in some wierd way -- while the core RSRD portion of the program _still_ doesn't work properly. But as *Davin* said, people work on what they want to for their game. Not what I need. I can understand that, but it's still (mildly) frustrating.

Does anyone have the new, Code Monkey Publishing version of E-Tools? I would hope that it implements the RSRD rules properly?


----------



## Davin (May 12, 2004)

Joshua Randall said:
			
		

> Does anyone have the new, Code Monkey Publishing version of E-Tools?



Which "new" version are you asking about?  The 1.5 release?  That's not out quite yet (it's going through the official approval process at the moment).


----------



## Silveras (May 12, 2004)

I see most of the good reasons are already covered, but I'll add my observations on a couple: 

Implementing just the Core Rules is too limiting, and trying to guess the variants coming is impossible. 

Most games use at least one extra resource, and many also have some variety of house rule implemented. Even the Core Rules contain 30+ variant options you can choose to use. 

Frequently, the new supplements include new rules. Not just new Feats or Prestige Classes that you can just add to a list, but whole new subsystems, some of which make variable what was a constant before. Trying to create a code system that has the flexibility to adjust to those is HARD. 

Consider damage. Basically, there are Lethal and NonLethal damage types. But wait ... if you have Regeneration, you have to change Lethal to NonLethal... unless it came from Fire or Acid. Unless your race is immune to Fire and Acid but takes Lethal damage from Cold. 

Consider spellcasting. Your Caster Level = your Class level, and that determines what level of spells you have, how many "slots", the chance to dispel it, and how potent it is (range, duration, dice, etc.). UNLESS you are using the Magical Effect Rating in Unearthed Arcana. Then your MER is potentially higher than your Class level (assuming you are multi-classed), and it applies to dispel checks and the potency of the spell; but your slots and highest level spells are still determined by your Class level. 

Consider Armor Class. Basically 10 + Armor Bonus + Deflection Bonus + Dodge Bonus + Shield Bonus + Dex Modifier + Natural Armor Bonus + Sacred Bonus + Luck Bonus + Bonus Bonus ... ad nauseam. However, if you use the "Defensive Roll" variant in the DMG, your AC changes from round to round: 1d20 + Armor Bonus + etc.


----------



## WingOver (May 12, 2004)

It just occurred to me that it's a lot easier and faster to design rules that are interpreted by humans than by software.  (No duh, I know.   )  But I was going to reply to your new subsystems point by saying the software can be updated to use any new variant rule.  But the human mind can parse a few sentences and understand rule variants in a matter of seconds, but it takes weeks or months to update software to handle the same (unless it had an extremely flexible design), thereby limiting the usefulness of software.



			
				Silveras said:
			
		

> Implementing just the Core Rules is too limiting




I don't agree with this point.  I would happily use software that supported 100% of the SRD correctly.  The core rules contain the majority of the D20 system after all.  I could create a Lycanthrope Medusa Wizard villain with prepared spells adjusted for metamagic feats.  That would make me very happy.

And if I could add other items (prestige classes, spells, feats, etc) that used rules supported by the SRD, this would go a long way toward supporting my campaign overall.


----------



## Silveras (May 12, 2004)

WingOver said:
			
		

> It just occurred to me that it's a lot easier and faster to design rules that are interpreted by humans than by software.  (No duh, I know.   )  But I was going to reply to your new subsystems point by saying the software can be updated to use any new variant rule.  But the human mind can parse a few sentences and understand rule variants in a matter of seconds, but it takes weeks or months to update software to handle the same (unless it had an extremely flexible design), thereby limiting the usefulness of software.




Exactly. Software requires time and effort to update, and those updates must be tested, debugged, and distributed. 



			
				WingOver said:
			
		

> Silveras said:
> 
> 
> 
> ...




I should have stated what I meant more clearly. Supporting just the Core Rules is too limiting to have a viable commercial product (IMHO). A product that supports just the Core is fine for the section of the market that uses only the Core. However, the inability to implement house rules and/or other products rapidly generates frustration. Much depends, of course, on the nature of what you are doing as variants/house rules. 

In your case, it sounds like you would be happy with a tool that implemented the Core Rules only. 

Except... that Lycanthrope Medusa Wizard would only work as an advanced Monster under the Core Rules ... or as a (N)PC of 9th level or higher (6 Monster HD + LA 0 + 1 Wiz level + 2 {assuming afflicted Lycnathrope}). 

We started talking about Character Generators. I fully admit that automating the application of templates to monsters is fairly easy, in comparison. Except you have to either write a little code for each template, or write a LOT of code to be able to read a template and pick out how to apply it. 

I am currently writing an Access-based database application that applies templates to the "stock monster" entries. I am using the "a little code for each Template" method, because, again, I can't predict WHAT people will put into new templates. The Lycanthrope template is a good example.. since you can theoretically choose any animal, it is an "odd" Template in that it requires an additional piece of information: what the animal type is. Very few, if any, other Templates require any additional information; most are just "make these changes".


----------



## andargor (May 12, 2004)

PCGen is seeking user feedback. With all the good input here, why don't you go and fill out the survey?

I have my own beefs with the program, but also things I like, so I filled it out.

From the pcgen Yahoo group:



> Hello PCGen users.
> 
> I'm a User Experience professional who has expressed an interest in assisting with improving the user experience of the PCGen application. I plan to begin with several types of "expert analysis" of the application, looking at the existing user interface and task flow in order to uncover the areas where the existing user experience could be improved.
> 
> ...




Andargor


----------



## Glyfair (May 16, 2004)

WingOver said:
			
		

> Thanks for the reply, Frugal.  So basically the reasons there isn't an uber-generator:
> 
> 1. D20 rules are complex and extremely difficult to put into code.
> 2. It's a lot of work.
> ...




Although this has been touched on, there is a good reason for the 20% of the nightmare rules.  Probably almost no d20 game designer who creates something new thinks "will this be easy to fit into a computer program?"  Things might be easy for a person to check (do I have 3 fire spells?),  but might require significant programming changes to implement.  A game designer isn't going to consider the programming changes, just whether the average gamer can use it.

I know there are a number of things in Unearthed Arcana that I looked at and realized that major programming would be needed to implement in something like E-Tools or PCGen.  At least, if they were to work smoothly (for example, checking to make sure you took the appropriate "bloodline levels" and probably prompting you to remind you they are "due").


----------



## Silveras (May 16, 2004)

Glyfair said:
			
		

> Although this has been touched on, there is a good reason for the 20% of the nightmare rules.  Probably almost no d20 game designer who creates something new thinks "will this be easy to fit into a computer program?"  Things might be easy for a person to check (do I have 3 fire spells?),  but might require significant programming changes to implement.  A game designer isn't going to consider the programming changes, just whether the average gamer can use it.
> 
> I know there are a number of things in Unearthed Arcana that I looked at and realized that major programming would be needed to implement in something like E-Tools or PCGen.  At least, if they were to work smoothly (for example, checking to make sure you took the appropriate "bloodline levels" and probably prompting you to remind you they are "due").




Exactly right. 

Let me be clear, the Core of 3rd Edition is much streamlined over the Core of 1st or 2nd Edition, and it lends itself much more easily to being coded. 

But D&D has always been a "game of exceptions". Everyone does _this_ *except* this class. Everyone is like _this_ *except* race A. The exceptions are what give the characters flavor, and the game designers are constantly looking for new "angles" to approach the standard rules with a feat, class, race, or spell that alters them.


----------



## Spoot (May 25, 2004)

Silveras said:
			
		

> Exactly right.
> 
> Let me be clear, the Core of 3rd Edition is much streamlined over the Core of 1st or 2nd Edition, and it lends itself much more easily to being coded.
> 
> But D&D has always been a "game of exceptions". Everyone does _this_ *except* this class. Everyone is like _this_ *except* race A. The exceptions are what give the characters flavor, and the game designers are constantly looking for new "angles" to approach the standard rules with a feat, class, race, or spell that alters them.




Agreed 100,000%......exceptions are killers.  Along with the massive ruleset.  I'm currently working on a DMHelper program that's based on 2nd Ed AD&D and the exceptions are KILLING me.  Not to mention the massive amount of data to be loaded.  Currently the program clocks at 60,000 lines of C++ code and the sql dataset is at 80,000,000 bytes.  That 80meg doesn't even include magic items yet.  Yikes!

When you think about the massive calculations we do as players to great a character or even calculate AC in 2nd Ed.....it's kinda scary.


----------



## WingOver (May 25, 2004)

Spoot said:
			
		

> When you think about the massive calculations we do as players to great a character or even calculate AC in 2nd Ed.....it's kinda scary.




As a DM that's why I want a character generator that can do everything.  I spend so much time statting up mid-to-high level NPCs and advancing monsters.  That's time better spent working on flavor material for the campaign and adventure.

The human brain is amazing.  It can handle all those rules with no problems (barring ambiguous or contradictory rules).     Now use that brain to develop software to do the same thing.      Good luck with your program.


----------



## Spoot (May 25, 2004)

WingOver said:
			
		

> As a DM that's why I want a character generator that can do everything.  I spend so much time statting up mid-to-high level NPCs and advancing monsters.  That's time better spent working on flavor material for the campaign and adventure.




Amen to that......which is why I started this project.  Well, that and players who keep "losing" experience or treasure sheets.  Or the ever famous, hand me xxx book to look up xxxx spell since I don't have it written on my sheet.   Was driving me bonkers!  So, I starting writing a program to track everything........not thinking about how much work tracking everything would be.    

I've tried a ton of 2nd Ed generators/campaign helping tools, but I found all of them severly limited in some way.  There appear to be some realitively nice ones for D20....but I don't play that.


----------



## Silveras (May 26, 2004)

WingOver said:
			
		

> As a DM that's why I want a character generator that can do everything.  I spend so much time statting up mid-to-high level NPCs and advancing monsters.  That's time better spent working on flavor material for the campaign and adventure.
> 
> The human brain is amazing.  It can handle all those rules with no problems (barring ambiguous or contradictory rules).     Now use that brain to develop software to do the same thing.      Good luck with your program.




If you remove the extensibility question ("No, you can't use a PrC, Feat, Spell, Skill, or Monster that was not already available when...."), it becomes much, much easier. That's why projects like the D&D Core Rules 2.0 CD work; they draw a line and say "This much, and no more". That's also why they are ultimately only right for a few people; most long-lasting games include at least some new material, even if they are the DM's own inventions.


----------



## barsoomcore (May 26, 2004)

I think it would also be quite fair to accuse char-gen program designers of biting off more than they can chew and ending up with nearly unusable programs.

I don't need a program that tracks what feats I am or am not allowed to have. I don't need one that tracks what classes I do or do not fit the requirements for.

I just need to be able to assign skill points quickly, stat up characters and have their bonuses come out right. I need to be able to choose feats and have their impact get added right away.

I DON'T need a "rulebook in a box" -- PC Gen goes WAY overboard in this regard. Just give me a way to specify character stats (preferably via point buy at a level I can set), and track the consequences of the classes I take insofar as BAB, saves, skill points, spells, feats and so on increase per level. Then let me assign my skill points (tracking class skills per class, sure), and keep calculating my modifiers as I choose feats. That's it.

Don't tell me I'm not qualified for some class because I have the wrong alignment, or worry about what feats I'm allowed to take. Just make the math easier.

I'm a DM. I stat up maybe five, maybe twenty characters PER GAME. I don't have the time or the inclination to worry about jumping through hoops and doing everything in just the right order -- AND I don't want to have to browse through a dozen character sheet options just to get a stat block. I'm not going to keep these characters -- I don't ever use the Save feature. Just give me my Fighter 10/Rogue 5 with a +3 dagger whip in magazine stat block format and GIMME NOW!


----------



## kirinke (May 26, 2004)

if you just want something simple... i may be able to help you
this is a 3.5 ruleset character generator. now, it only has the core classes, minus the psionic class, but it is pretty good.
http://slicer69.tripod.com/dnd/dnd.htm

here is a monster stat calculator. just input a few basic numbers and it will stat out your monster for you with reasonable accuracy.
http://personal.nbnet.nb.ca/shadows/Handbook/MonsterCalc.html

hope it helps.


----------



## BarakO (May 26, 2004)

barsoomcore said:
			
		

> I'm a DM. I stat up maybe five, maybe twenty characters PER GAME. I don't have the time or the inclination to worry about jumping through hoops and doing everything in just the right order -- AND I don't want to have to browse through a dozen character sheet options just to get a stat block. I'm not going to keep these characters -- I don't ever use the Save feature. Just give me my Fighter 10/Rogue 5 with a +3 dagger whip in magazine stat block format and GIMME NOW!




Well, you could just delete all the character sheets you don't want to use and leave just the stat block.  

Now, from *my* perspective as a DM, I *WANT* all that stuff that you don't want.  I let my players create their character using a program (most use PCGen but one uses E-Tools), and I certainly don't want it to let them add stuff willy-nilly.  I have to check them over enough just to make sure they added what I gave them and not what they *thought* I gave them (*wry smile*) without a program that doesn't discourage incorrect additions.

Of course, I think we're talking about two different things here.. you want a DM's quick and dirty tool, and I want a character generator/maintainer that takes care of  most of the character creation rules so I don't have to.


----------



## WingOver (May 26, 2004)

Silveras said:
			
		

> If you remove the extensibility question ("No, you can't use a PrC, Feat, Spell, Skill, or Monster that was not already available when...."), it becomes much, much easier. That's why projects like the D&D Core Rules 2.0 CD work; they draw a line and say "This much, and no more". That's also why they are ultimately only right for a few people; most long-lasting games include at least some new material, even if they are the DM's own inventions.




Earlier you talked about "exceptions" which I assume you meant (for example):

Humans may pick "any" language as a bonus language _except_ secret languages such as "druidic".  I can see how that could become problematic, especially later if the user was to add more normal/secret languages to his campaign.

The exception problem doesn't sound the same as the extensibility problem.  Can you give a specific example of the extensibility problem?


----------



## WingOver (May 26, 2004)

BarakO said:
			
		

> Of course, I think we're talking about two different things here.. you want a DM's quick and dirty tool, and I want a character generator/maintainer that takes care of  most of the character creation rules so I don't have to.




I don't see why a properly designed character generator couldn't fulfill both roles.  Enforcing prerequisites could be optional and this would suit users like barsoomcore.  And users such as you (and me ) would keep those prereqs on.

And I agree, you could make a case for having a character generator with 2 modes: one that builds a fully statted NPC at random for busy DMs like barsoomcore, and one that has level-by-level build functionality for players and nitpicky DMs.


----------



## Silveras (May 26, 2004)

WingOver said:
			
		

> Earlier you talked about "exceptions" which I assume you meant (for example):
> 
> Humans may pick "any" language as a bonus language _except_ secret languages such as "druidic".  I can see how that could become problematic, especially later if the user was to add more normal/secret languages to his campaign.
> 
> The exception problem doesn't sound the same as the extensibility problem.  Can you give a specific example of the extensibility problem?




They are related; often, the extensions contain NEW exceptions. 

Example: In the Core rules, may Prestige Classes add to the spellcasting ability of a "Previous Spellcasting Class". Others have their own progressions, which are separate no matter what you had before. 

Someone coding a tool would look at that and say, "Ok, I need to make the tool able to recognize spellcasting classes and be able to allow you to specify which one gets advanced when there's a choice."

Then, along comes the 3.5 revisions, and the Mystic Theurge. Wait a minute ! TWO classes get improved ? It is an EXCEPTION to the normal "set" of rules. 

With a little foresight, the coder *might* be able to predict "It is not too unreasonable that some PrC might boost a specific prior class, or grant it if you did not already have it, I suppose. So I should write in stuff to handle that. "

So, Complete Warrior's "Stalker of Kharrash" PrC is handled (gives +1 Ranger spellcasting per level). 

Now, some 3.0 expansions gave 1/2 spellcaster advancement. 

But I don't think most people would have predicted that Complete Divine would add classes that give two different versions of 8 levels out of 10 (+1, +1, +1, +1, NO, +1, +1, +1, +1, NO as Seeker of the Misty Isle, or +1, +1, +1, NO, +1, +1, +1. NO, +1, +1 as Sacred Fist), an arcane class with 6 out of 10 (Rainbow Servant), another Divine class with 7 out of 10 (Hospitaler), and another with 8 out of 13 (Void Disciple). 

These are exceptions that don't fit any prior patterns. Under the original rules, giving 10-for-10 would be normal and the Eldritch Knight's 9-for-10 a singular exception. Giving #-for-10 would be fine, if the same number had the same pattern, but the two 8-for-10 progressions don't, and the 13-level PrC is just "waaay out in left field" as far as exceptions go. 

Most programs use internal rules to make sure the data gets in correctly. PrCs had 5 or 10 levels in the core rules, not 13. Trying to add "Level 11" to a Prestige Class would, in user-friendly software, trigger an error message, because up until the release of this class, it WOULD be a mistake (the individual DM's creations excluded). 

Other Exceptions:
Rule: Only characters with 4 levels of Fighter can select the Weapon Specialization feat. 
Exception: Favored Soul gets the feat for free at 12th level. 

Based on that, one could write a tool that allows only characters with 4 levels of Fighter to have the Weapon Specialization feat. Trying to add the Favored Soul class would require more than just listing the levels, though; you'd need some way *around* the built-in limitation so they could get Weapon Specialization at 12th.


----------



## Silveras (May 26, 2004)

BarakO said:
			
		

> Now, from *my* perspective as a DM, I *WANT* all that stuff that you don't want.  I let my players create their character using a program (most use PCGen but one uses E-Tools), and I certainly don't want it to let them add stuff willy-nilly.  I have to check them over enough just to make sure they added what I gave them and not what they *thought* I gave them (*wry smile*) without a program that doesn't discourage incorrect additions.




And *that* illustrates why "one size fits all" does not work. 

Maintaining and supporting software can be very labor-intensive. A screen that seemed obvious to the focus groups and the developers can sometimes leave the "real" user looking at it and saying "what do I do ?" That often means a call to customer service. 

Trying to maintain 2 different versions is very hard. Did you remember to add the same classes to both ? Was it someone else's job ? Did s/he do it right ? If it was *your* job, did you remember what you needed to do differently from one program to the other ? If you think the rules debates here are intense, just imagine what happens when two programmers differ on how to read the same rule. 

Barsoomcore and BarakO together illustrate another issue. "Character generator" means something a little different to each. If you write a "character generator" that does not automatically create a character, it is not really a "generator", is it ? It is a "record keeper" or "tracker", but not a "generator".


----------



## Silveras (May 26, 2004)

barsoomcore said:
			
		

> I think it would also be quite fair to accuse char-gen program designers of biting off more than they can chew and ending up with nearly unusable programs.
> 
> I don't need a program that tracks what feats I am or am not allowed to have. I don't need one that tracks what classes I do or do not fit the requirements for.




Actually, I find that my own tools work best if I don't try to make them enforce eligibility rules. Why ? Because most "house rules" are relaxations of those, anyway. It becomes much easier to write a tool that just records the feats or classes that I tell it to, and let me worry about whether they are right or not. Of course, I am not a new player whose DM wanted a tool to help guide him/her, am I ?



			
				barsoomcore said:
			
		

> I just need to be able to assign skill points quickly, stat up characters and have their bonuses come out right. I need to be able to choose feats and have their impact get added right away.
> 
> 
> I DON'T need a "rulebook in a box"




I submit that what you are asking for actually does require a "rulebook in a box". 

The program has to "know" that some feats affect skills. It has to "know" which feats affect which skills. It has to "know" there are skill synergies. It has to "know" that Jump gets a bonus or penalty based on the creature's base speed. It has to "know" that Hide gets a bonus or penalty based on size. It has to "know" that races get bonuses on some skills. It has to "know" that certain races have certain base speeds, and are certain sizes. It has to "know" to combine all those elements to get the final skill modifier. It also has to "know" which skills are class skills, and which are cross class skills, for each class. It has to "know" the total character level +3 is the cap for all class skills, and half that is the cap for cross-class skills. 



			
				barsoomcore said:
			
		

> I DON'T need a "rulebook in a box" -- PC Gen goes WAY overboard in this regard. Just give me a way to specify character stats (preferably via point buy at a level I can set), and track the consequences of the classes I take insofar as BAB, saves, skill points, spells, feats and so on increase per level. Then let me assign my skill points (tracking class skills per class, sure), and keep calculating my modifiers as I choose feats. That's it.
> 
> Don't tell me I'm not qualified for some class because I have the wrong alignment, or worry about what feats I'm allowed to take. Just make the math easier.




Yep. You want a tool custom-tailored to your style. So do I; that's why I write my own instead of using PCGen. And that's why very few are really 100% pleased with the ones that are available; they're all "someone else's idea of what's perfect".


----------



## Silveras (May 26, 2004)

WingOver said:
			
		

> I don't see why a properly designed character generator couldn't fulfill both roles.  Enforcing prerequisites could be optional and this would suit users like barsoomcore.  And users such as you (and me ) would keep those prereqs on.
> 
> And I agree, you could make a case for having a character generator with 2 modes: one that builds a fully statted NPC at random for busy DMs like barsoomcore, and one that has level-by-level build functionality for players and nitpicky DMs.




Uhm... No. How many "enforcement" options are there ? 2 ? or 20 ? Which things do *you* want to enforce ? Those kinds of things make the tools incredibly more difficult to write. You *do* want something this decade, right ?

Let's say you only have 2 modes. The program has to check its settings to see if it is supposed to enforce requirements. How often do you check ? Can the user change his/her mind after starting a character ? If so, you have to check pretty much every time s/he changes something. 

Let's say you have more than 2 settings.. 3.. maybe Feats get checked but PrCs don't. That pretty much doubles the workload of writing the code, and certainly doubles any testing that gets done. 4 settings ? Double again. 5 ? You get the picture.


----------



## WingOver (May 26, 2004)

Silveras said:
			
		

> Uhm... No. How many "enforcement" options are there ? 2 ? or 20 ? Which things do *you* want to enforce ? Those kinds of things make the tools incredibly more difficult to write. You *do* want something this decade, right ?




Actually I was addressing the prereq restrictions specifically (for feats and prestige classes).  Depending on how the software is designed I suppose prereqs could also apply to weapons/equipment or whatever.  The solution perhaps is to allow prereq overrides on the feats/classes, not as a global setting.  



			
				Silveras said:
			
		

> Let's say you only have 2 modes. The program has to check its settings to see if it is supposed to enforce requirements. How often do you check ? Can the user change his/her mind after starting a character ? If so, you have to check pretty much every time s/he changes something.




Continuing with feat-level prereq overrides, couldn't you have a flag or something that indicates whether the feat prereq was overridden?  This should be visible to the user upon load.  And when the character changes, then yes, it would force another check throughout the entire character to see if prereqs are valid.



			
				Silveras said:
			
		

> Let's say you have more than 2 settings.. 3.. maybe Feats get checked but PrCs don't. That pretty much doubles the workload of writing the code, and certainly doubles any testing that gets done. 4 settings ? Double again. 5 ? You get the picture.




As I said at the top of the post, you could have 1 setting as long as it was on the feat/class itself.

I know its easy enough to talk about, and the actual software design and implementation is incredibly difficult.  But it can't be insurmountable.


----------



## Joshua Randall (May 26, 2004)

I'm with you, *barsoomcore*. I just want to be able to add skills and feats and have the math come out correct. PCGen can't even do that consistently. (No, really: it can't.)

A challenge for you programmers: build a character generator (or tracker) using only the subset of the SRD 3.5 that appears in the PH; i.e., not including any PrC's or monsters-as-characters or whatnot. Now, can your generator make mathematically perfect, complex PCs with a dozen different weapon feats, and have the BAB come out correct? When you can do that, you can sell me your product.


----------



## WingOver (May 26, 2004)

Silveras said:
			
		

> They are related; often, the extensions contain NEW exceptions.
> 
> Example: In the Core rules, may Prestige Classes add to the spellcasting ability of a "Previous Spellcasting Class". Others have their own progressions, which are separate no matter what you had before.
> 
> ...




Ok, I see what you're saying.  Another example is in the fairly excellent Unearthed Arcana:
Human Paragon gives you +1 casterlevel to _any_ previous spellcasting class.  When I saw that the first time I thought it was pretty cool, and it was different because other classes before it always specified "+1 arcane" or "+1 divine" spellcasting class.

A character generator built on the assumption that classes will always provide +1 arcane, +1 divine, or +1 to the current class wouldn't have been able to handle this rule extension.

Yeah, I can see how this could end up being a problem.   :\   On the other hand, if the software allowed custom addition of classes, you could create a divine and arcane version of the Human Paragon and at least have a work around.


----------



## Spoot (May 26, 2004)

Joshua Randall said:
			
		

> A challenge for you programmers: build a character generator (or tracker) using only the subset of the SRD 3.5 that appears in the PH; i.e., not including any PrC's or monsters-as-characters or whatnot. Now, can your generator make mathematically perfect, complex PCs with a dozen different weapon feats, and have the BAB come out correct? When you can do that, you can sell me your product.




Hmmm....a challenge.    Too bad I have to finish up the other gaming systems I'm working on first.........otherwise I'll never get my stupid program done.


----------



## Spoot (May 26, 2004)

WingOver said:
			
		

> Yeah, I can see how this could end up being a problem.   :\   On the other hand, if the software allowed custom addition of classes, you could create a divine and arcane version of the Human Paragon and at least have a work around.




Wait a second.....most/all D20 software won't allow addition of custom classes?  What about spells, weapons, armour, profs, etc........if you can't add new ones.....doens't that kinda defeat the purpose of having the software?


----------



## WingOver (May 26, 2004)

Spoot said:
			
		

> Wait a second.....most/all D20 software won't allow addition of custom classes?  What about spells, weapons, armour, profs, etc........if you can't add new ones.....doens't that kinda defeat the purpose of having the software?




I can't speak for all the software out there... I know e-tools and pcgen have the capability of adding new stuff.  But I believe there are some limitations inherent in the software (e-tools has some hardcoded values that affects various calculations.)  To me, the point is moot anyway because I want all calculations to be rock-solid before having the capability of adding new items.


----------



## andargor (May 26, 2004)

Hmm, I'm going to go out on a limb here...

The people here seem to be quite passionate as much about what's in a character "generator" (note the quotes, I don't want to discuss semantics  ), as to what approach should be used.

I, too, find some of the limitations of PCGen frustrating. Don't get me wrong, a great deal of effort has gone into it, and I do appreciate it. The greatest wealth of PCGen is the sheer quantity of available data and the community to support it. 

So I too decided to code my own program.

I lurk in d20-XML and PCGen-XML, since I believe that XML will be the way to go instead of proprietary languages like LST. One approach that has been discussed is using XML to describe "objects" that are added to a character. So a "level" is essentially a container for several "objects": bonuses to class level, bonus to BAB, bonus to caster level, adding special abilities, bonuses to saves, etc. are all objects.

I've coded a little demo from my "unfinished" program that demonstrates this. It's not usable or pretty, but it does show what I mean. You can get it at:

http://www.andargor.com/files/panther-demo.zip

I make no promises on when this will be available  I'm going to release that engine under GNU GPL, so no "customer" pressure, please. 

I'd like to have your comments!

Andargor


----------



## Silveras (May 27, 2004)

WingOver said:
			
		

> Actually I was addressing the prereq restrictions specifically (for feats and prestige classes).  Depending on how the software is designed I suppose prereqs could also apply to weapons/equipment or whatever.  The solution perhaps is to allow prereq overrides on the feats/classes, not as a global setting.
> 
> Continuing with feat-level prereq overrides, couldn't you have a flag or something that indicates whether the feat prereq was overridden?  This should be visible to the user upon load.  And when the character changes, then yes, it would force another check throughout the entire character to see if prereqs are valid.
> 
> ...




By virtue of having the switch in the first place, you have to write additional code to check how it is set every time you make a change. Either way, the program still has to check "Do I need to validate the requirements for this ?"

Putting a flag on each Feat or Class makes the problem worse. Now, you risk having some contradictory situations. A CE PC that is advancing as both Blackguard and Paladin, because the Paladin is set to "not validate" but the Blackguard is set to "validate", or a character with Weapon Specialization but not Weapon Focus who still cannot take a certain PrC because the PrC tries to validate the requirements.


----------



## Silveras (May 27, 2004)

Joshua Randall said:
			
		

> I'm with you, *barsoomcore*. I just want to be able to add skills and feats and have the math come out correct. PCGen can't even do that consistently. (No, really: it can't.)
> 
> A challenge for you programmers: build a character generator (or tracker) using only the subset of the SRD 3.5 that appears in the PH; i.e., not including any PrC's or monsters-as-characters or whatnot. Now, can your generator make mathematically perfect, complex PCs with a dozen different weapon feats, and have the BAB come out correct? When you can do that, you can sell me your product.




The problem is, you might be the only customer. There is no business model in that challenge.

[Edit: That's why the most successful tools are: 

simple
tightly focused 
hobby projects instead of business projects
]


----------



## Silveras (May 27, 2004)

WingOver said:
			
		

> Yeah, I can see how this could end up being a problem.   :\   On the other hand, if the software allowed custom addition of classes, you could create a divine and arcane version of the Human Paragon and at least have a work around.




Well, except that computers are terribly literate. As far as the computer is concerned, the class called "Human Paragon with Divine progression" is not the same as "Human Paragon with Arcane progression". So, if you were building a Human Paragon Mystic Theurge, you could not take 3 levels of Human Paragon to get 1 each Divine and Arcane; you would need to take 2 levels of "Human Paragon with Divine" and 2 levels of "Human Paragon with Arcane" to get the same spellcasting -- and that would be soooo wrong on so many other levels (BAB, Save bonuses, etc.)

Custom addition of new material is exactly where the issue comes from. If you limit the software to "Only the PHB Core" as Joshua Randall suggested, _and remove the possibility of ever adding anything else_, you can now write perfectly operating code, and work on making it quicker and more efficient. 

However, most games want to add something, even if only a free Eschew Materials feat for the Sorcerer.


----------



## Silveras (May 27, 2004)

Spoot said:
			
		

> Wait a second.....most/all D20 software won't allow addition of custom classes?  What about spells, weapons, armour, profs, etc........if you can't add new ones.....doens't that kinda defeat the purpose of having the software?




I think most do allow it, but that's where a lot of the instability and errors come from - trying to build an engine flexible enough to do that. 

And, yes, not having such an ability makes the software worthless to most of the market. It is "yesterday's tools", in that case.


----------



## Silveras (May 27, 2004)

andargor said:
			
		

> Hmm, I'm going to go out on a limb here...
> 
> The people here seem to be quite passionate as much about what's in a character "generator" (note the quotes, I don't want to discuss semantics  ), as to what approach should be used.
> 
> ...




First off, more power to ya ! 

Second, though, XML is not a "language" properly. You can't write a software tool using XML that can add 1+1. It does not "do" anything; it is a "data description language", not a "data modification language" (to use database terms). I am not as familiar with XSL, so perhaps XSL can show "1+1" as "2", but that's not the kind of programming that gets you far in building a character tool. 

The value of XML is its ability to self-describe data. That makes data more portable between systems. PCGen and E-tools, for example, could import each other's saved characters if they were saved in XML. Or, both tools could import the same XML-format list of new spells. 

However, behind that wondrous ability is a requirement. 

The parties exchanging the data have to come to some agreements as to what data is exchanged. Yes, XML is self-describing. But it does so using agreed-on terms. Without agreement, there is no "magic" in XML. That was the point of a previous thread, which I have long-since lost track of. 

Still, I will be curious to see how far you get with it. 

And, before I come off sounding too negative, here's a comment I have shared with my friends from time to time: "There is little I have been asked to code in the business world that is more complicated than the stuff I have worked on for gaming." Writing gaming tools is an excellent way to sharpen programming skills.


----------



## WingOver (May 27, 2004)

Silveras... "always with you it cannot be done."      Just kidding.

Why do you crush my dreams of seeing the perfect character generator?


----------



## Mynex (May 27, 2004)

There's been some comment on 'over rides' for feat/PrC requirements.

Have you even looked at the Preferences menu of PCGen?

I ask because this feature is present.  Yes, there are settings to disable feat/PrC requirements, to ignore max skill ranks, to ignore cross class skill points, etc...

I'd recommend taking another look at this area of the program.

Is PCGen perfect? Nope.  Humans code it, humans make errors, that's life.

As for a 'perfect' character generator to fullfill every single person's needs/wants/desires?  Never happen.  Why?  Again, Humans.

Everyone wants/needs/desires something different.

So what's a coder to do?  Code the most flexibility possible, trying to guage/guess all the possible permutations, and make it happen.

No _one_ program is ever going to satisfy everyone.  It's not a reality that'll ever happen.  Someone will not like the 'visual layout' of This program, but like its data content... someone else will love the 'visual layout' and not want all the data content... someone else loves both, someone else hates both... etc, ad naseum...

So coders do the best they can, the best they know how to.  And this drives other people to make their own programs, which drives the previous coders to make adjustments in their program... wash, rinse, repeat.

No, there never will be a 'Perfect for everyone' character generator.  All we can do, those of us that work on them, is try to allow for as much variation as possible and tweak things that are/become broken.

That's the reality of the situation folks.


----------



## Spoot (May 27, 2004)

Silveras said:
			
		

> And, before I come off sounding too negative, here's a comment I have shared with my friends from time to time: "There is little I have been asked to code in the business world that is more complicated than the stuff I have worked on for gaming." Writing gaming tools is an excellent way to sharpen programming skills.




This is so true.  The software I'm developing for gaming has taken a life of it's own (after killing mine I think) and gives new meaning to the term "feature creep".  

One of the most difficult projects I've worked on in the business world was accruing interest on child support.  This seems like a cakewalk at first.....then you add in all the state/federal laws and all the exceptions and you'll head will start spinning like in The Exorcist.  And yet, this had less loopholes than the thing I'm coding now.  :\


----------



## andargor (May 27, 2004)

Silveras said:
			
		

> First off, more power to ya !
> Second, though, XML is not a "language" properly.




Erm, I never said it was. 

My engine uses C++ for XML manipulation and provides a Javascript environment. The JS code implements game system logic, and uses the XML "objects" (note the quotes) to build a character.



			
				Silveras said:
			
		

> The value of XML is its ability to self-describe data. That makes data more portable between systems. PCGen and E-tools, for example, could import each other's saved characters if they were saved in XML. Or, both tools could import the same XML-format list of new spells.
> 
> However, behind that wondrous ability is a requirement.
> 
> The parties exchanging the data have to come to some agreements as to what data is exchanged. Yes, XML is self-describing. But it does so using agreed-on terms. Without agreement, there is no "magic" in XML. That was the point of a previous thread, which I have long-since lost track of.




Yes, an oft debated topic. However, with XSL this is facilitated as long as there is enough detail in the XML. An altogether different issue than programming approaches.





			
				Silveras said:
			
		

> Still, I will be curious to see how far you get with it.




Me too, isn't this fun? 

Andargor


----------



## Zappo (May 27, 2004)

Joshua Randall said:
			
		

> I'm with you, *barsoomcore*. I just want to be able to add skills and feats and have the math come out correct. PCGen can't even do that consistently. (No, really: it can't.)
> 
> A challenge for you programmers: build a character generator (or tracker) using only the subset of the SRD 3.5 that appears in the PH; i.e., not including any PrC's or monsters-as-characters or whatnot. Now, can your generator make mathematically perfect, complex PCs with a dozen different weapon feats, and have the BAB come out correct? When you can do that, you can sell me your product.



I tried that, back in 3.0. I needed a way to create characters and manage them during the game, and I wanted all the boring stuff to be made by the software. C++, heavily object-oriented, worked on Linux. Every game object (class, feat, monster, stat, whatever) had its own class, and lots of inheritance was involved (eg, Item -> Weapon -> Ranged Weapon -> Light Crossbow). Every object could send or receive messages, and the effect of a user action would cascade through the character to change everything that needs to be changed.

 I could click on Barbarian Rage and the code for the Rage would be called, which would tell Constitution "go up by two". Constitution would shout out "I went up by two!", HP would hear it and adjust itself, and so on. Very easy to debug, too; just trace the messages.

 Advantage: I could create a half-fiend vampiric ogre ranger/barbarian dual-wielding a bastard sword and a +2 keen dagger, with Weapon Finesse, raging, and read the correct attacks and damage for each attack on the screen. Then terminate the rage and read the new correct attacks and damage, including the fatigue effect. Then terminate the fatigue and read the right stuff again. Then unequip the weapons and read the claw/bite attacks. It even did monks with shuriken, and you know the infernal way shuriken work in 3.0. Pretty good I think. I had all the PHB and a bunch of monsters and templates before I got tired of it (minus the actual effects of spells, though the infrastructure was there).

_Big_ disadvantage: can't add stuff without recompiling. Adding something trivial such as a weapon with no special rules, or a feat with no mechanical effects, is as easy as copying/pasting a single line in a source file and changing the name - the logic would be inherited by parent classes. But complex stuff, eh, you must know C++ and the program's message architecture.

 What can I say - back then, I was already good at coding but I hadn't done much software engineering. The message-based architecture was a good idea, as was the inheritance, but lots of other details I'm a bit ashamed of (reason for which I won't release the program). The possibility of adding code to any aspect of any game object means ultimate flexibility - but being _forced_ to do it is bad, not counting the fact that integrating different versions would be a problem.

 Maybe a hybrid approach would work better: define game objects in simple, limited XML, with the option to also give them an actual class. Simple stuff like "it's a melee weapon dealing 1d8 piercing damage" can be in the XML (the Weapon base class will interpret this), complex stuff like "you can forfeit an attack to gain a +2 dodge bonus to AC" goes in the code. The class could be stored in a DLL; the program would read the class name, load the code, and start communicating with it via the well-defined message system. This way, you could make "packages" for a book, containing an XML file and a DLL; users would simply download them and plop them in the program dir, and the new stuff would be available in the program and even interact correctly with other packages written by other people (as correctly as the books themselves do anyway... which sometimes isn't much). Any user would be able to add simple stuff, while developers and other "power users" willing to write a bit of C++ and read the message specifications could make the complex, active things. Other programs could just read the XML and make what they want with the data it contains, or link to the DLLs and start swapping messages. Saving/loading could be conceptually similar, too.

 Anyway, I won't make this. I estimate around one year of hard work to fully define the message system and XML, build the program, make the PHB package, and test them. I don't have that kind of free time any more. Out of academic interest, what do you professionals think about this architecture?


----------



## barsoomcore (May 27, 2004)

Mynex said:
			
		

> There's been some comment on 'over rides' for feat/PrC requirements.
> 
> Have you even looked at the Preferences menu of PCGen?
> 
> I ask because this feature is present.  Yes, there are settings to disable feat/PrC requirements, to ignore max skill ranks, to ignore cross class skill points, etc...



You miss my point, Mynex. I'm not saying that having such features is bad in and of itself. I'm saying that the fact that PCGen includes such complex features goes a long way to explaining why other elements of the program like its interface, its reliability and its performance are so awful the thing is almost completely unusable.

If the programmers had taken on a smaller task, and then worried about polishing the product, the usability would be so much better than it currently is it would hardly be recognizable.

Of course, they didn't, because they're programmers and want to do the FUN stuff. 


			
				Mynex said:
			
		

> As for a 'perfect' character generator to fullfill every single person's needs/wants/desires?  Never happen.  Why?  Again, Humans.
> 
> Everyone wants/needs/desires something different.



I don't want the "perfect" character generator to fulfill every single person's needs/wants/desires. I want one that fulfills MY needs/wants/desires. Those are very, very different ideas.

There is no 'perfect' tool for everyone in ANY field. Even hammers are customized for different users. But there are 'perfect' tools for specific user groups. You betcha.


			
				Mynex said:
			
		

> So what's a coder to do?  Code the most flexibility possible, trying to guage/guess all the possible permutations, and make it happen.



And that's how you end up with huge monsters that are never finished and never end up satisfying ANYONE's needs.

Far better to pick ONE permutation, and do it right. Decide on some user group you want to satisfy and do everything you can to satisfy them, forgetting about everyone else. PCGen would be a fine tool if what you wanted was the ability to ignore your rulebooks and just create characters, develop them over time and be confident that they were perfectly in accordance with the rules. I say would be because it doesn't actually do that, but that seems to be the idea behind the product. Which I get as being a reasonably sensible goal. It just doesn't happen to describe my needs in any way.

PCGen doesn't meet my needs. None of this is to dog on the PCGen team, who have in all honesty accomplished a very great deal. The thread is a discussion on character generators, and I posted my thoughts on what I would like. 


			
				Mynex said:
			
		

> No, there never will be a 'Perfect for everyone' character generator. All we can do, those of us that work on them, is try to allow for as much variation as possible and tweak things that are/become broken.
> 
> That's the reality of the situation folks.



Nonsense. We who work on them have a different, and I submit better, path to follow. That is to design kick-ass tools and build them right. Determine a specific goal for your product and design it to do just that. Focus your design -- don't include customizability unless it serves the goal. Finding the right point of focus is really the critical job in software design -- once you've figured out exactly what the product is supposed to DO, building it is trivial. Most software projects fail because they never figure out what they're trying to do, not because what they're trying to do is too complicated.

There's a variety of tools already on the market, because different developers have identified different focus points they want their products to address. Most of these tools are, like PCGen, pretty uncertain of what that point of focus actually is, and suffer because of it. As time goes on and the "RPG Software" market matures, these tools will more clearly identify what they're trying to do (or new tools, with better focus, will emerge) and I'll get my "Busy DM Char Gen" tool.

Or I'll write it myself. I already wrote a "Busy GM Monster Stat Block Maker" (available (for Macintosh only) at Konfabulator), and am planning my "Busy GM Campaign Organizer" to follow. I'm sure hoping somebody ELSE will create a "Busy GM Char Gen" tool because if I have to do it, I'll be an old man by the time it gets done.


----------



## andargor (May 27, 2004)

Zappo said:
			
		

> Maybe a hybrid approach would work better: define game objects in simple, limited XML, with the option to also give them an actual class. Simple stuff like "it's a melee weapon dealing 1d8 piercing damage" can be in the XML (the Weapon base class will interpret this), complex stuff like "you can forfeit an attack to gain a +2 dodge bonus to AC" goes in the code.






			
				Zappo said:
			
		

> Anyway, I won't make this. I estimate around one year of hard work to fully define the message system and XML, build the program, make the PHB package, and test them. I don't have that kind of free time any more. Out of academic interest, what do you professionals think about this architecture?




Conceptually, I totally agree with you. On the implementation level, I still believe "game system" code should be user-modifiable.

A lot of games use this approach (Dungeon Siege comes to mind) where the user can script in new objects and behavior. I looked around for a long time for a good scripting language, and Javascript seems to be the winner. Take a look at my measly attempt (link in my second-to-last post), and tell me what you think. 

Note that I have implemented objects in a "verbose" manner in XML (and loaded by the user-defined functions into a C++ "standard engine"). But this will be changed to a hierarchy of objects (e.g.: Weapon -> Longsword) akin to classes. So "inheritance" is possible. 

Andargor


----------



## Silveras (May 27, 2004)

WingOver said:
			
		

> Silveras... "always with you it cannot be done."      Just kidding.
> 
> Why do you crush my dreams of seeing the perfect character generator?




I am a realist. What can I say ? 

Professionally, my role usually becomes "We can't do that, but here's what we *can* do..."

Note that I am not saying a tool ideal for your uses can't be done; I'm just saying that it can't be done as a generic tool to please a large enough consumer base.


----------



## Joshua Randall (May 27, 2004)

Again, I am in almost complete agreement with *barsoomcore*. PCGen is a mess because it has no focus and tries to do too much. My 'programmer's challenge' (build a generator than can perfectly handle just the PH core rules) is, in my opinion, where PCGen should focus it energies. If that means blowing away the existing code and starting from scratch, then so be it. Because right now there are so many nonstandard d20 products in there that god knows what works and what doesn't.

As a lazy DM (again like barsoomcore), I just want to be able to create NPCs quickly and accurately. I am even willing to sacrifice some of the core rules if they are too confusing to implement -- e.g. sorcerers who always polymorph themselves into green hags or wacky stuff like that. But I sure as hell better be able to build a 17th level half-gnome/half-fiend sorcerer to being with, and have his spells/day come out correct.

Obviously, people will pay for D&D computer tools -- look at Campaign Cartographer or e-Tools (the new version, not the horrible horrible old version). But I have yet to find a character generator that was worth my money... because I have different requirement than what's out there.


----------



## WingOver (May 27, 2004)

Silveras said:
			
		

> Professionally, my role usually becomes "We can't do that, but here's what we *can* do..."




So what is your profession (if you don't mind me asking)?


----------



## Zappo (May 27, 2004)

andargor, I've taken a look at your program. I agree that making the code javascript is better than something you need a compiler for. I've just taken a quick look, would you explain me a couple of things?

         <object>
             <category>race</category>
             <name>Elf Size</name>
             <value>Medium</value>
         </object>

 If I've understood correctly, this is a conceptual "object" which is attached to the "Elf" container. Isn't there a lot of redundancy here? What's the use of the <category> tag? Also, how is this size connected to the stuff Size does (modifiers to hit, to AC, to Hide, to carrying)?


----------



## soulcatcher (May 27, 2004)

barsoomcore said:
			
		

> You miss my point, Mynex. I'm not saying that having such features is bad in and of itself. I'm saying that the fact that PCGen includes such complex features goes a long way to explaining why other elements of the program like its interface, its reliability and its performance are so awful the thing is almost completely unusable.
> 
> If the programmers had taken on a smaller task, and then worried about polishing the product, the usability would be so much better than it currently is it would hardly be recognizable.
> 
> Of course, they didn't, because they're programmers and want to do the FUN stuff.




Thing is, you *asked* for something that lets you skill up a character fast, and add feats and so on without worrying about the app preventing you from doing this because of various rules.  You *can* do that in pcgen.  That was mynex's point.  We do have features that support you beign able to ignore prerequisites if you don't want that level of hand holding.



			
				barsoomcore said:
			
		

> I just need to be able to assign skill points quickly, stat up characters and have their bonuses come out right. I need to be able to choose feats and have their impact get added right away.
> 
> I DON'T need a "rulebook in a box" -- PC Gen goes WAY overboard in this regard. Just give me a way to specify character stats (preferably via point buy at a level I can set), and track the consequences of the classes I take insofar as BAB, saves, skill points, spells, feats and so on increase per level. Then let me assign my skill points (tracking class skills per class, sure), and keep calculating my modifiers as I choose feats. That's it.




PCGen does solve this problem.  Now, does it potentially have bugs in it's calculation? yes.  I, along with a bunch of my peeps are there to solve that.  and really, the production releases are pretty damn solid.  Do people find bugs in the RSRD? yes.  any anyone honestly expect that we can predict every situation? no.  remember, 5.6 (I think) was the first release with RSRD support - to expect it top be perfect, even if we didn't have other sources is kind of unreasonable, if not downright impossible.  For software of the magnitude of accuratly supporting the RSRD to be bug free in it's first release just doesn't happen - that's the reality of software.

As far as the call for pcgen to dump everything but RSRD, you have a problem there, because for me and many of the other coders, that makes pcgen worse then useless.  Not a single game I am in uses even an unmodified RSRD,  not to mention multiple external sources.  If pcgen didn't suppor the usage of other sources, I know for a fact I, along with probably half the programming staff wouldn't be working on it.  Don't take this as a rebuke, but it's just a simple fact - who is going to work on software that they don't get paid for that is utterly useless to them?

There are plenty of apps out there that take a stab at the simple, RSRD only problem domain.  PCGen was created to solve a different, but still very specifi problem domain.  The creation of a character generator that can work with the sources people actually play the game with.   Is the RSRD important?  damn straight - but it's only a *part* of the problem domain, not the entirity of it.

That all being said, I have been put in charge of developing a completly new, simple UI for pcgen for the 6.0 release, so we *do* recognize that pcgen needs to be easier to use, and there is activity on that front - but this stuff is not fast to develop.......

What I ultimatly would like to see is this: PCGen to continue it's support of generating characters for PCs with a wide variety of rules.  Some other app (or a cut down interface for pcgen, or a module for GMGen) be created that works *with* us to make something compatable to quickly create npcs and stat up enemies - that are still usable in the PCGen framework, so that when the enemy needs to be fleshed out (cause the became important for some reason) it can be done with the heavyweight app.

For all y'all doing external apps that meet a different problem domain, have you considered working with us?  I know for a fact that the pcgen project can be very open with people who are creating open source apps that are compatible (because that is how GMGen started, before it got rolled into PCGen).  Hell, many things can easily be implemented as GMGen plugins, including entuire new programs - that can run on their own, or execute inside pcgen when needed.

Note, on a poll of pcgen users, the vast majority complained that we don't have enough (new) sources.  Bug free RSRD support was second.  (If I recall correctly, it's been a while) The users spoke, and we are trying to meet those needs.  But we *do* ask, because we *do* want to know.

Devon Jones
PCGen BoD
GMGen Silverback


----------



## Silveras (May 27, 2004)

WingOver said:
			
		

> So what is your profession (if you don't mind me asking)?




Right now, "Job seeker". 

Normally, Software Engineer, Database Administrator, Data Architect, or some combination/variation of those.


----------



## andargor (May 27, 2004)

Zappo said:
			
		

> If I've understood correctly, this is a conceptual "object" which is attached to the "Elf" container. Isn't there a lot of redundancy here?




Oh, yeah, way too much redundancy. The objects could be defined by a base template, and the specifics could be just a reference to the template, which gets built into an object when it's added to a character. But it's just a demo 



			
				Zappo said:
			
		

> What's the use of the <category> tag? Also, how is this size connected to the stuff Size does (modifiers to hit, to AC, to Hide, to carrying)?




Category is totally arbitrary right now. I use it to find objects using XPath and to build the object name with it. Conceivably, it could be a namespace tag instead. I do think that something more descriptive is needed, particularly if it's used to refer to an object template... But since the code to "read" the object is in JS and not C++, it can be anything, really.

It's not tied in to anything right now, I haven't implemented everything yet. I could've added a "getSizeBonusToAC" function in system.xml, included a "Size Bonus To AC" object in abilities.xml with that function as the default interface which points to "Armor Class" using "targets", and pointed the "Elf Size" object at it using "targets" tags. That's all there is to it. 

Andargor


----------



## barsoomcore (May 28, 2004)

soulcatcher said:
			
		

> Thing is, you *asked* for something that lets you skill up a character fast, and add feats and so on without worrying about the app preventing you from doing this because of various rules.  You *can* do that in pcgen.  That was mynex's point.



I got Mynex' point. Neither Mynex nor you are grasping my point, for which I apologize.

It is my opinion that an application development team that didn't try to code in all the restrictions and regulations around classes, feats, skills and so on would be able to do a better job of implementing the interface and producing a reliable product. Granted, a less powerful product compared to one that DID have all that (and did it reliably), but it would be a BETTER product.


			
				barsoomcore said:
			
		

> I just need to be able to assign skill points quickly, stat up characters and have their bonuses come out right. I need to be able to choose feats and have their impact get added right away.





			
				soulcatcher said:
			
		

> PCGen does solve this problem.



It WOULD solve this problem if assigning skill points, statting up characters and choosing feats could be done QUICKLY. But it can't. It takes forever, firstly because the interface is so spectacularly obtuse, and second because the performance of the application is so terrible.

Again, if the developers weren't worrying about trying to code in a host of complex regulations and restrictions, they'd be able to spend more time getting what DID work to work better.

I've been in this business I'm sure as long as you have, and we both know that software ships with bugs and that interface design is really really hard and when developers can choose what they want to work on they generally work on what they think is fun -- which may not have any connection to what NEEDS doing. I understand the difficulties you guys face and as I've said, I think you've done tremendous work. You should be proud of PCGen.

But it doesn't meet my needs and what I'm saying is that one of the reasons it doesn't is because of a design decision to include a bunch of features I don't need. Had those features been left out, the resulting application could have been made far more reliable and usable than the current one -- and it would have met my primary need.

So the fact that PCGen lets me turn off the feature is frankly, just worsening the problem. You're making the product even MORE complicated by letting the user set the runtime conditions. Design it right the first time.


			
				soulcatcher said:
			
		

> I have been put in charge of developing a completly new, simple UI for pcgen for the 6.0 release, so we *do* recognize that pcgen needs to be easier to use, and there is activity on that front - but this stuff is not fast to develop.......



Good news. And good luck. And have fun.

And don't expect me to lighten up anytime soon. Feel free to ignore me -- if your primary market is not saying what I'm saying then fair enough. Go after your market with all you've got. But I know what I want and I'll just keep bugging you for it....


----------



## soulcatcher (May 28, 2004)

barsoomcore said:
			
		

> Good news. And good luck. And have fun.




thanks.  Personally, I design guis with one thought in mind.  How simple can this be?  From there, I look to where one can add features *without* interrupting that simple flow.  Hopefully, I can bring that to pcgen - and better performance would be nice.....(actually, I'm hoping to use JUnitPerf  to make it clear to the developers where our bottlenecks are....to hopefully clean that up.)



			
				barsoomcore said:
			
		

> And don't expect me to lighten up anytime soon. Feel free to ignore me -- if your primary market is not saying what I'm saying then fair enough. Go after your market with all you've got. But I know what I want and I'll just keep bugging you for it....




No, you are a part of the audience, and your position is noted.  We can't be all things to all people - but we can consider ways to make pcgen *better* for most people, and that deffinitly includes the 3 primary things you have asked for (at least in my interpretation): Speed, Simplicity and Stability.

It'll take months, maybe even a year or two - but the resulting pcgen I firnly believe will accomplish this.

Devon


----------



## WingOver (May 28, 2004)

soulcatcher said:
			
		

> No, you are a part of the audience, and your position is noted.  We can't be all things to all people - but we can consider ways to make pcgen *better* for most people, and that deffinitly includes the 3 primary things you have asked for (at least in my interpretation): Speed, Simplicity and Stability.
> 
> It'll take months, maybe even a year or two - but the resulting pcgen I firnly believe will accomplish this.
> 
> Devon





I hope it works out and I'm looking forward to seeing it.  For me, one of the biggest barriers to adopting any of the available chargens has been the GUI.  From what I've seen, I like how PCGen handles prereqs and stuff, and as a user I want that.  But I couldn't understand the interface so I gave up.

I once heard that for any given software project, you can expect the first version to serve as a prototype and have to be thrown away eventually.


----------



## WingOver (May 28, 2004)

Silveras said:
			
		

> Right now, "Job seeker".
> 
> Normally, Software Engineer, Database Administrator, Data Architect, or some combination/variation of those.




I'm sorry to hear that!  I hope you find one soon...


----------



## Silveras (May 28, 2004)

WingOver said:
			
		

> I'm sorry to hear that!  I hope you find one soon...




Thanks. It has been 19 months. I'm more than a little tired of the "looking" part, and would like to move on the "finding" part.


----------



## barsoomcore (May 28, 2004)

Silveras said:
			
		

> Thanks. It has been 19 months. I'm more than a little tired of the "looking" part, and would like to move on the "finding" part.



Times are getting better, I think. Hang in there.


----------



## barsoomcore (May 28, 2004)

soulcatcher said:
			
		

> It'll take months, maybe even a year or two - but the resulting pcgen I firnly believe will accomplish this.



Excellent. PCGen is blessed with a lot of talented and dedicated people. If you're committed to the long haul (and it's always a long haul if you want to do it right) then you can make it happen.

Testing. Lots and lots of testing. Write the tests, then design the feature. If a bug gets found, write a test to catch that bug next time, THEN fix the bug. Review code. Review EVERY FRICKIN LINE of code. Build daily. If the build breaks, do NOTHING until the build is fixed.

You know. I'm just rambling.

Here's one more thing, though. Keep posting here (and elsewhere) and being super-cool and listening to people and not being defensive and demonstrating committment to excellence. First off, it'll keep you from getting "tunnel vision" -- you'll have to keep defending your decisions against brand-new viewpoints. Second, you'll attract excellent people and really, all any project ever needs to succeed is lots of excellent people and not quite enough time.

Keep it up.


----------



## Silveras (May 28, 2004)

barsoomcore said:
			
		

> Times are getting better, I think. Hang in there.




So I keep hearing. A little personal evidence would be nice 

On the lighter side, you might be interested in my Excel-based character sheets. They apply stat modifiers, etc., in a "I trust you to know the rules" sort of way. 

Currently, for skills, they allow you to enter the ranks you purchased. It applies constant synergies based on those, adds armor effects, size effects, has a place for (but does not auto-fill) race modifiers, has a similar manual-entry place for Feat modifiers, auto-applies stat modifiers, and modifies Jump for speed and Hide for size. 

Level-wise, they are designed to track what class you took at each level 1-20, and accumulates the individual bonuses (BAB, Ref, Will, etc.) on one sheet. The totals are referenced by the other sheets where needed.


----------



## barsoomcore (May 29, 2004)

Super cool. Where do I get them from?


----------



## Silveras (May 29, 2004)

barsoomcore said:
			
		

> Super cool. Where do I get them from?




My game site


----------



## micr0c0sm (May 29, 2004)

I beleive redblade3.5 is the way to go - the character gen is now open source, and handles the rules quite nicely.  It is also clean and fast.

It certainly is a good place to start with his code and port it to ideas that you see fit (XML, web interface, etc..)


----------



## WarRabbit (May 31, 2004)

barsoomcore,
   I also have an excel spreadsheet based character sheet and the best one I've seen yet is found here:

http://home.san.rr.com/blackbart/


Email me at LordTenser@aol.com if you want to see mine, but the HeroForge one is pretty darn nice.


----------



## frugal (Jun 1, 2004)

barsoomcore said:
			
		

> It is my opinion that an application development team that didn't try to code in all the restrictions and regulations around classes, feats, skills and so on would be able to do a better job of implementing the interface and producing a reliable product. Granted, a less powerful product compared to one that DID have all that (and did it reliably), but it would be a BETTER product.




This is the difference between what you want from a character generator and what the PCGen developers wnts from a character generator. You can not simply point at PCGen and complain that it does not do what _you_ want, it never will, it was not designed for you.

PCGen is designed to be able to cope with the myriad of rules and regulations surrounding classes, feats etc. The designers have decided that a BETTER product can be created by making it _more_  powerfull not less.

A case in point: PCGen is the only character generator I have seen that can cope with feats like "Greater weapon focus" without needing to have a special piece of code for "give the list of all weapons the character has weapon focus in" like redblade, or just bring up the list of all weapons like Rolepayingmaster does. It is this ability to provide the details of the rules that is what makes PCGen different and allows it to find it's own niche.

- Redblade is small and simple.

- Roleplayingmaster has character generation as only a small part of it

- various excel sheets will add up the numbers but will not check their validity.

- PCGen is large and slow, but ti also followsteh rules the most closely.


----------



## frugal (Jun 1, 2004)

barsoomcore said:
			
		

> Testing. Lots and lots of testing. Write the tests, then design the feature. If a bug gets found, write a test to catch that bug next time, THEN fix the bug. Review code. Review EVERY FRICKIN LINE of code. Build daily. If the build breaks, do NOTHING until the build is fixed.




I started to do exactly this, I wrote over 100 unit tests forthe new code I added. I tried to get as many developers as I could to follow my example.

Now 6 months later I have a sore and bloody head from beating it against a brick wall and a lot of the tests fail because the developers do not even bother to run them, let alone fix the ones that they break.

What works in a commercial environment does not work in an Open Source environment. You can not force someone to write tests unless there is some penalty involved


----------



## Joshua Randall (Jun 1, 2004)

The lack of testing and bug-fixing in PCGen is the most frustrating thing about it. You will see bugs posted on the Yahoo group or Sourceforge, but you cannot easily find out if they are (1) known but being ignored, (2) new bugs introduced in the latest build, (3) old bugs that would require serious coding work to kill, (4) bugs based on typos in the .lst files, or (5) something else. This is very frustrating for users who dutifully report bugs, but never get to see the bugs squashed. After a while, you just throw up your hands in dismay and either resign yourself to using buggy software, or get fed up and start using something else.

Now I know that PCGen is open source and volunteer, so there is no real incentive to test and squash bugs, when you could be coding support for Dino-Pirates of Ninja Island or whatever other wacky d20 book just arrived in the mail. And I don't have a solution to that.

Regarding PCGen's desire to be flexible and allow many non-RSRD sources: great idea, terrible execution. The built-in .lst editors don't work, and hand-editing the .lst files in Notepad (or whatever) is a pain in the ass. So as a user, you are faced with a choice of either becoming an expert in .lst-ese (in which case you may as well join the PCGen team, heh) or just sticking with an incomplete product. Again, frustration.

I wouldn't be this frustrated with PCGen if it completely sucked. I am frustrated because it is on the verge of greatness, but being held back but (in my opinion) lack of focus and, of course, lack of time and money.


----------



## barsoomcore (Jun 1, 2004)

frugal said:
			
		

> You can not simply point at PCGen and complain that it does not do what you want, it never will, it was not designed for you.



What are you talking about? This is sheerest nonsense.

Unless you're trying to convince me that I should just completely ignore PCGen for the rest of its existence, and tell everyone who shares my needs to not even bother. Is that your point? That I should just shut up and find some development group that actually cares about what I want?

This is NOT the attitude I've come to expect from PCGen folks -- who in my experience have been sensible, committed programmers trying very hard to create an extremely complex tool. And doing a good job. My job, as a committed user, is to indicate my needs when the opportunity arises and point out the product's shortcomings. You don't like that, you're in the wrong business.

Statements like this reflect poorly on the PCGen team.


			
				frugal said:
			
		

> The designers have decided that a BETTER product can be created by making it _more_  powerfull not less.



I understand that. I even SAID that. I think they're wrong, and I think the evidence (PCGen's terrible interface, numerous fatal bugs and obtuse methods of customization) supports me.


			
				frugal said:
			
		

> What works in a commercial environment does not work in an Open Source environment. You can not force someone to write tests unless there is some penalty involved.



The big secret of leadership is -- if the team won't do it, you're going to have to do it. Figure out a build process that automatically runs the tests. Fix the issues that break the build. Only bring programmers onto the team who are willing to work according to the process.

You don't have to let every willing hand help out. Just because you're not paying people doesn't mean you can't fire them.

I make movies with entirely unpaid crews and let me tell you, if somebody doesn't follow instructions they are OFF my set RIGHT NOW. The other crew members see that and they think, "Hey, these people mean business. They don't let just any yahoo on board. Hey, I must be okay if they haven't fired me yet. I must know what I'm doing. Cool." People WANT to be held accountable for their mistakes. They WANT to be treated like professionals, even if they're not being paid.

Maybe ESPECIALLY if they're not being paid.

The "We're Open Source, we can't follow proper processes" line is bunk. I don't FORCE my people to write unit tests. I HIRE people who write unit tests. There's no reason PCGen can't do the same thing.

Open Source software should be held to HIGHER standards than commercial software, because the pressures of time-to-market are lower, so there's TIME to do things the right way.

Sorry, got on a bit of rant there. Of the things I feel strongly about, software development leadership is close to the top of the list.


			
				Joshua Randall said:
			
		

> I wouldn't be this frustrated with PCGen if it completely sucked. I am frustrated because it is on the verge of greatness, but being held back but (in my opinion) lack of focus and, of course, lack of time and money.



See, this is my position exactly. If the product was USELESS, I wouldn't bother posting my concerns and wants. It's almost AWESOME. But the failures are so complete, so debilitating that it breaks my heart to see.

If the team can gather the vision and leadership to fix the failures, PCGen is going to be an amazing product.


----------



## reanjr (Apr 3, 2005)

WingOver said:
			
		

> Try programming software for the electricty industry or accounting.  Now that's boring work!      Developing a D&D character generator synchs with our hobby at least.
> 
> The OGL/D20/licensing issue is a good point.  Maybe those big guys don't want to mess with all the legal wrangling.  Making a D20 compliant generator is difficult, and using the OGL would be easier programmatically, but lousy for marketing.
> 
> Maybe the D&D market's not big enough for them?




Licensing is a really big issue for this.  The OGL forces anyone who implements SRD rules in code to release their app open source (at least in some fashion).  Most people don't want to do that (not those who have time and resources to actually get it to work).  I've found a way around that, though.   See the mechanics design thread.

I'm more excited than ever about this.  I didn't realize there was such zeal for this type of thing or I would have hunted for other people earlier.  I figured it was more of a pet project that no one would care to use (I've never used character generators for the same reasons mentioned above).


----------



## reanjr (Apr 3, 2005)

WingOver said:
			
		

> Thanks for the reply, Frugal.  So basically the reasons there isn't an uber-generator:
> 
> 1. D20 rules are complex and extremely difficult to put into code.
> 2. It's a lot of work.
> ...




1. true, but there are ways to simplify things.  I said in another thread, the OOP approach is the problem.  I tried it myself.  You can brute force it out if you want, but the solution doesn't fit the problem, and so creates additional work for everybody.

2. it's a lot of data entry.  The actual design and implementation aren't that difficult or drawn out.  Most of the script work can be done by beginner code monkeys (I use the term endearingly).  Mostly, it needs a plan.  There needs to be a group of data entry people to handle the input of spells, etc.  There also needs to be a small team of people working on scripting up the rules.  And there needs to be a couple people who the script people can go to when they hit a snag ("I have no idea how I am going to represent the race rules with this limited functionality, can you design a function to help me out?")  Then if you have an app that itself is extensible, everyone and their brother can extend it to heart's content.

3. true dat.  But, after carefully analyzing the situation I found a way to sneak around the OGL and not release the project open source (I remember reading some comments by Ryan Dancey on how difficult this would be to do).  If people can actually design an app that works with this data as designed, I guarentee they'll have the best-selling character gen app on the market.  And not just for D20, either.  My plan was not to sell an app, but I can certainly see someone creating an implementation and marketing it.  Hell, I was planning on using the BSD license, so maybe someone else will sell my app for me and not give me a dime 

4. I'm not familiar with the demographics...


----------



## EPRock (Apr 4, 2005)

I found a couple good excel character generators on the internet, because I had an excel sheet which worked for my friends and I, I found Steve Steve Mulhern's 3rd edition character sheet

http://home.wi.rr.com/dndsheet/

He stopped publically updating it so it made me have to fire up my excel skills to start, mostly I started by looking through and adding data, and correcting minor incorrections. After migrating from 3.0 to 3.5 I had to rewrite many of the sections of code because they would not calculate properly. I had to rewrite many of the lookups, but have added some interesting functions.

My cruddy excel sheet is at

http://kirran.fewin.com/dnd

_Edit: whoops forgot my link_


----------



## WingOver (Apr 4, 2005)

reanjr said:
			
		

> Licensing is a really big issue for this.  The OGL forces anyone who implements SRD rules in code to release their app open source (at least in some fashion).  Most people don't want to do that (not those who have time and resources to actually get it to work).  I've found a way around that, though.   See the mechanics design thread.



I like your approach of putting the rules in the data, which effectively represents the open content in a human- and app-readable file. However, you go on to say that some mechanics need to be hardcoded in the app (for example, how to roll 1d8+1). I wonder if that programming logic must also be open content as well?  It seems like a fine line and open to interpretation on whether this conforms to the OGL or not.  Personally I believe this approach does, but I'm no lawyer.

Just throwing out ideas, but another approach you could take is to put all open content possible in the file like you've designed now.  Then for the hard-coded mechanics (d20 mechanic resolution, calculating threat ranges, all d20-related number crunching algorithms), you could create a separate library as your business logic layer and declare that open source.  The UI that uses this library could be declared as product identity and remain closed.




			
				reanjr said:
			
		

> I'm more excited than ever about this.  I didn't realize there was such zeal for this type of thing or I would have hunted for other people earlier.  I figured it was more of a pet project that no one would care to use (I've never used character generators for the same reasons mentioned above).



Since I started this thread, you know I have a tremendous amount of excitement for tools that help D&D.  I want tools that can stat up NPCs quickly so I can spend more time working on adventure story elements.  But I'd also like a tool that helps min-max my BBEGs. It would be fun to create different variations of a single NPC and check its stats to see which one would best challenge my players.

And I'm sure I'm not the only one.


----------



## WingOver (Apr 4, 2005)

reanjr said:
			
		

> 1. true, but there are ways to simplify things.  I said in another thread, the OOP approach is the problem.  I tried it myself.  You can brute force it out if you want, but the solution doesn't fit the problem, and so creates additional work for everybody.
> 
> 2. it's a lot of data entry.  The actual design and implementation aren't that difficult or drawn out.  Most of the script work can be done by beginner code monkeys (I use the term endearingly).  Mostly, it needs a plan.  There needs to be a group of data entry people to handle the input of spells, etc.  There also needs to be a small team of people working on scripting up the rules.  And there needs to be a couple people who the script people can go to when they hit a snag ("I have no idea how I am going to represent the race rules with this limited functionality, can you design a function to help me out?")  Then if you have an app that itself is extensible, everyone and their brother can extend it to heart's content.
> 
> ...




1. I don't think you necessarily have to move away from an OOP approach (d20 elements as objects).  However, it needs to be able to accept new content without requiring a re-compile.  I believe Andargor(?) spoke of that problem long ago.  Perhaps if the objects shared a common Interface, you could create and load new ones using serialization.  That way, if you wanted to create new content all you'd need is a utility to create the object and serialize it to disk.  Then your app could deserialize it and have access to the new content represented logically as an object.

2. I believe the data entry would be trivial compared to the design tasks ahead.

3. I believe its a big market, but a picky one.

4. I only assume theres plenty of computer geeks among the D&D nerds, because all of my players are both.


----------



## Vascant (Apr 5, 2005)

Okay, I must live on some different planet...

1.  OOP is great for D20 because D20 breaks down into a series of Objects that have both Behavior and Attritutes.  I have designed and developed my NPC Designed from this and expose only the top most objects to the scripts.

2.  The way you overcome the issue dealing with the many tweaks and exceptions in D20 is creating a method of handling data that allows it to be altered based on events or other elements of data.

3.  User Interfaces, I refer to the saying, "One man's garbage is another man's treasure".  What works for the designer does not take into considerations what works for everyone else.

Is this time consuming to code d20 stuff, yes very because of the amount of rules that need to be taken into account HOWEVER.. as someone said above, this is our hobby and it is pretty damn fun.  Hard to say what I like more, coding or playing 

One last note, as far as user support or vast market.  I do not agree, I know for my own project I only have 2 people who have given constant support and 2 more that give.. 25%.  It just doesn't make since to do a project and go thru creating installs for it (lord knows installations are somethings more of a hassle then the actual application) for a handful of users.  I do agree, alot of d20 users have PC's though


----------

