转自:http://blog.csdn.net/romandion/archive/2009/10/27/4733596.aspx
假设世界突然静止,你能够从中单独去掉的物体就是构成这个世界的对象,包括玩家、怪物、武器、矿石等。魔兽世界是个大型的网游,里面的种类十分丰富,更不用说对象了。当我看着trinity-core2的源码中,game目录的时候,有种傻眼的感觉,实在太多了。为了理解方便,我们抽丝剥茧,分析出类的继承关系。
在tc2中,所有的对象都被认为是object,以object作为基类,以1.2.3格式表示继承关系,如:1 --> object ;1.2 --> worldobject。1.2表示worldobject继承自1(object)。下面列出完整的对象继承族谱。
1、 Object
1.1 Item 【物品,比如武器】
1.1.1 Bag 【包裹,特殊的物品,可以容纳其他物品】
1.2 WorldObject 【显示在地图上的物体】
1.2.1 Corpse 【尸体】
1.2.2 DynamicObject 【动态生成的对象,比如魔法,生命周期比较短】
1.2.3 GameObject 【游戏物品,这个分类很难从字面上理解,后面会比较详细的介绍】
1.2.3.1 Transport 【传送点】
1.2.4 Unit 【游戏中有生命的单位】
1.2.4.1 Creature 【生物,非玩家】
1.2.4.2 TempSummon 【临时召唤物】
1.2.4.2.1 Minion 【宠物】
1.2.4.2.1.1 Guardian 【守卫】
1.2.4.2.1.1.1 Pet 【玩家的宠物,比如猎人的宠物,或者术士的恶魔,除非主人解散,否则一直存在】
1.2.4.2.1.2 Puppet 【傀儡,有一定的存在时间。比如德鲁依的树人】
1.2.4.2.1.3 Totem 【图腾,萨满的图腾】
1.2.4.2 Player 【玩家,就不用多解释了】
将整个魔兽世界分解静态物体和静态物体的行为,就比较好理解了。事实上,现实世界也是如此。将世界划分为时间和空间2个维度,现实物体就是空间的概念,行为就是空间物体在时间维度上的变化。象光或者其他不可见或者没有空间占位的物品也可以看作特殊的空间物体。我在这里先将空间维度将分离出来分析。
差点忘了介绍GameObject这个另类。在GameObject.h中,有个struct GameObjectInfo定义,里面有个union能大概看出GameObject究竟指的是哪些东西。
0、GAMEOBJECT_TYPE_DOOR,指的是门
1、GAMEOBJECT_TYPE_BUTTON,应该是按钮,锁之类的。
2、GAMEOBJECT_TYPE_QUESTGIVER任务物品
3、GAMEOBJECT_TYPE_CHEST箱子
4、GAMEOBJECT_TYPE_BINDER没定义,估计没有用上。
5、GAMEOBJECT_TYPE_GENERIC通用的,跟任务相关的东西
6、GAMEOBJECT_TYPE_TRAP陷阱
7、GAMEOBJECT_TYPE_CHAIR椅子
8、GAMEOBJECT_TYPE_SPELL_FOCUS没搞懂啥玩意儿。
9、GAMEOBJECT_TYPE_TEXT文本
10、GAMEOBJECT_TYPE_GOOBER应该是果实一类的吧。
11、GAMEOBJECT_TYPE_TRANSPORT传送点
12、GAMEOBJECT_TYPE_AREADAMAGE区域性伤害,没搞懂啥玩意儿。
13、GAMEOBJECT_TYPE_CAMERA照相机,再研究下
14、GAMEOBJECT_TYPE_MAPOBJECT地图对象,空着
15、GAMEOBJECT_TYPE_MO_TRANSPORT地图对象的传送,不知道啥玩意儿。
16、GAMEOBJECT_TYPE_DUELFLAG决斗标志,估计就是PK,插旗吧。空着没用
17、GAMEOBJECT_TYPE_FISHINGNODE钓鱼点
18、GAMEOBJECT_TYPE_SUMMONING_RITUAL仪式,不知道干啥。估计跟术士拉人那东西有关。
19、GAMEOBJECT_TYPE_MAILBOX邮箱
20、GAMEOBJECT_TYPE_DONOTUSE顾名思义,没用
21、GAMEOBJECT_TYPE_GUARDPOST岗哨,是某种生物
22、GAMEOBJECT_TYPE_SPELLCASTER魔法施放。
23、GAMEOBJECT_TYPE_MEETINGSTONE集合石
24、GAMEOBJECT_TYPE_FLAGSTAND不知道啥玩意儿。
25、GAMEOBJECT_TYPE_FISHINGHOLE估计也是钓鱼点
26、GAMEOBJECT_TYPE_FLAGDROP掉落标记
27、GAMEOBJECT_TYPE_MINI_GAME也没懂是啥玩意儿。
28、GAMEOBJECT_TYPE_CAPTURE_POINT应该是部落和联盟争夺地区
29、GAMEOBJECT_TYPE_AURA_GENERATOR灵气
30、GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY地下城难度
31、GAMEOBJECT_TYPE_BARBER_CHAIR理发师的椅子,唉,都啥玩意儿啊。
32、GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING可摧毁的建筑
33、GAMEOBJECT_TYPE_GUILDBANK工会银行,空,不可见。
34、GAMEOBJECT_TYPE_TRAPDOOR陷阱的门。
应该说,GameObject是描述游戏中,除装备、生物、魔法外,无法准确归类的东西,比较杂,因此只能笼统归结为游戏对象
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/romandion/archive/2009/10/27/4733596.aspx
posted on 2010-07-11 01:53
小王 阅读(2101)
评论(0) 编辑 收藏 引用 所属分类:
开源项目 、
游戏服务器端开发