游戏实体的类型和子类型的良好模式或架构?

时间:2014-03-11 11:38:08

标签: objective-c c game-engine

让我们说我在游戏中有行星,我也有太空飞船。我有太空船是海盗,我有航天飞机的航天飞机。我的行星也是海盗行星。显然我可以为每种类型添加一个开关并添加子类型等,但它似乎很快变得泥泞。

像: 枢纽是一颗行星 行星不是枢纽 枢纽可以是海盗 船可以是海盗 班车可以是一艘船 一艘船不能是班车

类型和子类型的继承。我目前正在进行子类和类型的组合,但我认为很难保持简单和强大。

这些复杂类型系统是否有良好的模式或架构?

1 个答案:

答案 0 :(得分:1)

基本方法是弄清楚哪些实体具有共同的特征,并确保它们从相同的基类继承。

例如,所有船只和行星都在轨道运行,因此它们都可以从SpaceBornObject继承。

空间站,行星,船只等都可以从中继承。

同时;空间站和船舶均已建成;所以他们也可以从一个共同的类继承,或者从另一个继承。

航天飞机和海盗船并不需要分开上课;这就是构图发挥作用的地方:

考虑一个Faction类;然后,依据SpaceBornObject字段Faction *controlledBy;,或其他相似的东西。