javascript - 在游戏开发中处理战斗效果

标签 javascript design-patterns

我正在尝试为我作为个人项目进行修补的游戏制定高级技术规范。这是一款回合制冒险游戏,可能最接近Archon。就我正在尝试做的事情而言。

我遇到的困难是概念化开发战斗系统的最佳方法,我一开始可以简单地实现,但将来会增加扩展和复杂性。

具体来说,我在尝试弄清楚如何处理战斗特效时遇到了麻烦,即可能由 Actor 、元素或环境应用或移除的奖励或负面影响。

  • 如果游戏本身在每次尝试进行决定性掷骰时检查每个武器、盔甲、 Actor 和位置,我是否让 Actor 处理所有支持/反对他们的效果。
  • 效果是在单个对象中处理还是有一个“效果”对象或两者都有?

我在这里可能没有很好地解释自己,如果我的要求过于宽泛和空泛,我很乐意尝试扩展问题。但我最初的想法是,比我聪明的人已经花时间和精力来弄清楚这样的事情,坦率地说,我不想过早地用我自己愚蠢的死胡同来玷污谈话。

有问题的语言是 javascript,虽然在这一点上我不认为它有很大的不同。

最佳答案

您所说的“特殊效果”过去被称为“修饰符”,但现在在 MMO 中被称为“增益”。考虑到您可以选择希望在每个阶段能够赋予多少多功能性,处理这些问题的难度随您的意愿而定。

但从根本上说,系统的每个方面通常都会存储适用于它的修饰符列表,您可以按需查询它们。通常,在任何给定时间只有少数修饰符适用于任何一个玩家,所以这不是问题 - 获取玩家的统计数据和技能/法术/任何东西赋予的任何修饰符,加上磨损设备赋予的任何修饰符,然后添加任何由有关武器传递的东西。如果您在这里想出一个标准接口(interface)(例如 sumModifiersTo(attributeID))供 Actor 、项目、位置等使用,那么实现它会非常简单快捷。

通常,“效果”对象将包含在它们所属的实体中: Actor 有一个效果列表,他们穿着或使用的元素有自己的效果列表。如果效果被明确激活和/或有时间限制,则由您决定将它们存储在何处 - 例如。如果您有魔法药水或其他消耗品,则需要将它们的效果附加到 Actor 而不是(可能已销毁的)元素。

不要试图让效果就地修改 Angular 色属性,因为您很快就会发现,如果您不确保所有添加和删除都按照正确的方式完成,属性很容易“漂移”协议(protocol)。这也使得以后绕过某些修饰符变得更加困难。例如。想象一个只保护其他魔法的魔法盾牌 - 您可以将某种谓词传递给您的修饰符总计函数,该函数忽略某些类型的效果来做到这一点。

关于javascript - 在游戏开发中处理战斗效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829490/

相关文章:

c++ - 自动代理类

javascript - 停止 AngularJS 1 中的定时函数

javascript - 检查元素是否有类事件,如果是,将类添加到不同的元素

Javascript拉动刷新保留LastID变量

c# - 游戏逻辑动态可扩展架构实现模式

design-patterns - 页面对象模式和备选方案

javascript - 存储附加到用户贡献内容的 YouTube 内容的最佳方法是什么?

javascript - 从JavaScript加载外部JavaScript库/脚本

javascript - Jquery:使用复选框值更改现有价格

c# - 错误处理的设计模式