design question:game skill system

  • Thread starter Littlefield, Tyler
  • Start date

Littlefield, Tyler

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.

Take care,
The aspen project: a barebones light-weight mud engine:
He that will not reason is a bigot; he that cannot reason is a fool; he that dares not reason is a slave.

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Latest member

Latest Threads