游戏开发 - 抽象技能/人才系统实施

时间:2012-12-15 04:17:18

标签: java architecture

从gamedev stackexchange(original)重新发布,因为它在那里已经死了:

我已经制作了大约3年的小型2D游戏(XNA和最近的LWJGL / Slick2D)。我的最新想法是在实时游戏中使用某种形式的“天赋树”系统。

我一直在挣扎着我的大脑,却想不出一个拥有天赋的结构。像

这样的东西
  

“如果在目标后面,你的近战攻击会立即被击杀”

我想提出一个抽象对象,而不是将随机条件放入其他方法中。我之前已经解决了一些相对复杂的问题,但我甚至不知道从哪里开始。

任何帮助都会受到赞赏 - Java,伪代码或一般概念都很棒。

1 个答案:

答案 0 :(得分:1)

您可以通过创建一组“可组合”技能对象来实现此目的,这些技能对象可以挂钩到代码的正确部分。

类似的东西:

ninjaAttackSkill = new ModifiedAttack(originalAttack, 
       new ConditionalHit(behindTargetCondition, new InstantKillHit()));

攻击技能对象的方法签名可以是:

public SomeResult attack(Thing attacker, Thing target);

然后您可以覆盖每个可组合技能对象。

我在我的小Roguelike游戏Tyrant中使用了与此类似的技术 - 基本上有一个“脚本”对象,您可以将其子类化以实现所有类型的脚本功能。