魔兽世界私服trinitycore2的架构(5)世界对象
来源:互联网 发布:韩国网络剧短剧 编辑:程序博客网 时间:2024/04/29 09:21
假设世界突然静止,你能够从中单独去掉的物体就是构成这个世界的对象,包括玩家、怪物、武器、矿石等。魔兽世界是个大型的网游,里面的种类十分丰富,更不用说对象了。当我看着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是描述游戏中,除装备、生物、魔法外,无法准确归类的东西,比较杂,因此只能笼统归结为游戏对象。
- 魔兽世界私服trinitycore2的架构(5)世界对象
- 魔兽世界私服trinitycore2的架构——世界对象
- 魔兽世界私服trinitycore2的架构(1)
- 魔兽世界私服trinitycore2的架构(2)
- 魔兽世界私服trinitycore2的架构(3)地图数据
- 魔兽世界私服trinitycore2的架构(4)工作线程
- 魔兽世界私服trinitycore2的架构(6)国际化
- 魔兽世界私服trinitycore2的架构(7)国际化方案
- 魔兽世界私服trinitycore2的架构(8)脚本
- 魔兽世界私服trinitycore2的架构(9)人工智能
- 魔兽世界私服trinitycore2的数据库TDB(1)
- 魔兽世界私服trinitycore2的数据库TDB(2)
- 魔兽世界私服trinitycore2的数据库TDB(3)
- 魔兽世界私服架设
- “魔兽世界”的虚拟历险与现实世界的悲喜人生(摘自English Digest,个人整理排版)
- 开源的魔兽世界参考架构——mangos
- 谈魔兽世界服务器和客户端交互的架构
- [从架构到设计]第二回:对象的旅行---对象和人,两个世界,一样情怀
- 数据库连接大全
- 时间格式
- 逻辑信道
- 一个net的运算符
- 见鬼啦 见鬼啦
- 魔兽世界私服trinitycore2的架构(5)世界对象
- Jquery 常用方法
- paramter 和argument
- 【总结】Linux下C开发,怎么做成库文件,又怎么引用这个库文件?
- winform程序托盘处理
- 模拟计算器
- VC6的watch窗口的一些小技巧
- 工作流开发平台
- 未来猜想:让你可以购买时间