Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've been making small 2D games for about 3 years now (XNA and more recently LWJGL/Slick2D). My latest idea would involve some form of "talent tree" system in a real time game.

I've been wracking my brain but can't think of a structure to hold a talent. Something like

"Your melee attack is an instant kill if behind the target"

I'd like to come up with an abstract object rather than putting random conditionals into other methods. I've solved some relatively complex problems before but I don't even know where to begin with this one.

Any help would be appreciated - Java, pseudocode or general concepts are all great.

share|improve this question
up vote 3 down vote accepted

"Your melee attack is an instant kill if behind target"

The talent system basically consists of a set of rules which need to validate to true before some effect takes place. You could treat the rules like as follows:

// Some abstract rule
class IRule {
  virtual bool validate() = 0;
class BehindTargetRule : public IRule {}
class IsAttackMeleeRule : public IRule {}

Then you have some code which validates each rule and if each rule is true, you trigger specific effects like:

// Some abstract effect
class IEffect {
  virtual void apply() = 0;
class SetDamageToHealthOfTarget : public IEffect {}

You could package these up in something like the following:

struct Talent {
  std::vector<IRule*> rules;
  std::vector<IEffect>* effects;

This allows you to mix/match bits and pieces of talents with one another to give varying talent choices which are similar or have the same rules but different effects based on the type of player, etc.

Now somehow you'd need to interface this with your combat system. Since combat often needs to take into account things like buffs/debuffs, armor depreciation, armor mitigation and so forth, you'd need to interweave those calculations with the effects that the rules trigger if they all validate.


share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.