开源社区常常有很多出人意表的项目,让人往往击节叹赏。例如当年在普通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的版本。
一、安装需求:
操作系统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
二、安装MySQL数据库,以及SQLyog客户端
点击安装文件选择典型安装(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"
点击连接,这样客户端就连接到你的MySQL数据库服务器上了。
在左边一栏右键点击“root@localhost”,选择建立数据库"Create Database"。
当提示输入数据库名称的时候输入:"mangos"。
重复第9,10步建立数据库"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子目录了。
五、解压安装提取的*.dbc文件
在你的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")了。
七、下载安装数据库内容,前文说过,mangos只是游戏引擎,游戏的内容,建立的数据库由独立小组开发,我们这里使用著名的
Silver's Database Site的库。版本号为SDB156.
将下载的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"
同样,这里的IP地址可以是你的IP,[password]是你的密码。存盘。
到这里基本就大功告成了。先运行realmd.exe文件,稍等,运行mangosd.exe,魔兽服务器就已经运行了。
连接到你的魔兽服务器,修改你的魔兽世界客户端的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}