2013-01-05 49 views
2

我是新来stackover,这是我第一次的帖子,所以请温柔:-)C++游戏设计原则

我在发展多层次的射击游戏中我和我为我的目的质疑最好的面向对象设计,明确地管理子弹。

一般来说,游戏有多个玩家和多个敌人,每个敌人都有一把枪,可以发射子弹。有很多子弹类可以很好地管理多颗子弹,它们的位置,动画,渲染等等,并且这些子弹很好地工作。

我的问题是,我是否最好为每个敌人实例化这些子弹类的实例,还是我最好为管理所有子弹的级别实例化一个实例(不管是谁发射的)?

单个实例的好处是子弹管理和渲染可以一次对它们进行优化,但是它们需要额外的状态信息,因此我们记得哪些子弹属于谁,每个敌人可以存在多少子弹等等,而且不是松散耦合的。每个敌人单独实例的好处是它需要整洁,每个子弹都需要存储更少的状态信息,但是它们将在每个敌人或玩家的独立呼叫上进行管理和呈现。子弹之间的碰撞也会变得更加困难,但幸运的是,这不是这个特定游戏的要求。

有没有其他人写过类似的东西,你是如何构造它的?在决定之前我应该​​考虑哪些因素,并且是否有任何游戏设计原则?

问候 尼克

+0

删除了C++标记,因为如果使用任何其他OO语言,答案将不会有根本的不同。 –

回答

0

对于您可能需要阅读this一般游戏结构。


这可能是我个人的见解,但我认为一个级别的子弹处理器应该更普遍。 当玩家发射一颗子弹时,它会向子弹处理器对象发送一个信号,并将子弹计数减1。子弹将不得不存储哪个玩家射击它,所以你可以回头看看哪个玩家射击了哪个玩家,或者增加统计数据。 更不用说一个级别的子弹处理程序可以延后处理手榴弹,地雷,爆炸火药填充狂犬黄鼠狼或什么。

+0

这是一个非常有用的链接。我想我同意你的看法。整个级别的子弹处理程序(以及其他处理程序)往往更具可扩展性,并且看起来像是要走的路。谢谢。 – NickZ

+0

太棒了!很高兴能有所帮助:) 我在激光游戏原型中处于类似的情况。我决定建造一个激光束和一个激光处理器班。结果很好! ^^ –