java - 游戏开发 - 抽象技能/天赋系统实现

标签 java architecture

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

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

我绞尽脑汁,却想不出一个可以容纳人才的结构。类似的东西

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

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

任何帮助将不胜感激 - Java、伪代码或一般概念都很棒。

最佳答案

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

类似于:

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

攻击技能对象可以有一个方法签名,如下所示:

public SomeResult attack(Thing attacker, Thing target);

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

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

关于java - 游戏开发 - 抽象技能/天赋系统实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889243/

相关文章:

java - Rest ,使用 Get 作为查询字符串发送参数或仅使用 Post 获取信息

java - 如何在另一个项目的类路径中获取一个项目的类

java - 使用 SSH exec channel 调用 shell 脚本,但它会忽略对其他 shell 脚本的调用

java - xpath java 的数字节点列表错误

java - 删除 map View 中除选定区域之外的所有其他区域

asp.net-mvc-3 - IoC 的泛型关注点分离

java - 为 Java 8 上的 Tomcat 8.5 分配更多内存

REST API 版本控制 - 流行的 API

IDS 的 Java 应用程序设计

architecture - ZF2 Skeleton 和 Doctrine ORM xml 模式合并