開源的魔獸世界
作者: joejoe0332 來源: LUPA開源社區
本文章是對mangos作了一個粗略的介紹,並且使用了魔獸世界的客戶端對mangos作了一些測試。
正文如下:
開源社區常常有很多出人意表的項目,讓人往往擊節歎賞。例如當年在普通PC電腦上虛擬運行蘋果機系統的Pearpc。把微軟遊戲機xbox改裝成家庭影音中心的xbox-media center,以及在ipod上安裝linux的ipodlinux等項目。在電腦遊戲方面當然也有很多出色的開源項目。
暴雪公司的遊戲歷來都是精品。網絡遊戲大熱以後,它推出的基於10年遊戲歷史的網遊:《魔獸世界》也更是名聲在外(當然有好有壞,壞名聲在於它太吸引人以致 於很多人沉湎其中)。網絡遊戲的盈利模式和傳統電腦遊戲不同,月費和其他的周邊產品使得其贏利空間遠遠大於傳統電腦遊戲。對於網遊運營商來說很大的一個問 題是私服的問題。很多私服的軟件是從網遊開發公司或者運營公司內部非法的流出來的,比如說網遊《仙境傳說》的私服。
而現在大多數魔獸世界 的“私服”實際上是服務端軟件的模擬器。是在對客戶端遊戲軟件和與服務端的進行通信的數據進行分析解密以後,開發出來的模擬原遊戲服務器功能的軟件,這樣 的模擬器軟件大都也是開源軟件。比如像現在大部分魔獸私服使用的Mangos服務端軟件,mangos項目是一個開源的自由軟件(如同linux或者 firefox),並且遵守其中最爲嚴格的GPL協議。
MaNGOS 是(Massive Network Game Object Server) 的縮寫。由於暴雪公司對類似的開發小組採取過一些法律行動。爲了避免麻煩,如同它的名字,mangos強調自己並非一個魔獸服務器模擬器,而是一個開源的 多人在線遊戲服務器的軟件。說到底是個網遊的遊戲引擎。Mangos開發小組強調其軟件是用c++和C#編程語言,實現 的一個支持大型多人在線角色扮演遊戲服務器的程序框架,在這個框架下,它理論上應該支持任何客戶端的網絡遊戲,由於現在很多人使用魔獸世界來對它進行測 試,所以針對魔獸世界的腳本和數據庫文件比較完善,很多人就利用這個開源項目來實現魔獸私服。而遊戲的內容,例如故事情節,任務場景的腳本等都是由別的小 組獨立開發的。
開發小組一再強調,這是個研究,教育性質的對怎樣開發大型網遊的服務器端有好處的項目,是一個技術細節毫無保留向公衆開放的軟件,是一件很有 意義的事情,如果你使用它作爲盈利目的,那你本身就違反了軟件的協議。所以任何利用mangos項目進行私服活動的組織和個人都違反了mangos的宗 旨,mangos項目也不會對它們負責。
mangos的技術細節上是這樣的,核心部分是個和特定遊戲沒有關係的核心框架程序,主要是進行進程調度,創造世界,建立心跳機制,處理網絡接入 等。數據庫可以使用的開源數據庫軟件MySQL。至於遊戲內容數據庫,遊戲人物,時間,世界腳本,都是由這個核心程序所支持的擴展 腳本來實現,所以有一些獨立出來的項目專門模擬魔獸世界來開發支持mangos的核心程序。現在mangos的核心程序已經放到著名的協同開發網站 sourceforge上開發了,使用的開發工具是subversion。大家都可以從sourceforge的subversion數據庫中下載最新的 源代碼程序。
爲了測試這個Mangos我自己安裝了一個測試了以下,自己對魔獸世界的遊戲本身沒有太多的瞭解,請了幾個玩過魔獸世界的朋友測試了一下,都說各方面已經很 完美了。最新的Mangos項目已經支持了魔獸世界的擴展版“燃燒的遠征”,簡稱TBC,對應的魔獸客戶端版本到了2.0以上。以下的安裝測試步驟適用於 魔獸世界客戶端1.12.x的版本。
一、安裝需求:
- 操作系統Windows Xp,解壓軟件推薦7-zip 。(mangos論壇上有人在linux,macosx上安裝,爲了提取地圖方便這裏使用windows XP)
- 魔獸世界的客戶端軟件,升級到1.12.1版本以上。
- 編譯好的Mangos二進制文件。(你也可以自己編譯,我這裏提供的是Mangos Rev 3462,3462是開發數據庫的版本號),下載地址: http://filebeam.com/22b7839a746adbd95f3ac3853f3bf9ed
http://www.megaupload.com/?d=T0SGUOQB - 地圖提取工具ad.exe(這個地圖提取工具是專門針對1.12.x版本的客戶端的,TBC需要比較新的ad.exe,TBC的地圖提取工具不適用老版本的地圖),下載地址:http://www.megaupload.com/?d=DZW472B4
- mpq文件包提取工具MPQE_1.2.rar,暴雪公司的遊戲都採用一種叫mpq的文件格式,是Mike O'Brien Pack的縮寫,這個Mike就是暴雪公司的首席遊戲程序開發人員,和創始者。我們需要使用mpqe.exe從客戶端裏提取相關文件。下載地址:
http://www.megaupload.com/?d=VL2DXHXW - 開源數據庫軟件MySql
官網:MySQL
或者用我下載的版本:http://www.megaupload.com/?d=ODYRBWSF - MySQL的客戶端軟件SQLyog,編譯管理操作數據庫
官網:here
我下載的版本5.30:http://www.megaupload.com/?d=DD0LK19H - 遊戲內容數據庫,配合Mangos Rev 3462的版本。
文件名:CompleteSDB156-Mangos3462.rar
下載地址:
http://www.megaupload.com/?d=0EME2U4Y
- 點擊安裝文件選擇典型安裝(Typical)
- 配置數據庫服務器"Configure the MySQL Server Now",選擇標準配置"Standard Configuration"。
- 確認安裝成windows的服務程序和自動啓動服務"Install as Windows Service"、"Launch the MySQL Server Automatically"。
- 輸入你的root用戶的密碼。可以打開的使用root遠程管理數據庫的選項,便於遠程管理,和鏈接。
- 應用你的設置。
- 點擊安裝SQLyog的安裝文件,安裝到缺省路徑,運行SQLyog。
- 當SQLyog運行後,需要輸入以下信息:
- MySQL主機地址:可以輸入你的本機IP地址或者"localhost"。
- 用戶名(UserName):root
- 密碼(Password):在第4步裏面你配置的密碼。
- 數據庫(database(s))輸入:"realmd;mangos"
- 建立一個目錄,例如:"C:/MaNGOS"
- 把你下載的mangos的二進制文件解壓到這個目錄裏面。
- 檢查你的兩個重要的服務器配置文件:“mangosd.conf”和“realmd.conf”。其中“mangosd.conf”裏面可以配置物品,金錢的掉落率,經驗值的增長率等等。
- 把ad.exe放在魔獸世界的安裝目錄下,例如("C:/World of Warcraft")
- 建立一個子目錄叫maps,結構爲:("C:/World of Warcraft/maps")
- 運行ad.exe文件。耐心等待ad.exe把魔獸世界的地圖信息提取到maps目錄下。
- 將maps子目錄拷貝到"C:/MaNGOS"目錄下,結構爲:"C:/MaNGOS/maps",裏面的地圖文件大概有2400多個。
- 可以安全的刪除"C:/World of Warcraft"下的maps子目錄了。
- 在你的mangos的安裝目錄下建立dbc子目錄,結構爲:("C:/MaNGOS/dbc")
- 爲了將暴雪公司的mpq文件的內容解壓出來,將提取工具mpqe.exe拷貝在魔獸世界安裝目錄的data目錄下,結構爲:("C:/World of Warcraft/data")
- 打開dos窗口,進入魔獸世界的data目錄(cd "C:/World of Warcraft/data")。
- 執行以下命令:
mpqe /p dbc.MPQ DBFilesClient/*.dbc - mpqe工具將魔獸的遊戲信息提取到了/MPQOUT/DBFilesClient目錄下,整個結構爲:("C:/World of Warcraft/data/MPQOUT/DBFilesClient")
- 當mpqe運行結束後,可以將所有的*.dbc拷貝到你的mangos的dbc目錄下:("C:/MaNGOS/dbc"),你大概有158個*.dbc文件。
- 你可以安全刪除魔獸世界下的dbc文件目錄:("C:/World of Warcraft/data/MPQOUT")了。
- 將下載的CompleteSDB156-Mangos3462.rar文件解壓,裏面有幾個數據庫文件。找到其中“realm-database-full.sql”和“mangos-full-for-rev3462.sql”文件。
- 使用SQLyog連接到你的數據庫。
- 在左欄找到realmd,點擊右鍵選擇"Restore from SQL Dump",找到“realm-database-full.sql”,導入數據庫文件。
- 同樣找到mangos,點擊右鍵選擇"Restore from SQL Dump",找到“mangos-full-for-rev3462.sql”,導入數據庫文件。
- 使用SQLyog連接到你的數據庫。
- 找到realmd,展開找到"realmlist"選項。
- 在右下找到"Table Data"。
- 在name一項填入你的服務器名字,例如叫faif
- 在地址address一項可以使用"localhost" 或者你的IP地址。
- 在realmd數據庫下找到account表,點擊"Table Data",建立你的遊戲帳號,裏面已經由幾個內置的帳號,你可以參照gm,普通玩家的帳號建立你的用戶名,密碼。
- 在mangos目錄下打開realmd.conf文件,找到
"LoginDatabaseInfo ="
改爲:"LoginDatabaseInfo = "127.0.0.1;3306;root;[password];realmd"
這裏的IP地址可以是你的IP,[password]是你的密碼。存盤。 - 在mangos目錄下打開mangosd.conf文件,找到如下的內容,並設置如下:
- DataDir = "."
- WorldDatabaseInfo = "127.0.0.1;3306;root;[password];mangos"
- LoginDatabaseInfo = "127.0.0.1;3306;root;[password];realmd"
到這裏基本就大功告成了。先運行realmd.exe文件,稍等,運行mangosd.exe,魔獸服務器就已經運行了。 連接到你的魔獸服務器,修改你的魔獸世界客戶端的realmlist.wtf的文件,將127.0.0.1,或者你的IP地址填在裏面,例如:"set realmlist 127.0.0.1"
Reference
- http://www.mangosproject.org/forum/
- http://www.mangosproject.org/forum/index.php?showtopic=7883
- http://sdb.unix7.net/forums/
- http://en.wikipedia.org/wiki/MaNGOS
- http://www.wowchina.com/