识别基于组件的游戏引擎中的组件

时间:2011-12-06 17:00:31

标签: architecture components

我在网上看过很多关于基于组件的游戏架构的文章,所以我决定实现一个简单的系统来测试这个架构。

我已经实现了一个通用游戏节点,它只是一个基本的组件列表和一些添加和删除这些组件的方法。我还有一个属于某个节点的消息列表,以方便它们之间的通信。

这个例子只有拥有枪支的机器人(有基本的'枪'枪以及具有不同统计数据的派生类型等等),他们互相射击并将结果打印到控制台。每当其中一个射击另一个时,就会在后者的列表中发布一条消息,其中包含MSG_SHOT代码和损伤金额作为参数。这很好用。

但是,我决定在某些枪支上增加“范围”,使其伤害加倍。但是,我真的找不到一种方法让武器检查它的一个孩子是否是一个范围,而不是实际迭代它们。有一些基本的解决方案,但我的目标是通用解决方案(不只是在枪中添加'范围'字段,如果没有范围则将其保留为空)。如果我想在枪上附上无数其他具有各种效果的小玩意儿怎么办?我怎样才能使它们影响枪支部件的“射击”方法?

我应该在调用'射击'时迭代所有枪支的孩子,看看他们是否能够影响枪击?我不认为依赖组件名称会有任何好处。当任何范围可用时,我可能想要一定的效果,但对于某种特定的范围,我想要一种特殊的效果。

提前感谢任何指示,是的,我在发布这篇文章之前已经阅读了大量的文章/问题,而且我仍然很遗憾地感到困惑...... :(

1 个答案:

答案 0 :(得分:1)

根据你给我的设置细节,这是我所拥有的,但如果听起来我误解了你的布局,请展开。

与对象相关的计算应该在该对象内完成。

所以......''我应该在调用'射击'时迭代所有枪支的孩子并看看他们是否能够影响枪击'......是的,因为范围会影响伤害输出在发送信息之前,应该在枪支侧完成工作的枪。我会看到它设置在某种“CalcDamageDelt”中,其中信息从枪传递到每个附件,以提出枪支总输出伤害。

计算出枪输出后,结果将被打包并发送给接收器。然后,接收器将计算任何阻力(装甲),并应用结果。

从你发表评论听起来这就是你走的路线,但是采用更单一的方法(无论是否归零),而不是寄宿生'将你的影响应用于我的伤害'。所以我认为你的方向很好。

相关问题