- 為什么要研究TrinityCore ?
- (1)它是一個完整成熟的可運行調試的網游服務器框架。
- (2)它是一個跨平台的標准C++編寫的項目,在Windows、Linux、MacOSX上都可編譯運行。
- (3)它使用了ACE、OpenSSL、Socket Library等開源庫。
- (4)代碼質量高,適合於進階C++高級程序員學習。
引言: 在2005年魔獸世界正流行時,有一批牛人基於官方WOW客戶端生造一個模擬的服務器,這個開源項目叫Mangos,在於幫助人們了解網游服務器開發。 在2008年后,在Mangos的基礎上又衍生了一個新的項目TrinityCore,經過多年的積累,魔獸私服TrinityCore已經相當穩定,可以正常的用官方客戶端登錄私服,體驗魔獸世界。
但是由於魔獸版本過多,每更新一次WOW客戶端就得對服務器進行調整,因為一旦客戶端修改了網絡包以及數據庫結構,服務器也得同步更新,因此一個服務器版本只能對應一個指定的客戶端版本。 這也導致想配置一個完整的私服環境是困難的,但本人經過兩個月的不懈努力,終於成功搭建整個環境(需要各種文件資源的請QQ ME)。
客戶端使用官方的3.3.0 11159台服版本,客戶端目錄如下所示:
主要的資源文件為Data目錄下的MPQ文件,打包存儲了所有的資源文件。因為服務器端也需要部分資源文件,需要從客戶端的MPQ文件里提取資源。
在11159服務器端包中,找到地圖解壓工具,如下圖
將“TC2-3.3.0-V1.0.0.exe”文件放到WOW目錄下,執行,得到dbc和maps兩個文件夾,將兩文件夾放到Trinity_Core_2目錄下,作為服務器端資源文件。
從網上下載的源碼包如下:
win文件夾下存放sln解決方案文件,如下圖:
src文件夾下存放源代碼文件。
sql文件夾下存放數據庫sql文件,如下圖:
正常執行順序依次是:create_mysql.sql –》 realmd.sql –》 characters.sql–》 world.sql。
realmd數據庫存放帳號和服務器列表信息,characters數據庫存放玩家數據,world存放游戲信息。 在navicat formysql里執行sql文件(“運行批次處理文件”)
其中realmd和characters數據庫只需要執行以上兩個sql文件即可,里面可以沒數據。但world數據庫必須要有正式的數據,執行下面這個非常大的sql文件,該sql負責重建表,並插入大量數據(估計需要三四個小時)。
用Visual Studio 2005打開TrinityCore&Script VC80.sln文件,如下圖:
主要有TrinityRealm和TrinityCore兩個exe項目,其中zlib項目由於不知道什么原因,每次調試都重新編譯,生成成功后將其卸載,由於只有shared項目直接依賴zlib庫,右擊shared屬性,選擇“管理員”-》“常規”-》“附加依賴項”,添加一條,如下圖:
.\zlib__$(PlatformName)_$(ConfigurationName)\zlib.lib
由於要調試程序,要生成調試信息,並阻止VS對代碼進行優化,因為一旦優化后就無法正常調試程序了,會出現查看不到變量信息,以及斷點和代碼不匹配的情況出現,設置如下(每個項目都要設置):
設置“調試信息格式”為“程序數據庫Zi”
設置“優化”為“禁用”
exe項目還需要專門設置一項
設置“生成調試信息”為“是”
設置調試類型為“Release”,如下圖
執行“重新生成解決方案”,在bin文件夾下生成dll和exe文件,如下圖
轉自:http://blog.csdn.net/lgh1700/article/details/7692394