RPG(角色扮演游戏)的类图示例

Ste*_*ike 28 project-planning class-diagram class

有谁知道我在哪里可以找到RP游戏开发的类图示例?类似于这里的东西会非常有用.我不是在寻找我可以盲目复制的东西,而是仅仅针对不同的例子,这些例子描绘了我在尝试和自己的课程时所发现的问题的各种解决方案.

Kyl*_*tan 51

我知道来自GameDev.net的Emmanuel Deloget,但我不确定我会选择使用他所拥有的层次结构!遗产太多,灵活性不够.

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

  • 从WorldEntity派生的生物,房间和物品,WorldEntity对象以复合结构排列,因此物品可以存在于其他物品中,由居住在房间内的生物携带.为WorldEntities实现访问者模式可能会很好.
  • CreatureType和ItemType类,包含单个Creature和Item实例的"class"数据,这些数据引用回相应的"type"对象.(例如,前者的基本生命值和统计数据,当前生命值和后者的瞬态效应).我可以将它们作为原型的属性列表来实现,这些属性在创建时会被复制到Creature或Item实例.您可以通过'parent'属性实现属性继承,以便特定的goblin Creature实例可能与'warrior goblin'CreatureType相关,其中包含对'generic goblin'CreatureType的父引用.等等.
  • 退房由他们的房间拥有,并且是单向的,并且详细说明了旅行的方向,各种通行条件等.
  • 区域,包含由某个逻辑组织连接的房间组.
  • 一个Spawn类,用于指定创建Creature和Item实例的位置(例如,在哪个房间或在什么坐标处),创建它们的时间和频率,以及CreatureTypes和ItemTypes.你可能在这里有一些逻辑来稍微随机化.
  • 法术,技能,能力等都来自基础Action类或界面,它指定先决条件(例如,当前位置,法术力点,技能的某种程度的学习等).正常的命令和动作也可以在这里,因为它们通常也有某种要求(例如,'睡眠'命令要求你还没有睡觉.)
  • 一个FutureEvent类,它本质上是一个回调,您可以将其推送到将来执行的优先级队列.您可以使用它们来安排战斗回合,拼写降温时间,夜间/白天循环,无论您喜欢什么.
  • 用于玩家和项目统计的名称 - >值对的散列/地图/字典.不是类型安全的,但您会在以后欣赏它的灵活性.根据我的经验,使stats成员变量可行但不灵活,并且在调试时专门化"属性"类会成为一个令人费解的噩梦.
  • 一种修饰符类型,包含统计名称和修饰符值(例如+ 10,+ 15%).这些被添加到你的生物使用时(例如通过法术效果,或通过挥舞魔法武器)并稍后被定时的FutureEvent或某些其他事件(例如正在执行的命令)剥离.
  • 特定于游戏的类,例如PlayerClass或PlayerRace,每个类描述一个玩家的类(例如战士,巫师,小偷)或种族(人类,精灵,矮人)并设置起始的统计值和限制,技能可用性列表,特殊权力,等等
  • 基本的玩家界面类别将根据您的实际游戏类型而有所不同.您可能有图形游戏的渲染类,或者在MUD中,您可能有一个Connection类,反映了与玩家客户端的TCP连接.尝试将所有游戏逻辑排除在外.
  • 脚本界面.大多数命令,法术和生物AI都可以通过一个像样的脚本界面更快地实现,并且它也可以缩短编译时间.它还允许一些伟大的游戏内调试和诊断功能.

这将是我使用的基本高级结构.


lea*_*der 11

您可能想要考虑组件实体系统而不是传统的继承层次结构; 他们倾向于对某些类型的变更更加灵活,使工具(例如,世界编辑器)的开发变得更加容易,并提供并行化的机会,否则这些机会可能并不明显或容易.

许多现代游戏引擎正在从"单片类对象"(或类实体,无论如何)转向"组件包"方法.

周围有很多书籍和文章.通常:

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

这些文章中的每一篇都链接到更多.

尝试kool-aid,你可能会喜欢它.=)


Too*_*the 5

<tongue_in_cheek_mode_because_it_is_friday>
Run Code Online (Sandbox Code Playgroud)

刚开始:

          ----------------                    --------------
          |   Creature   |                    |  Item      |
          |--------------|                    |------------|
          | Name         |                    | Name       |
          | Hp           |                    | Value      |
          | Abilities    |--------------------| Weight     |
          |--------------|                    --------------
          | Attack       |
          ----------------
                 ^
                 |
        ----------------------
        |                    |
----------------    ----------------
|  Hero        |    |  Monster     |
|--------------|    |--------------|
| Level        |    |              |
|--------------|    |--------------|
| KillMonster  |    | AttackAndDie |
| GrabTreasure |    | DropTreasure |
----------------    ----------------

</tongue_in_cheek_mode_because_it_is_friday>
Run Code Online (Sandbox Code Playgroud)

  • 我认为我的主要问题是我不确定'凉亭'应该继承什么...... (2认同)
  • 在桌面RPG中,您可以做一些设计师从未想过的事情.如果你使用计算机RPG获得它,它将无法正常工作.我认为在不久的将来无法改变这种状况. (2认同)