有谁知道在哪里可以找到RP游戏开发的类图示例?类似于here的东西会非常有用。我不是在寻找我可以大肆复制的东西,而是针对不同的例子,这些例子对我在尝试和下课时自己发现的问题绘制了各种解决方案。角色扮演游戏的类图示例
26
A
回答
48
的一个很好的概述,我知道,从GameDev.net灵光Deloget但我不确定我会选择使用层次结构他到了那里!继承太多,灵活性不够。
如果我在写一个基于文本的RPG(正如我在过去所做的那样),它看起来有点像这样(虽然我没有时间来制定一个图呢,黯然):
- 生物,房间和物品衍生 从WorldEntity,与WorldEntity排列成复合 结构 对象,所以项目可以在其他 项目,通过生物携带, 存在客房内谁住。实施 WorldEntities 的访问者模式可能运作良好。
- CreatureType而itemtype类 包含用于 个体生物的“类”数据和Item 实例中,其是指回其 对应的“类型”的对象。 (例如前者中的基地 生命值和统计数据,后者中的当前生命值和 中的 )。我可以实现这些为 原型的属性列表,当 被创建时, 被复制到Creature或Item实例。您可以通过一个“父”财产执行财产 继承,以便 特定妖精怪物实例可能涉及 “妖精战士” CreatureType,其中包含了 家长参考“通用妖精” CreatureType。等等。
- 其房间拥有的出口,单程为 ,其中详细说明了 的行驶方向,各种通行条件等。
- 区域,其中包含由某个逻辑组织连接的 房间组。
- 一个菌种类决定在其中创建生物 和项目实例(例如,哪个房间, 或在什么坐标),它们被创建时,并 什么频率,并从 其中CreatureTypes和ItemTypes。你可能在这里有一些逻辑来使事情随机化。
- 咒语,技能,能力等 所有从基Action类 或接口来指定的先决条件 (例如当前位置,魔法点,一些 度的技术人员学习等)衍生的。普通 命令和动作可以在这里过,因为他们往往 都有某种要求太 (如“睡眠”命令要求,你是不是已经 睡觉。)
- 一个FutureEvent类基本上是一个 回拨,您将推入未来执行的优先队列 。你可以使用这些来到 时间表的战斗回合,拼写冷静时间, 夜间/星期循环,无论你喜欢什么。
- 玩家和物品统计信息的名称 - >值对的哈希/地图/字典。不是类型安全的,但是 稍后您会体会到灵活性。在我的 制作stats成员变量的经验是 可行但不灵活,并有专门的 '属性'类成为一个令人费解的 调试时的噩梦。
- 包含统计名称 和修饰符值(例如+10,+ 15%)的修饰符类型。这些 被添加到您的动物,因为它们被用来 (通过法术效果,或挥舞 的怡人武器如)并获得由定时FutureEvent或某些其他事件后 剥离等 为被执行的命令。
- 游戏特定的类,如PlayerClass或 PlayerRace,其每一个描述一个玩家的类 (例如战士,向导,小偷)或种族(人,小精灵, 侏儒),并设置开始统计值和限制, 技能可用性列表,特殊能力等。
- 基本玩家界面类将根据您的实际游戏类型而变化 。你可能在有一个图形游戏的渲染类,或者在MUD中有 ,你可能有一个连接类 反映到玩家客户端的TCP连接。 尽量保持所有游戏逻辑不在这些。
- 一个脚本界面。大多数命令,法术, 和生物AI可以通过 体面的脚本界面更快地实现,并且它也可以保持编译时间减少 。它还允许在游戏中进行一些很好的调试和诊断功能。
这将是我使用的基本高级结构。
5
<tongue_in_cheek_mode_because_it_is_friday>
刚刚开始:
---------------- --------------
| Creature | | Item |
|--------------| |------------|
| Name | | Name |
| Hp | | Value |
| Abilities |--------------------| Weight |
|--------------| --------------
| Attack |
----------------
^
|
----------------------
| |
---------------- ----------------
| Hero | | Monster |
|--------------| |--------------|
| Level | | |
|--------------| |--------------|
| KillMonster | | AttackAndDie |
| GrabTreasure | | DropTreasure |
---------------- ----------------
</tongue_in_cheek_mode_because_it_is_friday>
4
怎么样之类的东西:
alt text 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/mgold/SpaceInvaders06292005005618AM/Images/SpaceInvadersUML.jpg
- http://blog.xlandersoftware.com/wp-content/uploads/2008/08/tankrushuml.png
3
看JADE's Javadoc一个复杂的游戏:)
11
您可能需要考虑组件实体系统而不是传统的继承层次结构;他们倾向于对某些类型的变化更加灵活,使工具(例如,世界编辑器)的开发更容易,并且提供并行化的机会,否则这些并不明显或容易。
很多现代游戏引擎正在远离“单片类对象”(或实体类,等等),并朝着“袋组件”的做法。
周围有很多书籍和文章。一般:
- 的Game Programming Gems系列(显然是两个音量5,6的分量的文章,我觉得2可能有一个为好)
- 的Game Developers Conference网站经常有链接到前几年的演示,并对于这样的事情一个金矿 - 你甚至可以平时买的CDS /为前几年的DVD便宜(尤其是如果你参加)
- Gamasutra's feature article archives和Game Developer Magazine backissues
具体(某些noteworth ÿ的,谷歌 “组件” 和以各种组合 “实体” 以上):
- Evolve Your Hierarchy,米克西
- Entity Systems are the future of MMOG development;也对天然气part 2和part 3
- Introduction to Dungeon Siege Architecture Powered Games公司维基
- A Data-Driven Game Object System,斯科特Bilas的(GDC 2002)
- 的Nocturnal Initiative,库和工具由Insomniac的游戏一个公开许可的集合(他们有一个最大的从我看到的)工业努力
这些文章中的每一个链接到一些更多。
尝试库尔急救,你可能会喜欢它。 =)
4
甲very different approach由史蒂夫·耶格。
1
要勇敢,你的游戏不应该是黑客的克隆和斜线废话。 你的演员应该能够切换双方,自己主动 征募其他演员等。否则,什么是重点?
+-----------------------------+
V |
[Actor] ------- [Allegiance] ----+
- risk comfort - weight
- temerity
相关问题
- 1. Java角色扮演游戏
- 2. 如何制作角色扮演游戏角色
- 3. 设计角色扮演游戏中的典型角色的阶级层次
- 4. 是否有任何复杂的角色扮演游戏框架可用?
- 5. “DirectX第2版编程角色扮演游戏”和更新的DirectX api
- 6. 如何在角色扮演游戏中让生物互相追踪对方
- 7. 这是一个用于iPhone的游戏,适用于3D或2D角色扮演游戏?
- 8. 标签在h2o.randomforest中扮演角色吗?
- 9. 按角色扮演ASP.NET模拟
- 10. 如何在yii中扮演角色
- 11. 演示游戏赛车游戏crashs(GamerServicesNotAvailableException)
- 12. YouTube的意图过滤器正在扮演愚蠢的角色
- 13. 编写蛇游戏演示
- 14. 什么是一个有经验的程序员最好的Java RPG(角色扮演游戏)引擎?
- 15. 如何同库存物品在一个基于文本的角色扮演游戏结合起来,一行
- 16. N游戏角色物理
- 17. 游戏Api示例
- 18. 客户端的jvm扮演什么角色来运行servlet?
- 19. 在Node.js中扮演V8引擎的角色是什么?
- 20. 投射后目标对象会扮演什么样的角色?
- 21. CSS在本地主机上扮演的角色不同
- 22. 为什么var在R中扮演cov的角色?
- 23. 日期/时间以外的角色扮演维度
- 24. NSPredicate在NSFetchedResultsController中扮演着奇怪的角色
- 25. 数据库的多用户角色扮演
- 26. CSS菜单aligntment在safari中扮演着奇怪的角色?
- 27. setInterval在webkit浏览器中扮演奇怪的角色
- 28. 主观性在编程中扮演的角色有多大?
- 29. 浏览器在MVC3 Razor上的图像上扮演着不同的角色
- 30. InternalBuffer在.net中扮演什么角色FileWatcher
我爱你链接到一个。我发誓我们大多数程序员,特别是日常工作中的程序员,只能为编写像`bool isLivingDead()`这样的函数的爽快体验做RPG。 – Gavin 2009-08-05 15:48:57
if(creature.isLivingDead()&& hero.isSlayer())hero.slay(creature); – 2009-08-06 13:05:03