用開源軟件TrinityCore在Debian 10上搭建魔獸世界8.3.0.34220的服務器


用開源軟件TrinityCore在Debian 10上搭建魔獸世界8.3.0.34220的服務器

TrinityCore是魔獸世界(World of Warcraft)的開源的服務端。目前支持魔獸的3.3.5.12340版本(開源代碼的3.3.5分支)、8.3.0.34220版本(開源代碼的master分支)。其中對3.3.5的支持比較穩定;而對8.3.0版本的支持還很不完善,這個版本我搭完后進去逛了一下,測試了一下副本,結論基本上是:適合逛地圖看風景,以及體驗一下新坐騎。理由在后面。

官網有指南教如何安裝3.3.5版本、8.3.0版本的服務端,但留下了少數幾個坑。網上能搜到的也主要是如何編譯安裝3.3.5版本的服務端。本文主要把用master分支的TC搭建8.3.0版本服務端的注意事項列出來(重點是服務端的簡體中文語言設置、第三方登錄器),供踩坑時參考。具體的部署詳細操作步驟可以參考官方文檔,以及其他同好寫的3.3.5的文檔,如下:

官方安裝文檔

從零開始編譯wow服務器

TrinityCore 編譯安裝指南

 

平台選擇

操作系統:Debian 10

官方指南中推薦用Debian 9,但官方論壇中明確寫了預編譯的二進制最低只支持Debian 10,而且根據網友“極光飛羽@CCF”的經驗,Debian 9上有問題。所以我選擇用Debian 10來搭建。

至於Ubuntu 20.04,官方指南中用sudo apt要安裝的軟件包和Debian略有差異,我的經驗是:Ubuntu 20.04上mysql的dev庫和mariadb的dev庫有沖突,不要安裝mariadb的dev庫,而只安裝mysql的dev庫即可。其他和Debian基本一樣。

Debian 10從哪里來?自己的虛擬機、真機,或者雲上的虛擬機都可以,看是否要跨廣域網和小伙伴一起玩。

內存大小

我試過1核1G內存的阿里雲虛擬機是跑不了的,內存不足,進程被kill。所以最少要2G內存,推薦2核4G內存。我用的是2核8G的谷歌雲,白piao的,晚上會有掉線情況。

硬盤剩余空間

硬盤的話,由於需要從魔獸客戶端提取地圖數據放到服務器上,所以有兩種辦法:

一種是在魔獸的客戶端所在機器上提取好數據,壓縮后上傳到服務器。簡體中文版客戶端提取的全部數據是15G,壓縮后是6G,加起來已經21G了,所以服務器最好有25G以上的剩余硬盤空間。

另一種是把魔獸的客戶端傳到服務器上,在服務器上直接提取。簡體中文版客戶端本身有50多G,加上提取出來的15G數據,最好有70G以上的剩余硬盤空間。

3.3.5.12340版本提取的數據壓縮后是1個多G,比32440的要小很多。

由於這個地圖數據很大,要做成docker的話,需要搞到一個下載服務器才行,因為要存放這些數據來提供給docker下載。

數據庫:MariaDB或者MySQL 5.7

至於數據庫,官方要求用mysql,但其SQL腳本實際上只兼容mysql 5,在mysql 8上會報錯。MariaDB是從mysql 5分支出來的,所以也是可以的。我用的就是mariadb。

魔獸客戶端:簡體中文版8.3.0.34220

用簡體中文的,自然是為了看文字舒服了。另外,台服的繁體中文版的版本號也不一樣,要改一下realmlist數據表的字段。自行安裝網易的官方客戶端即可,安裝完后,備份一下,因為有可能一不小心給升級到后續發布的更新的版本了。

 

8.3.0.34220版本和3.3.5版本部署的差異點

此處假定你已經仔細閱讀過上面列出的參考文檔的步驟了。所以這里不列出詳細的操作步驟(其實是因為懶),而是只描述需要注意的點。

認證程序

34220版本的帳號認證程序是bnetserver,不是authserver。bnetserver用默認配置就行。官方文檔有說。

數據庫腳本

截至2020-05-20,34220版本的最新SQL腳本是TDB_full_820.19071_2019_07_15.7z。這個腳本解壓后放到主程序worldserver的目錄下,會被自動加載。

客戶端地圖數據提取

34220版本和3.3.5版本提取出來的地圖數據略有不同,官方文檔有說。這個提取步驟極為耗時,其中最耗時的vmaps、mmaps這兩步實際上是可選的,我全部提取花了十多個小時。所以提取時盡可能不要用虛擬機、共享目錄,而且CPU和硬盤越快越好。提取完之后可以備份一下,免得下次又要重新提取,除非提取程序后續進行了嚴重的bug修正。

服務器程序的語言設置

34220版本需要修改worldserver.conf中的DBC.Locale為4,即簡體中文,不然worldserver程序跑不起來,報的錯誤是一堆*.db2地圖文件找不到。這個坑是我搜了論壇,外加看代碼搞定的。

用台服繁體客戶端的,值改成5。

防火牆需要開放的端口

34220版本防火牆開放的端口為1119, 8081, 8085, 8086。官方文檔有說,有些同好的經驗帖子中沒說,所以此處提一下。

設置帳號為GM權限

34220版本設置某個帳號為GM時,帳號的id需要從數據庫auth的account表查詢出來,比如全服第一個帳號的ID一般是1#1,設置其為GM的命令是:account set gmlevel 1#1 3 -1。官方文檔有寫。

漢化

服務端有數據需要漢化,比如任務描述,但由於master分支的版本基本上沒人玩,所以有些任務描述沒漢化。要搞漢化的話,需要處理world數據庫中那些后綴名為_locale的數據表。

3.3.5版本倒是有人漢化,但理論上應該無法直接用到34220版本上。

魔獸客戶端的登錄器

34220版本需要用自定義的客戶端登錄器,有些人可能會卡在這一步。下載地址在這里。 (提供下載的網站改版了,需要登錄了。百度盤的下載參看本帖子的評論區)

下載8.3.x的,解壓"Arctium WoW Client Launcher.exe"到網易官方魔獸客戶端的"World of Warcraft Launcher.exe"所在目錄下,

然后修改"World of Warcraft\_retail_\WTF\Config.wtf"這個文件中的SET portal "CN"為SET portal "xxx.xxx.xxx.xxx",其中xxx.xxx.xxx.xxx就是你的服務器外網IP。

如果"World of Warcraft\_retail_\WTF\Config.wtf"這個文件不存在,先運行一下網易官方的登錄器就會生成這個文件。

最后運行"Arctium WoW Client Launcher.exe"可以登錄服務器。

這個登錄器最好也備份一下,免得回頭下載不到了。

用screen避免SSH會話結束時worldserver、bnetserver進程被殺

screen是一個Linux工具,可以避免SSH會話結束時worldserver、bnetserver進程被殺,只要啟動兩個不同的screen會話,在這兩個會話中分別運行worldserver、bnetserver進程即可。

用screen的目的,主要是為了保留worldserver的命令行GM操作界面、日志打印(當然也可以重定向到文件)。

screen相關的命令最好在相同的用戶權限下執行,因為普通用戶看不到root用戶的screen會話。操作screen會話可以用其名稱,也可以用給其自動分配的數字id。

安裝screen:

sudo apt-get install screen

創建一個名為wow的screen新會話:

screen -dmS wow

列出全部的screen會話:

screen -ls

附加到已經存在的名為wow的screen會話:

screen -r wow

銷毀名為wow的screen會話:

screen -XS wow quit

 

8.3.0.34220版本的成熟度評估

部署好服務器后,登錄進去測試了一下,穩定性倒還可以,但是很多功能存在問題。具體來說如下:

  • 同盟種族的角色無法創建,前提條件不滿足。
  • 副本里怪的觸發和仇恨鏈接有問題,需要靠很近才能觸發其攻擊(也可能是網速或者服務器太慢),而且攻擊其中一個,同組的其他怪不會觸發仇恨。
  • 大災變、暮光審判這兩個版本的部分地圖和副本有怪物和NPC,但是不完整或者有bug。應該是從熊貓人之謎或者之后的某個版本開始的NPC、怪物、任務、副本數據都沒加。熊貓人新手村有NPC,但無法交互,所以熊貓人做不了任務。
  • 副本門的動態旋渦效果不明顯,導致不熟悉的副本門不好找。
  • 巫妖王副本中,和綠龍戰斗時進入夢境門后看到不綠龍,無法加血,所以綠龍和后面的boss無法打。
  • 火焰之地副本中沒怪。
  • 風神王座的風不能把人傳到對岸,打不了。
  • 紅玉聖殿即使接了進門的任務也進不去副本。黑曜石聖殿沒問題。
  • 破碎群島沒NPC,做不了起飛的任務,只能用命令.gm fly on來直接打開飛行。
  • 阿古斯要做任務才能進去,所以也進不去,估計只能用gm的指定坐標的命令強行去。
  • 永恆之井說等級不達標,不讓進。可能對裝備等級有要求。但是法師的符文之縛套裝的屬性低得可憐。實際上高等級裝備的等級都不對。
  • 法師傳送到暴風城有bug,會無限墜落然后死掉。當然,用.gm on命令可以免死。
  • 黑石塔新團本進門后左手邊沒boss,右手邊3個石頭人有bug,所以整個本打不了。
  • 有些裝備用.add創建不了,比如裝等很高的裝備。
  • 新手教程要在設置中關掉,要不一直在屏幕上不消失。

所以說master分支對應的這個版本還很不完善,只能玩玩其中包含的低版本的內容(那可能還不如部署個3.3.5版本玩),外帶逛一下新版本的地圖,騎一下新版本的坐騎。

用.gm fly on打開飛行,再用.modify speed fly 25修改飛行速度為25倍,就可以滿世界看了。推薦用法師,因為開傳送門方便,還有羽毛可以從山上飄下來。

 

GM命令

GM命令可以在主程序worldserver的窗口中輸入執行。也可以在具有GM權限的玩家角色的聊天窗口中輸入執行(特別是需要先選中目標再執行的命令)。

提一下:執行GM命令並不需要先執行.gm on,這個.gm on只是打開GM模式,也就是免死,讓怪物不會攻擊你、疲倦時不會掉無盡之海里掛掉,很多帖子對這個命令有誤解。總之,帳號有GM權限就能隨便執行GM命令,而無需先執行.gm on。

 

GM命令怎么獲取:

一、可以在數據庫world的command數據表中獲得全部。

執行如下命令以root身份連接數據庫:

sudo mysql

然后查表即可:

use world;
select * from command; 

二、也可以看代碼獲得。

實現代碼在src/server/scripts/Commands這目錄下。

三、谷歌、百度搜索獲得。

直接搜索常用的命令、技能、法術、物品,但搜到的相應id有可能在34220版本改過了,用34220版本提供的.lookup命令查詢出新的id即可。此時體現出用簡體中文客戶端的好處了,不然你用繁體中文、英文搜搜試試。

當然,有些名字的翻譯可能和服務端的不一致,就得自己谷歌解決有沒其他的翻譯文案了,比如去某些統計魔獸世界物品掉落的網站看看對應的boss掉落的那件裝備的中文名字是什么。

有些坐騎不能直接用.lookup item命令按名字搜到。舉個例子,坐騎“純血火鷹”,上這里查一下,發現對應的觸發物品實際上是“米拉蓋佐爾的灼熱之卵”,執行GM命令“.lookup item 灼熱之卵”,得到id為69224,再執行“.add 69224”,背包里就有卵了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM