On Sun, Jun 19, 2011 at 9:04 PM, John Salerno <johnj...@gmail.com> wrote:
> On Jun 19, 8:52 pm, Chris Kaynor <ckay...@zindagigames.com> wrote:
>
>> Having a character class (along with possibly player character, non-player 
>> character, etc), make sense; however you probably want to make stuff like 
>> health, resources, damage, and any other attributes not be handles by any 
>> classes or inheritance in order to allow you to make such data-driven (ie, 
>> read from a file). Doing so makes the game much more extendable: using 
>> classes, you are likely limited to 5 or 'combinations and a few developers 
>> (plus, any designers need to know programming).
>>
>> A basic way to determine between using subclasses over a data driven 
>> approach is: is there significantly different back-end behavior or merely 
>> attribute differences.
>
> Can you give a basic example of how this data-driven approach would
> work? You don't have to provide any code, just a description would be
> helpful. Such as, do I create a data file per character, and then have
> each character instance read/write to that file? Is it good to have so
> many files open at once, or would they only need to be read, closed,
> then opened again at the end to write?
> --

I'm pretty sure he means that if the only difference between classes
is configuration (i.e. you aren't actually going to change code
between character classes, just base stats, growth rates, and a list
of available skills or something of that nature), then you should
store the configurations in a config file rather than making a new
class. So rather than having
class WizardCharacter(Character) :
    base_health = 50
    ...
class WarriorCharacter(Character) :
    base_health=70
    ...
You make a config file

--- characterclasses.ini ---
[Wizard]
base_health=50
[Warrior]
base_health=70

Then, when you make a new character, rather than doing a
WizardCharacter() or a WarriorCharacter(), you do a
Character(job='Wizard') and then look up the various defaults in your
config file. Doing it this way makes it trivial to add a new class. If
you want to use an old-fashioned INI file, you can use the
ConfigParser class to read them. If you want to nest attributes (for
instance, a list of sub-items), you'll probably want to go with XML
and ElementTree. I guess you can also use JSON (which uses a syntax
similar to Python's dictionaries) but I've never really tried to make
one of those by hand before so I'm not sure how well it will work out.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to