
Mangos 是開源《魔獸世界》服務端模擬器(支持 TBC 2.4.3 版本),採用 C++ 開發,基於 ACE 網絡庫,數據庫用 MySQL。本文記錄從源碼編譯到可運行服務器的完整實踐路徑。
src/bindings/ScriptDev2)mangos.sln成功產物位於 src/bin/release/:
libeay32.dll
dbghelp.dll
libeaysql.dll
mangosd.exe # 世界服務進程
MaNGOSScript.dll # 腳本模塊
realmd.exe # 登錄/認證服務進程
D:\WoWServer\),複製上述 6 文件至此src/mangosd/mangosd.conf.dist.in → mangosd.confsrc/realmd/realmd.conf.dist.in → realmd.confmangosd.conf 關鍵項:
LoginDatabaseInfo = "127.0.0.1;3306;root;password;realmd"
WorldDatabaseInfo = "127.0.0.1;3306;root;password;mangos"
DataDir = "./" # 資源文件目錄(maps、dbc、vmaps)
realmd.conf 同樣設置 LoginDatabaseInfomangos、realmd、characters、scriptdev2sql/mangos.sqlsql/realmd.sqlsql/characters.sqlsrc/bindings/ScriptDev2/sql/ 下所有文件服務端需客戶端地圖、DBC 數據文件進行碰撞檢測、路徑尋找、屬性查詢。
ad.exe(地圖提取器,又名 mapextractor)mpq.exe + zlib.dll(MPQ 解包工具)ad.exe 放入客戶端根目錄(World of Warcraft/)maps/ 空目錄ad.exe,自動提取地圖至 maps/(~1.06 GB)Data/enTW 改名 enGB,並重命名 locale-enTW.MPQ 等 3 文件的 TW→GBmpq.exe、zlib.dll 放入客戶端 Data/zhTW/(或對應語言目錄)mpq e locale-zhTW.MPQ *.dbcExtract/locale-zhTW/DBC/,重命名為 dbc/將 maps/、dbc/ 複製至服務端運行目錄(DataDir="./" 指向處)。
realmd.exe(認證服務)mangosd.exe(世界服務),等待提示 Mangosd ready...realmlist.wtf:set realmlist 127.0.0.1ADMINISTRATOR,密碼同賬號,登入測試@echo off
rd cache /s /q
echo set realmlist 127.0.0.1 > realmlist.wtf
start wow.exe -opengl -windowed
exit
保存為 start.bat 放入客戶端目錄,雙擊即玩。
| 現象 | 排查方向 |
|---|---|
編譯報缺少 ace/ 頭文件 | ACE 未正確安裝或環境變量 ACE_ROOT 未設置 |
啟動報 maps not found | DataDir 配置錯誤或 maps 目錄未複製到位 |
| 進遊戲卡在傳送中/斷線 | realmd/mangosd 數據庫連接失敗、防火牆阻擋 3724/8085 端口 |
| NPC/任務/法術不工作 | ScriptDev2 SQL 未導入或版本不匹配核心 |
| 中文亂碼 | 數據庫/表/連接字符集統一 UTF8;conf 設置 DefaultLocale=8 |
Mangos 編譯部署是系統集成、網絡編程、數據庫管理、逆向工程綜合實戰。完成部署不僅擁有私有艾澤拉斯,更深度理解 MMORPG 服務端架構:認證集群、世界分線、網格管理、AI 腳本、數據持久化。建議進一步閱讀核心源碼 src/game/、src/database/、src/network/,探索分布式擴展、熱更腳本、反外掛機制等高階主題。