當前位置:編程學習大全網 - 編程語言 - 誰能告訴我傳奇源碼是多少?

誰能告訴我傳奇源碼是多少?

傳奇源碼分析-序言

簡述:

最近對高性能的服務器比較感興趣,讀過了DELPHI的Socker源碼WebService及RemObject之後,高性能的服務器感興趣。

妳可能需要的以下知識才能更好的讀懂壹個商業源碼:

1).SOCKET的I/O模型熟悉掌握。

2).面向對象技術的熟悉掌握。

3).Socket的API掌握。

4).多線程技術等。

5).壹門熟悉的開發工具掌握,和多種語言的源碼閱讀能力。

我下的源碼 LegendOfMir2_Server:***包含AdminCmd, DBSrv, GameGate, GameSvr,LoginGate, LoginSvr, SelGate七個工程文件。傳奇的客戶端源代碼有兩個工程,WindHorn和Mir2Ex。

我分析的, 主要是VC SQL版本的, DELPHI翎風源碼不做分析, 另外下載了樂都WIL編輯器和樂都MPA地圖編輯器這些工具.

傳奇源碼分析-客戶端(WindHorn簡述和傳奇文件格式分析)

DirectX類庫分析(WindHorn):

1. RegHandler.cpp 註冊表訪問(讀寫)。

2. CWHApp派生CWHWindow,CWHWindow完成窗口的註冊和創建。CWHWindow派生出CWHDXGraphicWindow,CWHDXGraphicWindow調用CWHWindow完成創建窗口功能,然後再調用CreateDXG()來初始化DirectX。

3. WHDefProcess.cpp在構造函數中獲得CWHDXGraphicWindow句柄。

Clear函數中調用在後臺緩存上進行繪圖操作,換頁至屏幕。

ShowStatus函數,顯示狀態信息。

DefMainWndProc函數,調用CWHDXGraphicWindow->MainWndProcDXG消息處理。

4. WHImage.cpp圖象處理。加載位圖,位圖轉換。優化處理。

5. WHSurface.cpp 主頁面處理。

6. WHWilTexture.cpp 材質渲染。

WILTextureContainer: WIL容器類。m_pNext指向下壹個WILTextureContainer,單鏈表。

7. WHWilImage.cpp 從Data目錄中加載Wix文件(內存映射)。

8. WHDXGraphic.cpp 處理DirectX效果。

文件類型格式探討:

Wix文件:索引文件,根據索引查找到相應數據地址(數據文件)。

// WIX 文件頭格式

typedef struct tagWIXFILEIMAGEINFO

{

CHAR szTmp[40]; // 庫文件標題 'WEMADE Entertainment inc.' WIL文件頭

INT nIndexCount; // 圖片數量

INT* pnPosition; // 位置

}WIXIMAGEINFO, *LPWIXIMAGEINFO;

我們下載壹個Hedit編輯器打開壹個Wil文件,分析壹下。我們發現Wix文件中,0x23地址(含該地址)以前的內容是都相同的,即為:#INDX v1.0-WEMADE Entertainment inc.

Ofs44 0x2C的地方:存放著0B 00 00 00,高低位轉換後為:0xB轉換十進制數為11(圖片數量)Ofs48 0x30的地方:存放著38 04 00 00,高低位轉換後為:0x438 = 1080, 這個就是圖象數據的開始位置。

我們用Wil編輯打開對應的Wil文件,發現,果然有11張圖片。另外我們發現,在Ofs = 44 -47之間的數據總是38 04 00 00,終於明白,所有的圖片起始位置是相同的。

Wil文件: 數據文件。

前面我們說了圖象數據的開始位置為0x438 = 1080, 1080中有文件開頭的44字節都是相同的。所以,就是說有另外的1036字節是另有用途。1036中有1024是壹個256色的調色板。

我們看到圖片位置數據為: 20 03 58 02, 轉化為十六進制: 0x320, 0x258 剛好就是800*600大小的圖片。07 00 D4 FF。圖片起始位置為:

Ofs 1088: 0x440 圖片大小為480000

起始位置:0x440 1088 終止位置:0x7573F 481087 為了驗證數據是否正確,我們通過Wil工具,把第壹幅圖片導出來,然後用Hedit編輯器打開,經過對比,我們發現,數據壹致。大小壹致。

第二張BMP圖片(圖片起始位置:0x436 10078) : F0 01 69 01 , 07 00 D4 FF

剛好大小。第二張Wil起始位置:Ofs:481096 0x75748

知道了圖片格式,我們可以寫壹個抓圖片格式的程序了。

傳奇源碼分析-客戶端(全局變量與總體執行流程)

客戶端:

傳奇的客戶端源代碼有兩個工程,WindHorn和Mir2Ex。

  • 上一篇:壹師壹優課-教案
  • 下一篇:尼爾·斯蒂芬森的職業生涯
  • copyright 2024編程學習大全網