design question:game skill system

Littlefield, Tyler tyler at tysdomain.com
Tue Oct 2 16:00:27 EDT 2012


Hello all:
I'm looking at a skill/perk system, where the player builds up his char 
by using perk points to add abilities.
Each perk is under a category, and generally costs go up as you increase 
the perk.
So I'm trying to figure something out; first, I'd really like the cost 
calculation and all of that to be dynamic, so that I don't have to write 
a calculateCost per object. I'd also like to be able to specify 
dependencies and say a level, as well as other factors before a player 
can obtain a perk and have them self documenting. The idea is that a 
player could do something like:
data perk extended health
and it would tell them they require health at 50 before they can 
purchase extended health, as well as the cost, the increase per level 
and the total overall cost.
Any ideas on how to set this up would be really appreciated.
Finally, I'm curious how to store and calculate these. I thought about 
using a uid per perk, then storing something like: {uid:level} on the 
player, but means that I have to lookup the name somehow still in the 
main perk database, then use that uid to check if the player has it. Are 
there better ways of storing skills? I'm also thinking about 
calculation; currently the CalculateMaxHp method would have to add up 
all the possible perks for health, then add stats and all that. That 
could get really rough on performance if it's called often; would 
something like a cache work, where you have something like: 
{attribute:dirty}? So if I call CalculateHealth, it checks for the dirty 
flag, and if it doesn't exist just returns the previous max HP, but if 
the dirty flag is set, it recalculates? Then anything modifying health 
(level gains, perks, stat increases/etc) would just set the dirty flag 
and call calculate?
Thoughts/ideas would be welcome.
Thanks,

-- 
Take care,
Ty
http://tds-solutions.net
The aspen project: a barebones light-weight mud engine:
http://code.google.com/p/aspenmud
He that will not reason is a bigot; he that cannot reason is a fool; he that dares not reason is a slave.




More information about the Python-list mailing list