轉自: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
小王 閱讀(2134)
評論(0) 編輯 收藏 引用 所屬分類:
開源項目 、
游戲服務器端開發