- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
游戏对象的实现(上)
狭义的游戏对象是指游戏世界中所能看到及可交互的对象,如玩家、怪物、物品等,我们这里也主要讨论这类对象
在服务器上的组织及实现。
在大部分的MMOG中,游戏对象的类型都大同小异,主要有物品、生物、玩家等。比如在wow中,通过服务器发
下来的GUID我们可以了解到,游戏中有9大类对象,包括物品(Item)、背包(Container)、生物(Unit)、玩家(Player)、
游戏对象(GameObject)、动态对象(DynamicObject)、尸体(Corpse)等。
在mangos的实现中,对象使用类继承的方式,由Object基类定义游戏对象的公有接口及属性,包括GUID的生
成及管理、构造及更新UpdateData数据的虚接口、设置及获取对象属性集的方法等。然后分出了两类派生对象,一是
Item,另一是WorldObject。Item即物品对象,WorldObject顾名思义,为世界对象,即可添加到游戏世界场景中的对
象,该对象类型定义了纯虚接口,也就是不可被实例化,主要是在Object对象的基础上又添加了坐标设置或获取的相关
接口。
Item类型又派兵出了一类Bag对象,这是一种特殊的物品对象,其本身具有物品的所有属性及方法,但又可作为
新的容器类型,并具有自己特有的属性和方法,所以实现上采用了派生。mangos在实现时对Bag的类型定义做了点小
技巧,Item的类型为2,Bag的类型为6,这样在通过位的方式来表示类型时,Bag类型也就同时属于Item类型了。虽
然只是很小的一个技巧,但在很多地方却带来了极大的便利。
从WorldObject派生出的类型就有好几种了,Unit、GameObject、DynamicObject和Corpse。Unit为所有生物类
型的基类,同WorldObject一样,也不可被实例化。它定义了生物类型的公有属性,如种族、职业、性别、生命、魔法
等,另外还提供了相关的一些操作接口。游戏中实际的生物对象类型为Creature,从Unit派生,另外还有一类派生对
象Player为玩家对象。Player与Creature在实现上最大的区别是玩家的操作由客户端发来的消息驱动,而Creature的
控制是由自己定义的AI对象来驱动,另外Player内部还包括了很多的逻辑系统实现。
另外还有两类特殊的Creature,Pet和Totem,其对象类型仍然还是生物类,只是实现上与会有些特殊的东西需要
处理,所以在mangos中将其作为独立的派生类,只是实现上的一点处理。另外在GameObject中也实现有派生对象,
最终的继承关系图比较简单,就不麻烦地去画图了。
从我所了解的早期游戏实现来看,大部分的游戏对象结构都是采用的类似这种方式。可能与早期对面向对象的理解
有关,当面向对象的概念刚出来时,大家认为继承就是面向对象的全部,所以处处皆对象,处处皆继承。
类实现的是一种封装,虽然从云风那里出来的弃C++而转投C的声音可能会影响一部分人,但是,使用什么语言本
身就是个人喜好及团队整体情况决定的。我们所要的也是最终的实现结果,至于中间的步骤,完全看个人。还是用云风
的话说,这只是一种信仰问题,我依然采用我所熟悉的C++,下面的描述也是如此。
随着面向对象技术的深入,以及泛型等概念的相继提出,软件程序结构方面的趋势也有了很大改变。C++大师们常
说的话中有一句是这样说的,尽是采用组合而不是继承。游戏对象的实现也有类似的转变,趋向于以组合的方式来实现
游戏对象类型,也就是实现一个通用的entity类型,然后以脚本定义的方式组合出不同的实际游戏对象类型。
描述的有些抽象,具体实现下一篇来仔细探讨下。
游戏对象的实现(下)
在上一篇中做了个简单描述,还有一种游戏对象实现方法是使用通用的实体对象。
在游戏编程精粹四有三篇文章讲到了实体以及实体管理的实现方案,其中一篇文章说到了实体管理系统的四大要
素:定义实体怎样沟通的实体消息,实现一实体类代码和数据的实体代码,维护已经注册在案的实体类列表,和用来创
建、管理、发送消息的实体管理器。
关于实体消息的内容之前讨论事件机制的时候做过一点说明,其实这也就是按接口调用和按消息驱动的区别
您可能关注的文档
- 小学信息技术一年级上册第1课《认识新朋友(初步认识计算机)》教案.pdf
- 600502安徽建工2023年三季度经营风险报告.pdf
- 河南省焦作市温县黄庄镇第一初级中学2022-2023学年九年级上学期期末化学试题.pdf
- 《曾子杀猪》课件.pdf
- 2024年教师个人年终总结参考范文(八篇).pdf
- hr面试十大经典提问.pdf
- 大学生自我分析.pdf
- 学期的自我总结范文7篇.pdf
- 1,4丁二醇顺酐法工艺新进展.pdf
- 提高生产效率的精益管理方法.pdf
- 第三单元解决问题的策略 三年级下册数学高频考点重难点讲义(苏教版)(1).docx
- 4.4 解比例 数学六年级下册同步培优讲义(苏教版).docx
- 第四单元《根据方向与距离确定物体位置》(教案)五年级下册数学青岛版.docx
- (奥数典型题)第三讲 分解质因数 五年级下册数学思维拓展提升讲义(人教版).docx
- 2.2:2、5、3的倍数-人教版五年级数学下册第二单元:因数和倍数.docx
- 第六单元正比例和反比例 六年级下册数学高频考点重难点讲义(苏教版).docx
- 第二单元除数是一位数的除法 三年级下册数学高频考点重难点讲义(人教版).docx
- 第二单元-认识三角形和四边形 四年级数学下册提升(北师大版).docx
- 第一单元观察物体(三)五年级下册数学高频考点重难点讲义(人教版).docx
- 第九单元 数学广角—推理 二年级数学下册重难点知识点(人教版).docx
文档评论(0)