對我架設一個wow私服,意義有二:1. 玩wow過程中,碰到一些實現手法不解的地方,可以實時去調試。2. 基于此服務端模擬wow客戶端若干特性,比如地圖資源異步加載,角色并行狀態處理等。
需要工具:
1. visual studio 2010(arcemu trunk windows版本解決方案使用),不建議強制修改visual studio版本,因為可能丟失工程配置參數信息。
2. mysql,SQLyog。(mysql數據庫不用說了,隨便什么版本,SQLyog主要是圖形化mysql命令操作)。
3. svn (因為是源碼編譯嘛)。
源碼下載:
1. 服務端程序arcemu trunk, https://arcemu.svn.sourceforge.net/svnroot/arcemu/trunk
2. 服務端使用的數據庫whydb,
http://svn.xp-dev.com/svn/whydb-users我是這樣放置代碼的
編譯源碼:
1. 需要簡單地修改幾處源碼,一,src/scripts/src/InstanceScripts/Raid_ZulGurub.cpp中的第184行,將
?/改成*/,很明顯這是手誤。二,src/arcemu-logonserver/LogonCommServer.cpp中的
第313~314行注釋掉,解釋下情況:因為wow每個游戲服務器他們叫做Realm,每個Realm都要注冊到LogonServer中。考慮到不是我的Realm不能注冊到我的LogonServer,所以存在這授權處理的一關。我去掉主要是爛的去改配置文件。三,src/arcemu-world/HackFixes.cpp中
第54~57行注釋掉,解釋下情況:因為官方只支持enUS和enGB,在加載spell.dbc的時候做了一個本地化核實。可以編譯了。
2. 創建3個數據庫arc_characters, arc_logon, arc_world.然后通過下圖的操作

分別將sql目錄下的3800_character_structure.sql導入到arc_characters里,將2834_logon_structure.sql導入到arc_logon里。然后再將sql/character_updates目錄里高于3800打頭的sql導入到arc_characters,同樣將sql/logon_updates目錄里高于2834打頭的sql導入到arc_logon。為什么不導arc_world?呵呵,因為源碼里帶的arc_world只是表結構定義,里面并沒有數據。這個要用whydb導入。進入whydb目錄,雙擊tool.bat就行了。

回車

繼續回車,就安裝好了。
然后在arc_logon的表accounts里加入幾個賬號:

重點說明下,此數據庫,服務端程式邏輯適用于3.3.5a版本,也就是wow大災變前夕的前一個版本。
所以必須準備一個3.3.5a版本的wow。我用的臺服的client,當然你用國服的也是一樣。很不幸的是我從3.0.3一個個patch打上來的。
如果你也想和我一樣過一過打patch的癮,你可以去
http://tlax.5d6d.com/thread-1778-1-1.html一個個補丁下吧。
如下:


至于服務端configs里的*.conf,客戶端的登陸配置,上網上隨便找找就是了。
我要重點說下服務端適用的dbc和maps資源。如何從client取。
首先說dbc:編譯解決方案mpqe_cpp.sln,然后將extractdbc.bat,mpqe_cpp.exe,SFmpq.dll拷貝到Data/zhTW目錄下,然后執行bat就生成了dbc,然后將所有*.dbc拷貝到服務端的dbc目錄里。
再次說maps:編譯解決方案AD100.sln,然后將ad.exe拷貝到world of warcraft目錄,和data同層,然后再將Data/zhTW里的locale-zhTW.MPQ拷貝到Data里(因為這個程序比較傻,他沒有遞歸遍歷到所有的檔案,他想從locale-zhTW.MPQ里去找Map.dbc),然后執行ad.exe,然后將maps里所有的.bin文件拷貝到server的maps里就ok了,基本配置配置就可以跑了。
有什么不清楚的再討論吧。