----- Original Message ----- > 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,
Hi, Again, do not think about performances before actually having an issue with them. What's the point to optimize something that doesn't need it ? For your cache problem, google "python memoize decorator" for a bunch of decorators that will allow you to cache your data without any effort. JM -- http://mail.python.org/mailman/listinfo/python-list