如何使用RPG类层次结构?

时间:2011-02-07 18:47:05

标签: class

我想在面向对象的编程风格中制作一个RPG。我有oo编程的经验,但从未使用大型类和子类组。我是从这开始的 http://members.gamedev.net/emmanuel_deloget/ 并创建类似于它的我自己的结构。问题是我不明白如何使用该结构。你是为比赛之类的东西创建静态类并使用它们,还是从单一种族类创建一个对象?这让我感到困惑,因为我假设您创建了一个单一的种族类,当'Main'类初始化时,您创建了所有单独的类,但上面的图表没有显示任何初始化这些对象的方法,但构造函数除外。但是因为种族将有不同的成员变量值,我将如何使用上面的图表初始化种族对象?或者这个图表是不完整的? (如果它不完整,那么这就是让我感到困惑的事情)

1 个答案:

答案 0 :(得分:3)

强烈建议:不要使用继承层次结构来表示RPG中的对象。

改为使用合成,并使用prototype-based programming个对象来定义对象属性和行为。

原因很简单,在继承风格的类层次结构中无法表示复杂RPG的行为。

举个例子,假设你的游戏中有一个铁傀儡作为怪物。它需要:

  • “铁”材料的特性与能够造成损害的材料有关(即非常耐冲击,非常耐火,非常容易生锈或酸)
  • 关于战斗和行动的“大型人形”的属性(不能飞行,可以行走,可以被斩首,可以使用超大型武器和装甲)
  • 魔法效果的“人造构造”的属性(不受恐惧,不能生存,魔法动画)
  • 一个“半智能怪物”的属性,与人工智能和行为有关(对玩家有敌意,攻击视线中的玩家等)

理论上,所有这些属性都可以混合和匹配。因此,您永远无法定义包含它们的简单继承层次结构。不要尝试,只需使你的铁傀儡成为相关属性的复合物。

我讲的是实现RPG对象模型的经验 - 如果你有兴趣看一下Tyrant的源代码(我多年前写的一个roguelike游戏)。我从一个继承层次结构开始,但最终不得不将整个代码库重构为基于原型的模型。