在游戏中管理子弹等最佳方法?

时间:2010-07-07 22:31:32

标签: components design-patterns

我已经开始进入游戏开发;我已经完成了一些教程并阅读了大量文章,但有一点我不确定是什么是管理大量临时对象的最佳方法,例如:子弹。

如果每个实体都管理自己的子弹,我是否应该有一个全球子弹管理器,还是应该将每个子弹创建为一个新的完整个体对象(虽然看起来效率很低)?

此外,在使用组件模式时,我应该如何处理看似通用的属性,例如:位置,速度等。? 我读过的一些东西似乎认为一切都应该在某种组件中,而其他人似乎认为通常由各种组件访问的泛型属性应该是实体类本身的成员。

原谅我,这些可能很简单,但我想确保我正在思考正确的方向。

非常感谢!

2 个答案:

答案 0 :(得分:3)

将每个子弹创建为“完全爆炸的对象”不应该效率太低 - 请查看Object pool pattern,其中概述了加速这些对象创建的方法。

至于你的问题:组件和通用属性,它取决于你希望遵循组件架构的严格程度。如果您希望对组件体系结构非常严格,则每个属性都应该在一个组件中,并且不同的组件应该相互通信。否则,出于效率原因,在主对象中共享一些属性。有关更多信息,请查看组件行为模式的this page

答案 1 :(得分:3)

原始Quake对实体使用固定大小的池(有时也称为edicts)。框架之间存在的任何东西都是实体。这包括“塑造身体”的东西,比如世界和门,像怪物,玩家和指甲这样的矩形物理东西,像武器这样的移动类型透明的东西,像触发器字段这样看不见但可触摸的矩形东西,以及像延迟事件这样完全非物理的东西。 / p>

我认为Quake的限制类似700条法令;如果超过限制,游戏将崩溃。我认为法令只是存储在一个数组中,因为任何法令都存在的所有属性都存在。