百度空间 | 百度首页 
               
 
查看文章
 
开源的魔兽世界
2007-05-28 09:10
开源的魔兽世界
by faif saved on 28 May 2007

开源社区常常有很多出人意表的项目,让人往往击节叹赏。例如当年在普通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.1或1.12.2的版本。

一、安装需求:

  1. 操作系统Windows Xp,解压软件推荐7-zip 。(mangos论坛上有人在linux,macosx上安装,为了提取地图方便这里使用windows XP)
  2. 魔兽世界的客户端软件,升级到1.12.1版本以上。
  3. 编译好的Mangos二进制文件。(你也可以自己编译,我这里提供的是Mangos Rev 3462,3462是开发数据库的版本号),下载地址:    http://filebeam.com/22b7839a746adbd95f3ac3853f3bf9ed
    http://www.megaupload.com/?d=T0SGUOQB
  4. 地图提取工具ad.exe(这个地图提取工具是专门针对1.12.x版本的客户端的,TBC需要比较新的ad.exe,TBC的地图提取工具不适用老版本的地图),下载地址:http://www.megaupload.com/?d=DZW472B4
  5. mpq文件包提取工具MPQE_1.2.rar,暴雪公司的游戏都采用一种叫mpq的文件格式,是Mike O'Brien Pack的缩写,这个Mike就是暴雪公司的首席游戏程序开发人员,和创始者。我们需要使用mpqe.exe从客户端里提取相关文件。下载地址:
    http://www.megaupload.com/?d=VL2DXHXW
  6. 开源数据库软件MySql
    官网:MySQL
    或者用我下载的版本:http://www.megaupload.com/?d=ODYRBWSF
  7. MySQL的客户端软件SQLyog,编译管理操作数据库
    官网:here
    我下载的版本5.30:http://www.megaupload.com/?d=DD0LK19H
  8. 游戏内容数据库,配合Mangos Rev 3462的版本。
    文件名:CompleteSDB156-Mangos3462.rar
    下载地址:
    http://www.megaupload.com/?d=0EME2U4Y

二、安装MySQL数据库,以及SQLyog客户端

  1. 点击安装文件选择典型安装(Typical)
  2. 配置数据库服务器"Configure the MySQL Server Now",选择标准配置"Standard Configuration"。
  3. 确认安装成windows的服务程序和自动启动服务"Install as Windows Service"、"Launch the MySQL Server Automatically"。
  4. 输入你的root用户的密码。可以打开的使用root远程管理数据库的选项,便于远程管理,和链接。
  5. 应用你的设置。
  6. 点击安装SQLyog的安装文件,安装到缺省路径,运行SQLyog。
  7. 当SQLyog运行后,需要输入以下信息:
    • MySQL主机地址:可以输入你的本机IP地址或者"localhost"。
    • 用户名(UserName):root
    • 密码(Password):在第4步里面你配置的密码。
    • 数据库(database(s))输入:"realmd;mangos"
  8. 点击连接,这样客户端就连接到你的MySQL数据库服务器上了。
  9. 在左边一栏右键点击“root@localhost”,选择建立数据库"Create Database"。
  10. 当提示输入数据库名称的时候输入:"mangos"。
  11. 重复第9,10步建立数据库"realmd"。


三、安装Mangos服务器,配置路径

  1. 建立一个目录,例如:"C:\MaNGOS"
  2. 把你下载的mangos的二进制文件解压到这个目录里面。
  3. 检查你的两个重要的服务器配置文件:“mangosd.conf”和“realmd.conf”。其中“mangosd.conf”里面可以配置物品,金钱的掉落率,经验值的增长率等等。

四、解压安装地图文件

  1. 把ad.exe放在魔兽世界的安装目录下,例如("C:\World of Warcraft")
  2. 建立一个子目录叫maps,结构为:("C:\World of Warcraft\maps")
  3. 运行ad.exe文件。耐心等待ad.exe把魔兽世界的地图信息提取到maps目录下。
  4. 将maps子目录拷贝到"C:\MaNGOS"目录下,结构为:"C:\MaNGOS\maps",里面的地图文件大概有2400多个。
  5. 可以安全的删除"C:\World of Warcraft"下的maps子目录了。

五、解压安装提取的*.dbc文件

  1. 在你的mangos的安装目录下建立dbc子目录,结构为:("C:\MaNGOS\dbc")
  2. 为了将暴雪公司的mpq文件的内容解压出来,将提取工具mpqe.exe拷贝在魔兽世界安装目录的data目录下,结构为:("C:\World of Warcraft\data")
  3. 打开dos窗口,进入魔兽世界的data目录(cd "C:\World of Warcraft\data")。
  4. 执行以下命令:
    mpqe /p dbc.MPQ   DBFilesClient\*.dbc
  5. mpqe工具将魔兽的游戏信息提取到了\MPQOUT\DBFilesClient目录下,整个结构为:("C:\World of Warcraft\data\MPQOUT\DBFilesClient")
  6. 当mpqe运行结束后,可以将所有的*.dbc拷贝到你的mangos的dbc目录下:("C:\MaNGOS\dbc"),你大概有158个*.dbc文件。
  7. 你可以安全删除魔兽世界下的dbc文件目录:("C:\World of Warcraft\data\MPQOUT")了。

七、下载安装数据库内容,前文说过,mangos只是游戏引擎,游戏的内容,建立的数据库由独立小组开发,我们这里使用著名的Silver's Database Site的库。版本号为SDB156.


  1. 将下载的CompleteSDB156-Mangos3462.rar文件解压,里面有几个数据库文件。找到其中“realm-database-full.sql”和“mangos-full-for-rev3462.sql”文件。
  2. 使用SQLyog连接到你的数据库。
  3. 在左栏找到realmd,点击右键选择"Restore from SQL Dump",找到“realm-database-full.sql”,导入数据库文件。
  4. 同样找到mangos,点击右键选择"Restore from SQL Dump",找到“mangos-full-for-rev3462.sql”,导入数据库文件。

八、配置数据库,配置文件,运行开源魔兽服务器!本文只为测试游戏,在局域网中玩。

  1. 使用SQLyog连接到你的数据库。
  2. 找到realmd,展开找到"realmlist"选项。
  3. 在右下找到"Table Data"。
  4. 在name一项填入你的服务器名字,例如叫faif
  5. 在地址address一项可以使用"localhost" 或者你的IP地址。
  6. 在realmd数据库下找到account表,点击"Table Data",建立你的游戏帐号,里面已经由几个内置的帐号,你可以参照gm,普通玩家的帐号建立你的用户名,密码。
  7. 在mangos目录下打开realmd.conf文件,找到
    "LoginDatabaseInfo ="
    改为:"LoginDatabaseInfo = "127.0.0.1;3306;root;[password];realmd"
    这里的IP地址可以是你的IP,[password]是你的密码。存盘。
  8. 在mangos目录下打开mangosd.conf文件,找到如下的内容,并设置如下:
    • DataDir = "."
    • WorldDatabaseInfo = "127.0.0.1;3306;root;[password];mangos"
    • LoginDatabaseInfo = "127.0.0.1;3306;root;[password];realmd"
    同样,这里的IP地址可以是你的IP,[password]是你的密码。存盘。
  9. 到这里基本就大功告成了。先运行realmd.exe文件,稍等,运行mangosd.exe,魔兽服务器就已经运行了。
  10. 连接到你的魔兽服务器,修改你的魔兽世界客户端的realmlist.wtf的文件,将127.0.0.1,或者你的IP地址填在里面,例如:"set realmlist 127.0.0.1"

到此为止,开源的魔兽服务器就架设成功了,我给朋友建立了几个gm帐号,他们测试了一下,觉得这个版本的做的很不错了,开源的宗旨是知识的分享,开源社区黑客们的探索精神不得不让人佩服。


注:本文是基于欧洲客户端和北美客户端1.12.1提取测试的。如果你使用魔兽世界中文版1.12.3来测试可能会遇到版本不兼容的信息提示。可能的解决方法有:
1. 降级到1.12.1
2. 自己编译mangos的源代码,在mangos源代码中:
    找到这个文件“src/shared/Common.h”,第48行(以下引用的是最新的mangos源代码,mangos的开发策略是每段开发过程只支持一个版本,这样保证代码的整体质量,现在的版本是6546也就是wow TBC 2.0.12),你可以用svn commit out老版本,修改这行代码,然后编译生成你自己的mangos执行文件。

44 // we need to stick to 1 version or half of the stuff will work for someone   
45
// others will not and opposite
46
// will only support WoW and WoW:TBC 2.0.12 client build 6546...
47

48
#define EXPECTED_MANGOS_CLIENT_BUILD {6546, 0}

Reference

类别:技术八卦 | 添加到搜藏 | 浏览() | 评论 (30)
 
最近读者:
 
网友评论:
1
2007-05-28 13:19 | 回复
老实说,我的游戏智商不高,可是您写得真的很好,我大部分都懂,谢谢~
 
2
2007-05-28 13:39 | 回复
牛文,收藏之
 
3
2007-05-28 14:53 | 回复
纠正一下,subversion简称svn,是现在比较流行的一个版本管理工具,并不是开发工具:)
 
4
2007-05-28 16:00 | 回复
多谢,改为协同开发工具,我对svn是有所了解的,我参与的一个开源项目skyeye就是在sourceforge上基于svn开发的。 ~~~~~~~~~~~~~~~ 网友:yg - 2007-05-28 14:53 纠正一下,subversion简称svn,是现在比较流行的一个版本管理工具,并不是开发工具:)
 
5
2007-05-28 17:12 | 回复
GPL协议并不是说你不能用它去挣钱,是你的开发必须也公开源代码。。。所以秘服用它并不违反GPL协议的。
 
6
2007-05-28 17:45 | 回复
是的,不违反GPL,但是违反mangos自己的制定的免责协议,因为使用了暴雪的内容作为商业服务。 ~~~~~~~~~~~~~~~~~~~~ 网友:HD - 2007-05-28 17:12 GPL协议并不是说你不能用它去挣钱,是你的开发必须也公开源代码。。。所以秘服用它并不违反GPL协议的。
 
7
2007-05-28 18:01 | 回复
换句话说,打了一个"法律(GPL)"的擦边球,仅仅是为了谋取利益
 
9
2007-05-30 01:53 | 回复
我的1.12.3.6141的cwow客户端怎么装完之后提示: “无法验证游戏版本 这可能是由于文件已被破坏所致” 这个呢? faif 你用的什么版本啊?
 
10
2007-05-30 03:16 | 回复
感觉mangosd.exe没有运行起来。 server log里面提示这个 2007-05-30 02:45:20 Realm running as realm ID 1 2007-05-30 02:45:20 Using DataDir ./ 2007-05-30 02:45:20 Initialize data stores... 2007-05-30 02:45:20 ERROR: Incorrect DataDir value in mangosd.conf or ALL required *.dbc files (28) not found by path: ./dbc 我的.dbc文件只有140个,DBFilesClient目录外面还有两个。还有你给的MPQE.exe我ms-dos下运行不了,提示应用程序初始化失败,后面跟个地址。
 
11
2007-05-30 03:46 | 回复
不好意思,刚才把DBFilesClient目录复制进去了,但是还是不行啊,提示这个: Some required *.dbc files (7 from 28) not found or not compatible: ./dbc/AreaTable.dbc (exist, but have 21 fields instead 25) Wrong client version DBC file? ./dbc/ChrClasses.dbc (exist, but have 16 fields instead 17) Wrong client version DBC file? ./dbc/Faction.dbc (exist, but have 28 fields instead 37) Wrong client version DBC file? ./dbc/ItemSet.dbc (exist, but have 82 fields instead 45) Wrong client version DBC file? ./dbc/Map.dbc (exist, but have 37 fields instead 42) Wrong client version DBC file? ./dbc/Spell.dbc (exist, but have 162 fields instead 173) Wrong client version DBC file? ./dbc/TaxiNodes.dbc (exist, but have 14 fields instead 16) Wrong client version DBC file?
 
12
2007-05-30 05:05 | 回复
网友:solone 不好意思,刚才把DBFilesClient目录复制进去了,但是还是不行啊 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我用的是欧洲或者美版的客户端提取的文件,而且只升级到1.12.1(5875)。如果是中文版的客户端的化,试试降级到1.12.1应该可以运行。因为mangos只支持1.12.1和1.12.2,而且1.12.3版本的补丁是只针对中文版的,修改中文版的一些语言相关的bug。
 
13
2007-05-30 05:40 | 回复
使用中文版wow-1.12.3测试的朋友请参看我文章结尾新添加的注解!
 
14
2007-05-30 16:42 | 回复
谢谢了
 
16
2007-06-25 14:04 | 回复
使用中文版1.12.1及1.12.3,当运行mangosd.exe时,显示以下信息,启动不成功! Realm running as realm ID 1 Using DataDir ./ Initialize data stores... ==================================================== 100% You have _outdated_ DBC files. Please exstact correct versions from current usin g client. 另,请问欧美的1.12.1版本在哪里可以下载到?谢谢!
 
17
2007-06-26 02:54 | 回复
现在官方下载的都是2.0的版本了。http://www.worldofwarcraft.com/downloads/wowclient-download.html 确实1.12.x的客户端不好找,我也没有时间升级我的服务器。你去mangos论坛: http://www.mangosproject.org/forum/ 下载最新的mangos二进制代码。 和数据库SDB的论坛 http://sdb.unix7.net/forums/ 下载最新的数据库,配合mangos就可以了,不必费力运行老版本的server端了。
 
18
2007-06-26 17:07 | 回复
谢谢faifcn回复!现在还有以下几个问题需要请教一下: 1、从http://www.worldofwarcraft.com/进去时在哪一个页面能找到如你所给的链接地址呢? 2、我正在下载的是2.0.0_enUS版本,但http://www.mangosproject.org/forum/上的mangos二进制代码对应的即是1.12.1或2.0.12版本,如何从2.0.0升级到2.0.12,在官网没有找到升级包。 3、数据库SDB最新版本是SDB_0.6.4_FULL,其兼容MaNGOS 3540,对于最新的Mangos 3931版本能否兼容呢? 4、能否更新一下你的博客,客户端使用2.0.12版本的实战操作! 谢谢!
 
19
2007-06-27 04:44 | 回复
回复:网友:hyx 1、2,可以从http://www.wowwiki.com/Patch_mirrors 找到客户端,patch的大多数链接。 3.用网友自己编译的从svn数据库里面直接check out的SDB版本。svn版本为197的应该可以支持mangos3900以上的版本: 你可以看这个帖子:http://sdb.unix7.net/forums/index.php?showtopic=8803 4.我老婆在玩我现在的服务器,如果要保留你现在的人物和物品,从1.12升级到TBC或者2.0.x新的话(也就是保留游戏数据库)不是很方便,要一个数据库版本一个的升级,至少以前是这样,不知道有没有人开发了什么简便的方法。 所以我不愿意升级新版本。一来是最近没什么时间,二来也不愿破坏现在机器上的内容重新按装。如果有朋友提供机器从头安装试试,我到不介意帮忙看看。
 
20
2007-06-27 09:36 | 回复
Thanks for your help, I try again!
 
21
2007-07-02 01:23 | 回复
請問有人可以給我最新的嗎? 因為現在台版官方好像更新到69xx了 版本好像是2.1.12.3 還有像大大說的修改源代碼 我已經找到位置了 可以修改了,但是要儲存系統說檔案位置不對? 要我另外找位置存.. 但是我用匯入的方式又要我輸入帳號密碼.. 真不知道怎麼辦? 另外有人有99net的邀請碼嗎.. 就是那個很多私服資料的論壇 希望大大可給我!!!
 
22
2007-07-02 09:16 | 回复
faifcn,仍然遇到下面的问题:1、没有找到从2.0.0升级到2.0.12的patch包。只找到从1.12.1升级到2.0.12的包。2、Mangos官方那里的发行包,都是以2.0.12或1.12.1为准。
 
23
2007-07-02 17:36 | 回复
现在做魔兽sf的还有意义吗? 请email我
 
24
2007-07-02 17:38 | 回复
我在考虑是否做魔兽sf,请给意见
 
25
2007-07-03 19:17 | 回复
师傅引进门修行在个人
 
26
2007-07-03 20:57 | 回复
我找到2.0.12的版本了 可以成功使用模擬器連結 可是第一次登入時選擇玩伺服器 之後就一直斷線了 重開也一樣.. 請問怎麼會這樣?
 
27
2007-07-04 09:05 | 回复
Ken,请问你的2.0.12版本在哪里能找到的呢?能否给出Url。我们大家一起来研究。
 
28
2007-07-04 18:22 | 回复
我是在一個美國網站找到的.. 不太清楚,那裡的客服端和資料庫應該都是英文的吧! 我已經成功開啟伺服器了,但是之後一直斷線,不知道為什麼 也想問這裡的大大有99nets的帳號嗎...
 
30
2007-07-06 04:17 | 回复
暂时mangos支持2.0.12不过很快将会升级的。以下是2.0.12-us版的patch地址,用于测试: 2.0.1 to 2.0.3 patch http://files.filefront.com/World+of+Warcraft+Manual+Patch+20x+to+203+++US/;6502131;;/fileinfo.html 2.0.3 to 2.0.12 patch http://files.filefront.com/World+of+Warcraft+v203+to+v2012+US+Patch/;7120432;/fileinfo.html 另外现在又有个开源项目,据说性能更佳,版本更新,这个项目叫Antrix,可以同时支持2000人在线而没有延迟。有兴趣的可以试试。
 
31
2007-07-13 09:09 | 回复
几经波折,终于安装好,几个同事一起试玩,感觉挺好。若是能支持简体中文,那就相当的好。太感谢faifcn,若是找到支持简体中文的方法,第一时间贴出来哦!
 
32
2007-07-13 18:17 | 回复
恭喜hyx呀,你都可以写个安装TBC版本的教程了呵呵,国内的wow支持TBC了吧。
 
33
2007-08-28 00:06 | 回复
down了个2.1.2.6803的服务器文件,按照faifcn的方法安装ok 问题:查看realmd的account表好像没有看到数据,增加了几个帐号后运行游戏提示帐号被冻结。why? 另外现在有9c 2.1.3版本的吗?
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu