关于项目规划:RPG(角色扮演游戏)的类图示例

Class diagram examples for RPG (Role Playing Game)

有人知道在哪里可以找到RP游戏开发的类图示例吗?和这里类似的东西会非常有用。我不是在寻找我可以随意复制的东西,而是在尝试用铅笔记下我自己的课程时,为我发现的问题画出各种解决方案的不同例子。


我知道gamedev.net上的emmanuel deloget,但我不确定我会选择使用他所拥有的层次结构!继承太多,灵活性不够。

如果我正在写一个基于文本的RPG(就像我过去所做的那样),它看起来有点像这样(尽管我没有时间为它绘制一个图表,遗憾的是):

  • 生物、房间和衍生物品来自世界,来自世界组合中排列的对象结构,以便项可以在其他由生物携带的物品,在房间里。实施世界访客模式可能工作得很好。
  • 创建类型和项类型类其中包含的"类"数据个体生物和物品实例,引用它们的对应的"type"对象。(如基地)前一组的得分和统计数据,电流冲击点和瞬态效应在后者)。我可以把这些作为得到的属性的原型列表复制到生物或物品实例的时间它们是被创造出来的。可以实现属性通过"父"属性继承,以便特定的地精生物实例可能与"战士地精"创造者类型,其中包含"generic goblin"creatureType的父引用。等等。
  • 属于其房间的出口,并且一种方式,哪种方式详细说明了旅行、各种通行条件等。
  • 包含连接的房间组的区域通过某种逻辑组织。
  • 一个产卵类来决定生物的位置创建项目实例(例如,哪个房间,或者在什么坐标下),当它们被创建时,用什么频率,从创建类型和项类型。你可能有这里的一些逻辑可以让事情随机化一点。
  • 咒语、技能、能力等。全部派生自基本操作类或指定先决条件的接口(例如,当前位置,法力点,一些技能学习程度等)。正常的命令和操作也可以在这里进行,因为它们通常也有一些要求(例如,"睡眠"命令要求你已经睡着了。)
  • 一个FutureEvent类,本质上是推送到优先级队列的回调在未来执行。你可以用这些安排战斗回合,法术冷却时间,日夜循环,随你喜欢。
  • 的名称->值对的哈希/映射/字典玩家和物品统计。不是类型安全的,但是稍后您将欣赏这种灵活性。在我的创建stats成员变量的经验是可行但不灵活,有专门的"attribute"类变得复杂调试时的噩梦。
  • 包含stat名称的修饰符类型以及修改值(例如+10,+15%)。这些添加到你的生物中(例如通过法术效果或使用一件被施了魔法的武器),然后被脱光通过一个定时的未来事件或其他事件作为正在执行的命令。
  • 游戏特定类,如playerclass或playerrace,每个描述一个玩家的班级(例如战士、巫师、小偷)或种族(人类、精灵,dwarf)并设置启动状态值和限值,技能可用性列表、特殊能力等。
  • 基本的播放器接口类,会有所不同取决于您的实际游戏类型。你可能有图形游戏的渲染类,或者在泥泞中,你可能有一个连接类反映到播放机客户端的TCP连接。尽量避免所有的游戏逻辑。
  • 一个脚本接口。你的大部分命令,咒语,生物人工智能可以更快地实现一个不错的脚本接口,它可以保持编译时间也下来了。它还允许一些伟大的游戏内调试以及诊断能力。

这将是我将使用的基本高层结构。


您可能希望考虑一个组件实体系统而不是传统的继承层次结构;它们往往对某些类型的更改更加灵活,使工具(例如World Editor)的开发更加容易,并且提供了并行化的机会,而这在其他方面可能并不明显或容易。

许多现代游戏引擎正在从"整体类对象"(或类实体,无论什么)转向"组件包"方法。

周围有许多书和文章。一般情况下:

  • 游戏编程gems系列(显然第5卷和第6卷都有组件文章,我认为第2卷也可能有组件文章)
  • 游戏开发人员会议网站经常链接到前几年的演示文稿,并且是此类活动的金矿——您甚至可以便宜地购买前几年的CD/DVD(尤其是如果您参加的话)。
  • Gamasutra的专题文章档案和游戏开发者杂志的回溯

具体来说(一些值得注意的,谷歌"组件"和"实体"在各种组合中的更多信息):

  • 发展你的等级制度,米克·韦斯特
  • 实体系统是MMOG开发的未来;也是第2部分和第3部分
  • 燃气游戏wiki上的地牢围攻架构介绍
  • 数据驱动的游戏对象系统,Scott Bilas(GDC 2002)
  • 夜间活动,一个公开授权的图书馆和失眠游戏工具的集合(据我所见,它们是业内最大的工具努力之一)

这些文章中的每一篇都链接到更多的内容。

尝试一下酷爱,你可能会喜欢的。=)


1
<tongue_in_cheek_mode_because_it_is_friday>

刚刚开始:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
          ----------------                    --------------
          |   Creature   |                    |  Item      |
          |--------------|                    |------------|
          | Name         |                    | Name       |
          | Hp           |                    | Value      |
          | Abilities    |--------------------| Weight     |
          |--------------|                    --------------
          | Attack       |
          ----------------
                 ^
                 |
        ----------------------
        |                    |
----------------    ----------------
|  Hero        |    |  Monster     |
|--------------|    |--------------|
| Level        |    |              |
|--------------|    |--------------|
| KillMonster  |    | AttackAndDie |
| GrabTreasure |    | DropTreasure |
----------------    ----------------

</tongue_in_cheek_mode_because_it_is_friday>


史蒂夫耶格的一个非常不同的方法。


这类的怎么样:
BR/>alt文本http://img217.imageshack.us/img217/4886/classwo0.png

以下是一些其他图表:

  • http://www.russelldare.net/media/2dgame/uml.jpg网站
  • http://dirkkok.files.wordpress.com/2007/12/domainmodel1.jpg?W=505和h=573
  • http://members.gamedev.net/emmanuel_deloget/images/text_rpg_rule_system.png
  • http://theworldofdan.co.uk/wp-content/uploads/2009/05/classdiagram1.jpg
  • http://www.c-sharpcorner.com/uploadfile/mgod/spaceinvestors06292005005618am/images/spaceinvestorsUML.jpg
  • http://blog.xlandersoftware.com/wp-content/uploads/2008/08/tankrushuml.png


查看Jade的JavaDoc,了解复杂游戏的良好概述:)


大胆点,你的游戏不应该是"黑客和刀砍"的复制品。你的演员应该能够改变立场,主动出击招募其他演员等。否则,有什么意义?

1
2
3
4
5
   +-----------------------------+
   V                             |
[Actor] ------- [Allegiance] ----+
 - risk comfort    - weight
 - temerity