標籤:

如何搭建魔獸私服?


〇、前言

TrinityCore是一個魔獸世界服務端模擬器,我們可以通過TrinityCore來學習大型網路遊戲服務端的編寫,從中汲取營養來編寫我們自己的遊戲。

一、前期準備工作

CPU需要支持SSE2指令集

Boost版本大於等於1.59.0

MySQL資料庫版本大於等於5.1.0

OpenSSL版本為1.0.x

CMake版本大於等於3.3.2

MicroSoft Visual Studio (Community)版本大於等於14 (2015 update 3)

1.安裝 Git Extensions

注意其中Git、MySYSGit和KDiff這三個軟體必須全部安裝,安裝Git的時候,在路徑選擇那裡選擇「RunGit from the Windows Command Prompt」。MySYSGit和KDiff使用默認選項安裝即可。

2.安裝IDE

安裝Visual Studio 2015,注意當安裝VS2015時,默認是不支持C++的,我們需要手動選擇Visual C++,選擇自定義安裝,然後將Visual C++選項選中,如下圖所示:

3.安裝MySQL

TrinityCore支持的MySQL版本為5.5和5.6,請勿使用5.7及以上版本。

  1. 下載安裝包
  2. 在MySQL Configuration配置中,設置用戶名為trinity,密碼同樣為trinity,並且確保該用戶擁有localhost域訪問許可權。
  3. 建議將MySQL註冊為服務,這樣資料庫就可以隨Windows開機啟動了。

4.選擇一款資料庫管理軟體

1)SQLYog Community Edition(強烈推薦)

2)HeidiSQL (對新手友好)

3)MySQL Workbench(MySQL官方出品,個人感覺使用起來不太友好,但是是唯一可以建立模型的軟體)

使用你安裝好的資料庫管理軟體連接資料庫,測試資料庫是否安裝成功。

5.安裝Boost

下載對應 Visual Studio 2015 的版本:

1)64bit:http://sourceforge.net/projects/boost/files/boost-binaries/1.59.0/boost_1_59_0-msvc-14.0-64.exe/download

2)32bit:Download Boost C++ Libraries from SourceForge.net

Boost 1.59.0是可以使用的最低版本,推薦使用1.60.0版本。

64bit: Download Boost C++ Libraries from SourceForge.net

32bit: Download Boost C++ Libraries from SourceForge.net

安裝到默認路徑(C:localoost_1_XX_0),然後添加一個名為「BOOST_ROOT」的環境變數到你的安裝路徑,比如「C:/local/boost_1_60_0」。確保沒有末尾斜杠,如下圖所示:

注意:這張圖片中的版本號為1_55_0,將它改為你的實際版本號。

6.安裝CMake

下載cmake-3.6.2-win64-x64.msi 這個版本,不要下載RC (Release Candidate)版本。注意要下載64bit版本。如圖所示:

7.安裝OpenSSL

不要下載light版本,分為32和64位兩個版本,下載對應版本即可。我們這裡選擇64bit版本,如圖所示:

注意:不能選擇最新版本1.1.0,必須選擇1.0.x版本。

如果安裝過程中提示沒有VisualC++庫的話請到網上自行下載安裝。

二、代碼編譯1.從GIT拉取代碼

創建一個文件夾,在該文件夾上點擊滑鼠右鍵,選擇「Git Extensions -&> Clone」,如下圖所示:

3.3.5a版本倉庫地址:

Repository to clone: GitHub - TrinityCore/TrinityCore: TrinityCore Open Source MMO Framework

Destination: D:TrinitySource

Subdirectory to create: &

Branch: 3.3.5

Personal Repository: Yes

6.x版本倉庫地址:

Repository to clone: GitHub - TrinityCore/TrinityCore: TrinityCore Open Source MMO Framework

Destination: D:TrinitySource

Subdirectory to create: &

Branch: 6.x

Personal Repository: Yes

我們這裡選擇3.3.5的倉庫拉取代碼。

2.使用CMake生成VS2015使用的Visual C++ 工程

編譯之前在硬碟上建立編譯文件目錄,比如「D:TrinityBuild」。

1)運行CMake,如下圖所示:

2)點擊 Browse Source… -&> 選擇源碼目錄(D:/Trinity/Source)

3)點擊 Browse Build… -&> 選擇編譯目錄(D:/Trinity/Build)

4)點擊 Configure

5)確保 Use default native compilers 選項是選中狀態

6)選擇Visual Studio 14 Win64

7)點擊Finish

8)確保Tools是被選中狀態。

9)再次點擊Configure

10)點擊Generate,VS所需的資源文件已經生成到D:/Trinity/Build目錄了。

3.使用VS2015編譯代碼

使用VS2015打開D:/Trinity/Build目錄下的TrinityCore.sln文件,經過一段時間的讀取,VS載入了TrinityCore整個工程。我們選擇菜單中的Build-&>Configuration Manager選項打開編譯配置界面。

設置 Active SolutionConfiguration 為 Release。

設置 Active Solution Platform 為 Win64 (確保上面安裝的軟體全部實64位的)。

點擊 Close 關閉對話框。

在 Solution Explorer 中右鍵單擊 ALL_BUILD 選擇 Clean。

清理完畢後再次右鍵單擊ALL_BUILD 選擇 Build。

現在就已經開始編譯源碼了,這個過程要花5-30分鐘,視你的電腦配置而定。

完成後會提示:

========== Build: 22 succeeded, 0 failed, 0up-to-date, 0 skipped ==========

你可以在D:TrinityBuildinRelease找到編譯好的文件。

想要正常運行程序,你需要如下文件:

  • libeay32.dll
  • libmySQL.dll
  • ssleay32.dll
  • worldserver.conf.dist
  • worldserver.exe
  • authserver.conf.dist
  • authserver.exe

其中worldserver.conf.dist 、worldserver.exe 、authserver.conf.dist和authserver.exe是編譯成果,libeay32.dll、libmySQL.dll和ssleay32.dll需要從以下路徑(如果你安裝軟體的時候手動改過路徑,請從你改過的路徑中拷貝)手動拷貝過來:

libmySQL.dll – C:Program FilesMySQLMySQL Server 5.xlib

libeay32.dll, ssleay32.dll – C:OpenSSL-Win64in

至此,編譯完成!

4.保持更新

在源碼目錄(D:TrinitySource)上點擊右鍵,選擇Git菜單中的Pull(拉取代碼的意思)選項。

打開CMake軟體,點擊Configure,然後點擊Generate。

使用VS2015重新編譯。

完成!

三、導入資料庫並準備資源文件

TrinityCore使用MySQL資料庫,其中我們需要建立三個資料庫,它們分別是authcharactersworld

  • Auth:許可權資料庫,存儲伺服器列表,玩家賬戶等信息。
  • Characters:角色資料庫,存儲所有角色人物相關的信息。
  • World:世界資料庫,存儲整個魔獸世界的一切信息,包括NPC,怪物,裝備,道具,任務,副本等等所有一切。

1.下載數據腳本

下載world資料庫sql腳本,地址如下:

Release TDB 335.61 · TrinityCore/TrinityCore · GitHub

打開以上網址,選擇TDB_full_335.61_2016_04_11.7z下載並解壓縮。

2.導入資料庫腳本

1)執行D:TrinitySourceTrinityCoresqlcreatecreate_mysql.sql。

2)選擇auth資料庫,執行D:TrinitySourceTrinityCoresqlaseauth_database.sql腳本。

3)選擇characters資料庫,執行D:TrinitySourceTrinityCoresqlasecharacters_database.sql腳本

4)選擇world資料庫,執行剛剛下載解壓縮的TDB_full_world_335.61_2016_04_11.sql腳本。

3.保持資料庫更新

每次啟動worldserver.exe時,會自動執行最新的SQL升級腳本,無需人工干預。

4.準備資源文件

除了資料庫之外,伺服器的運行還依賴以下資源文件:

1)取得資源文件提取工具:

  • extractor.bat 批處理文件,我們主要通過這個文件執行命令提取資源文件。
  • mapextractor.exe 這個工具負責提取dbc和cameras文件。
  • vmap4extractor.exe 這個工具負責提取maps文件。
  • mmaps_generator.exe 這個工具負責提取mmaps文件。
  • vmap4assembler.exe 這個工具負責提取vmaps文件。

在D:TrinityBuildinRelease目錄中可以找到4個可執行文件,如圖所示:

在D:TrinitySourceTrinityCorecontrib目錄中可以找到extractor.bat,如圖所示:

將以上文件拷貝到魔獸世界3.3.5客戶端的根目錄中。

2)提取資源文件

雙擊運行extractor.bat,如下圖所示:

輸入1然後回車,這時候會提取dbc和maps文件。

等待提取結束,然後輸入2回車,這時候會提取vmaps文件。

等待提取結束,然後輸入3回車,這時候會提取mmaps文件,注意該步驟將花費大量時間,如果PC性能一般,可能會用2-3個小時左右。

3)拷貝提取好的資源文件

提取結束後,在魔獸世界客戶端根目錄會多出5個文件夾,分別是Cameras、dbc、maps、mmaps和vmaps,將他們拷貝到我們編譯後的服務端程序根目錄中,如下圖所示:

四、配置網路並啟動

1.修改 authserver.conf 配置文件

修改authserver.conf.dist為authserver.conf,然後使用文本編輯器打開。

找到數據源配置(MYSQL SETTINGS)

修改LoginDatabaseInfo = 「localhost;3306;trinity;trinity;auth」

2.修改 worldserve.conf 配置文件

修改worldserve.conf.dist為worldserve.conf,然後使用文本編輯器打開。

同樣修改

LoginDatabaseInfo = 「localhost;3306;trinity;trinity;auth」

WorldDatabaseInfo = 「localhost;3306;trinity;trinity;world」

CharacterDatabaseInfo = 「localhost;3306;trinity;trinity;characters」

注意:如果你的資料庫是使用的是你自己設定的用戶名和密碼,請將斜體對應修改為你自己設定的用戶名的密碼(斜體部分前面是用戶名,後面是密碼)。

3.修改伺服器IP地址

修改auth庫中realmlist表中的address欄位為你的公網IP地址,如下圖所示:

注意:如果你只是在本機測試,不在外網發布可以忽略這一步驟。

4.確認遊戲客戶端版本號

修改gamebuild欄位為你的遊戲客戶端(國服為13930,台服為12340)。

5.啟動伺服器

運行authserver.exe,這個是登錄與網關程序,啟動成功如下圖所示:

運行worldserver.exe,這個是遊戲主程序,啟動成功如下圖所示:

6.創建賬號並授予GM許可權

在worldserver.exe的DOS窗口中輸入如下命令:

  • 創建賬號命令: account create & &

  • 創建賬號例子: account create test test
  • 授予GM許可權命令: account set gmlevel & 3 -1
  • 授予GM許可權例子: account set gmlevel test 3 -1

7.修改客戶端的連接地址

在客戶端根目錄建立一個txt文本文件

在裡面輸入:

echo y | rd /s 「Cache」

echo SET realmlist 「127.0.0.1」 &> DatazhTW
ealmlist.wtf

echo SET realmlist 「127.0.0.1」 &> DataenTW
ealmlist.wtf

echo SET realmlist 「127.0.0.1」 &> DatazhCN
ealmlist.wtf

echo SET realmlist 「127.0.0.1」 &> DataenCN
ealmlist.wtf

echo SET realmlist 「127.0.0.1」 &> DataenUS
ealmlist.wtf

echo SET realmlist 「127.0.0.1」 &> realmlist.wtf

start wow.exe

goto end

注意:如果你配置了公網IP地址,這裡的127.0.0.1需要修改為你的公網IP地址才可以。

保存該文件,將擴展名改為bat並運行。

恭喜你,經過漫長的工作,你終於可以進入遊戲了!這時你可以用剛才創建的GM賬號進行遊戲!你將在獨屬於你自己的世界中盡情遨遊!

其他注意事項

  1. 如果你想在其他PC上運行TrinityCore,你可能會需要安裝Microsoft Visual C++ 2015 Redistributable Package。
  2. Windows XPWindows 2003 不被支持,請不要做無謂的嘗試了。

附錄

  • GM命令大全 GM Commands - TrinityCore
  • 日誌配置 Logging Configuration


小眾的服務端不說 先談談主流的吧。

60年代端很多,mangoszero cmangos-class

70年代端也多,mangosone cmangos-tbc

80年代端的話,雖然有mangostwo和cmangos-wlk,但是個人更推崇trinity core,原因無它,簡單好用修複比較完善,還有個sunwell,但是畢竟太小眾了。

85、90端的話 trinity也有的,還屬於測試版本。

=====================================================================

先寫個60年代端的搭建方案:

1、環境:Debian8.4 64位 硬體配置:2.4GHz雙核CPU+1G內存(編譯所需,正常運行512M就足夠)

2、明眼人看出來了,這個其實就是虛擬機下的環境。

3、Debian安裝跳過,都是比較直觀的,需注意的是,選擇組件的時候,只選SSH服務即可,其它不用勾選。

4、後期的調試安裝,都是通過SecureCRT來完成的,所以Debian的SSH必須開啟遠程支持。開啟方法:用root登陸,修改配置文件 vi /etc/ssh/sshd_config 找到 PermitRootLogin 後面改為yes

PS:按i進入編輯 esc返回 :wq 保存退出

5、Debian下的環境安裝:

安裝桌面環境:LDXE輕量桌面

apt-get update

apt-get install xorg lxde-core ttf-wqy-microhei WDM leafpad lxterminal

安裝編譯環境:

apt-get update

apt-get install grep build-essential gcc g++ automake git-core cmake

apt-get install autoconf make patch libmysql++-dev libtool libssl-dev binutils zlibc libc6 libbz2-dev subversion

apt-get install libboost-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-iostreams-dev

建立用戶組mangos:

groupadd -g 601 mangos

useradd -m -d /home/mangos -c "MANGoS" -g mangos mangos

克隆數據

cd /home/mangos

git clone https://github.com/cmangos/mangos-classic.git mangos

git clone https://github.com/ElunaLuaEngine/ElunaMangosClassic.git elunamangos

git clone https://github.com/ACID-Scripts/Classic.git acid

git clone https://github.com/classicdb/database.git classicdb

開始編譯

cd cd /home/mangos mkdir build cd build

cmake ../mangos -DCMAKE_INSTALL_PREFIX=../server -DDEBUG=0

make -j 2 make install

6、WOW地圖數據提取

解析WOW客戶端下的文件:

(從linux下進行文件操作,建議用WINSCP軟體)

複製/home/mangos/mangos/contrib/extractor_binary下的所有文件至WOW根目錄

複製/home/mangos/mangos/contrib/vmap_extractor下的make_vmaps.bat至WOW根目錄

依次運行WOW目錄下的以下文件:

ad.exe //生成dbc,maps

vmapExtractor.exe //生成Buildings

make_vmaps.bat //生成vmaps

MoveMapGen.exe //生成mmaps 耗時較長

把dbc,maps,vmaps,mmaps文件夾複製到伺服器上的/home/mangos/mapdata下

7、資料庫建立

由於虛擬機搭建,所以我把資料庫另外放置在其它虛擬主機上,(可查看我的另一篇文章:如何搭建WEB主機)

在資料庫伺服器中建立以下資料庫:

60CMangos_realmd

60CMangos_characters

60CMangos_world

並導入以下SQL文件

/home/mangos/mangos/sql/base/realmd.sql &>&> 60CMangos_realmd

/home/mangos/mangos/sql/base/characters.sql &>&> 60CMangos_characters

/home/mangos/mangos/sql/base/mangos.sql &>&> 60CMangos_world

然後:

cd /home/mangos/classicdb

./InstallFullDB.sh

./InstallFullDB.sh 是的,兩遍!

/home/mangos/mangos/sql/scriptdev2/scriptdev2.sql &>&> 60CMangos_world

/home/mangos/acid/acid_classic.sql &>&> 60CMangos_world

8、配置

WOW客戶端配置

修改WOW目錄下的realmlist.wtf

SET realmlist "你的debian主機IP"

伺服器端:複製並改名

/home/mangos/mangos/src/game/AuctionHouseBot/http://ahbot.conf.dist.in &>&> /home/mangos/server/etc/ahbot.conf

/home/mangos/server/etc/mangosd.conf.dist &>&> mangosd.conf

/home/mangos/server/etc/realmd.conf.dist &>&> realmd.conf

修改/home/mangos/server/etc/mangosd.conf

DataDir = "/home/mangos/mapdata"

9、啟動伺服器

在Debian終端打開:

/home/mangos/server/bin/realmd -c /home/mangos/server/etc/realmd.conf

/home/mangos/server/bin/mangosd -c /home/mangos/server/etc/mangosd.conf -a /home/mangos/server/etc/ahbot.conf


參考cmangos/issues


寫的真詳細,找個時間好好學習一下,謝謝了,收藏先


這有一個 ubuntu 下 cmangos 的搭建文檔

https://decadewow.gitbooks.io/decadewow/content/fu_wu_qi_da_jian_zhi_nan.html


推薦閱讀:

為什麼熱血傳奇因為私服損失了大量用戶,而魔獸世界沒有因為私服而減少用戶?
不了解魔獸,如何在跟女朋友看首映時給她講解,裝出很懂的樣子?
如果拿破崙這類的偉人放到魔獸世界會怎樣?
魔獸世界8.0泰蘭德在聯盟大使館中為什麼顯示黃名?
暗影牧師的力量來自哪裡?

TAG:魔獸世界 |