Ste*_*ike 7 javascript design-patterns
我正试图为一个我正在修补的游戏作为个人项目制定一个高级技术规范.这是一款基于回合制的冒险游戏,就我正在尝试做的事情而言,它可能最接近执政官.
我遇到的问题是概念化开发战斗系统的最佳方法,我可以在最初简单地实施,但这将允许在未来添加扩展和复杂性.
具体来说,我无法弄清楚如何处理战斗特效,即可以由演员,物品或环境应用或移除的奖励或负面效果.
我可能在这里没有完全解释自己,如果我的要求过于宽泛和通风,我很乐意尝试扩大问题.但我的初步思考是,比我更聪明的人花费了时间和精力来计算这样的事情,坦率地说,我不想过早地将谈话归咎于我自己愚蠢的死胡同.
有问题的语言是javascript,虽然在这一点上我并不认为它有很大的不同.
你称之为"特效"的东西曾被称为"修饰符",但现在在MMO中流行的术语是"增益".考虑到您可以选择在每个阶段都能够提供多少功能,处理这些操作就像您希望的那样简单或困难.
但从根本上说,系统的每个方面通常都会存储适用于它的修饰符列表,您可以按需查询它们.通常情况下,在任何给定时间只有少数几个修饰符适用于任何一个玩家所以这不是问题 - 取得玩家的统计数据和技能/法术/任何赋予的任何修饰符,添加磨损设备赋予的任何修饰符,然后添加有关武器传授的任何东西.如果您在这里提出了一个标准接口(例如sumModifiersTo(attributeID)),由演员,项目,位置等使用,那么实现这一点可以快速而简单.
通常,"效果"对象将包含在它们所属的实体中:演员有一个效果列表,他们佩戴或使用的项目都有自己的效果列表.如果效果明确激活和/或有时间限制,则由您决定存储它们的位置 - 例如.如果您有魔法药水或其他消耗品,它们的效果将需要附加到Actor而不是(可能是销毁的)项目.
不要试图尝试让效果就地修改actor属性,因为如果不确保所有添加和删除都遵循正确的协议,那么很快就会发现属性很容易"漂移".它还使得以后绕过某些修饰符变得更加困难.例如.想象一个神奇的盾牌,只能防止其他魔法 - 你可以将某种谓词传递给你的修饰符总计函数,忽略某些类型的效果来做到这一点.
| 归档时间: |
|
| 查看次数: |
624 次 |
| 最近记录: |