天龍八部源碼描述

來源:互聯網
上載者:User

天龍八部(武俠世界)的源碼很可能是天龍八部代碼流出後改寫的,因為在看了代碼中可以找到一些證據,整個用戶端分為:一個是編輯器,一個是用戶端,採用OGRE+cegui+自寫的簡單的物理碰撞檢測+FMOD+自寫的網路程式庫。
伺服器端代碼目前沒仔細關注


用戶端總體的描述如下:
UI系統 CEGUI UI基礎系統

CEGUI渲染器

Expat XML解析器 CEGUI依賴,估計編寫者不喜歡用
FreeType2 跨平台、開源的字型渲染器 用於繪製中文
指令碼 luaPlus

3D顯示引擎Ogre開源的高效渲染引擎 最新的OGRE是1.7.2
碰撞檢測 Opcode 開源,佔用記憶體少 其他可考慮使用bullet,ODE或者其他(一般根據實際需求選擇)
天龍的碰撞檢測似乎是只做了簡單的碰撞盒檢測
TinyXML XML的解析工具 遊戲中使用的XML解析器,其實目前可以用RapidXML更加小巧

Music&Sound Effect FMOD SDK即可 ,其實OPENAL也是不錯的選擇。

WX系統
WXClient Action操作管理 包括聊天,物品,生活技能等 暫時看到,所有實際上都是針對表徵圖的操作
Cursor 滑鼠指標管理(還掛接了很多命令)
DataBase 用戶端用記憶體資料庫,實現了了WXEngine中的DB定義 包括搜尋,獲得,開啟檔案功能TLBB_DBC,可以證實雖然叫武俠,但是留下了天龍的影子
DataPool 將遊戲中資料都統一管理,包括UI,TeamOrGroup等 這裡面有個CModelShowInUI的類,(奇怪,這個類不應該放在這裡吧?)
Event 遊戲事件處理器,分為Event隊列,和慢處理Event隊列 很值得參考的部分!!!使用了註冊Event處理函數的方式,參數很靈活!

FakeObject 用於在ui上顯示的物體(這裡作為一個管理器類)
Helper 用luaPlus匯出,另外建一個協助系統視窗
Input 輸入類
Interface 整個遊戲的外部介面控制類,所有外部模組需要通過這個介面來控制遊戲的資料和控制,作為指令碼調用類型
NetWork 網路訊息的處理
Object 邏輯基類Object與顯示無關,當然派生出可以顯示的類型!以及遊戲中具體物件類型
Procedure 遊戲流程,登陸,角色選擇,角色建立,進入情境等待,MMO遊戲主流程,登陸伺服器

ResourceFiles 各種滑鼠.cur檔案
Script 指令碼系統管理器,繼承於Engine的ScriptEnvironment,呼叫指令碼
Sound
Soure File _tWinMain在這裡 2
Variable 配置參數系統

World 情境地區Zone,Scene,World管理器,尋路等等功能,一個ZONE的大小正好是一個螢幕的大小,ZONE構成Scene
WXCore
Collision 碰撞檢測,主要包裹了ogre的骨骼模型處理方法
EffectSystem 特效系統
Extra附加 ModelType 模型定義

SkeletonMesh (懷疑被廢棄)Dobject_NT包裹了Ogre::Entity,可掛接相關特效,SceneNode上
SkeletonMeshUrl 作為儲存格式,儲存Dobject_NT
LogicModel 渲染層和用戶端的結合層,利用渲染層,實現用戶端對情境中動態物體的需求,而不需調用渲染層代碼
OgreExt 對於Ogre的擴充,渲染
PostFilters 3D畫面效果,後期過濾器

ResourceSystem Ogre的檔案系統,用於讀取和整體負載檔案系統
Header Files&&Source Files 可渲染對象層BasicRenderable及其子類

Terrain 實現及其管理編輯,最佳化
WX::Object 繼承了boost::enable_shared_from_this

XercescParser 在這裡又發現了另外一個XML的解析庫
WX::AcrotObj,WX::ActorObject,WX::LogicModelObject 都要仔細閱讀弄清原理
Scene 基類,管理,序列化,編輯等方法
WXEngine Cursor
DataBase

Debuger 調試用的?但是一直沒有看出來具體在哪裡使用,難道是給指令碼?
Exception 裡麵包括Xzip的壓縮目錄……,當然也包括拋出異常定義,及CrashReport FakeObject,Gfx,Helper,Input
Math,Profile,Script,Sound

Time,UI,Util,Variable 各種功能的虛類,當然也有具體實現了的類。等待繼續整理分析 2
Kernel TDKernel通過全部繼承於TDNode(及針對相應TDNode的TDClass)管理類註冊及外掛程式資訊 CEGUISystem以及WXRender都是通過Plugin的方式加入Kernel(待驗證)
TDNode為了Kernel便於組織資料,而定下的核心節點類,類似樹
TDClass節點定義類,根據類名取定義類的名字,類似MFC建立了自己的類鏈 重要的是幾個類定義實現宏自動把tClass給賦值初始化了。還順便實現了CreateObject函數
Game Action
DataPool

Event 2
Interface

Object
World

WXNetPackets Combat 陣營資料結構表,技能及效果資料表記錄結構,資料表通用管理讀入器 有模板資料管理器
DataBase TLBB_DBC.h 定義伺服器用戶端通用的DBC資料庫檔案類
Common 整個遊戲的公用Common定義,GameStruct

GameUtil 方便函數,CRC校正,Lock,二進位轉化為字串DB等東西
隨機函數,Type,指令碼命令結構,技能資料管理,playerStatus 2

重要的PacketDefine
Header Files&&Source Files 基本都是對Common\Net中Packet的具體情況使用實現Packet->Execute PacketDefine的實現
WXRender Camera 3種攝像機
Object RFObject基於WXEngine中渲染層物體基類tEntityNode的實現
RFObj繼承於RFObject用於WX::Object對象的包裹,自己指標放在WX::Object的Data中
RFObj_Actor,RFObj_Model,RFObj_Static,都繼承於RFObj人物,動態模型,靜態模型 2
RFObj_Actor原來設計應該會用到SkeletonMesh.h中的Dobject_NT,但實際上沒有產生關聯,WXLogicModel被說明是用來替換原來的Dobject 2
Header Files&&Source Files DebugPanel 包括調試資訊以及HitObjectPanel(打擊資訊?)
RenderSystem 整合環境對象,後期渲染過濾管理,及核心System。載入資源技巧有不少在其中
ResourceProvider 資源提供系統,內部使用Ogre的資源群組管理器,進行統一的管理判斷。 ResourceLoadListener 用於找到分析指令碼時的詳細錯誤,裡面是ScriptParsingListener : public Orge::ResourceLoadListener真夠強大的…… ,
RFFakeObjectManager 用於UI顯示的模型在渲染層的管理器
TerrainGrid 地形格可渲染對象
WXObj_ProjTex WXObj投射紋理,包括選擇環,陰影斑點,腳印

原文連結: http://item.feedsky.com/~feedsky/6sov/~8099082/499855074/5137431/1/item.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.