MaNGOS编译

开源社区常常有很多出人意表的项目,让人往往击节叹赏。例如当年在普通PC电脑上虚拟运行苹果机系统的 Pearpc。把微软游戏机xbox改装成家庭影音中心的 xbox-media center,以及在ipod上安装linux的 ipodlinux等项目。在电脑游戏方面当然也有很多出色的开源项目。

暴 雪公司的游戏历来都是精品。网络游戏大热以后,它推出的基于10年游戏历史的网游:《魔兽世界》也更是名声在外(当然有好有坏,坏名声在于它太吸引人以致 于很多人沉湎其中)。网络游戏的盈利模式和传统电脑游戏不同,月费和其他的周边产品使得其赢利空间远远大于传统电脑游戏。对于网游运营商来说很大的一个问 题是私服的问题。很多私服的软件是从网游开发公司或者运营公司内部非法的流出来的,比如说网游《仙境传说》的私服。

而现在大多数魔兽世界 的“私服”实际上是服务端软件的模拟器。是在对客户端游戏软件和与服务端的进行通信的数据进行分析解密以后,开发出来的模拟原游戏服务器功能的软件,这样 的模拟器软件大都也是开源软件。比如像现在大部分魔兽私服使用的Mangos服务端软件,mangos项目是一个开源的自由软件(如同linux或者 firefox),并且遵守其中最为严格的GPL协议。

是( 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帐号,他们测试了一下,觉得这个版本的做的很不错了,开源的宗旨是知识的分享,开源社区黑客们的探索精神不得不让人佩服。
英文Mangos编译完全手册for wow2.43-3.13-入门篇

作者也是从小白过来,知道很多mangoser都想学mangos的vc技术,可是国内资料太少,真理总是掌握在少数人手里。。。我希望大家能本着互相交流学习的目的提高中国mangos技术,和vc开发网游技术。我公开我所掌握的技术资料,陆续会推出内核各种代码机制及数据库交互面的讲解,今天先来个入门教程。

************************************************************************************************************************************

先是关于mangosf的一些介绍:

mangos不是一个魔兽世界 SF 模拟器,它是一个开源的自由软件项目,是用c++和C#编程语言,实现的一个支持大型多人在线角色扮演游戏服务器的程序框架,在这个框架下,它理论上应该支持任何客户端的网络游戏,由于现在很多人使用魔兽世界来对它进行测试,所以针对魔兽世界的脚本和数据库文件比较完善,很多人就利用这个开源项目来实现魔兽SF。
最近对这一块比较感兴趣,所以下载mangos的代码尝试着自己编译。
mangos源码下载地址: GIT方式更新
[url]http://github.com/mangos/mangos/tree/master[/url]
(负责Server端的主要控制工作,接收客户端发送的封包信息以及回复给客户端相应的封包)
ScriptDev2源码下载地址: SVN方式更新 [url]http://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/[/url]
(这部分代码主要控制玩家交互方面的一些东西,游戏里生物的AI,等等。常见的WOWSF里的 传送宝石就是通过扩展这部分代码做出来的)
udb下载地址: SVN方式更新 [url]https://unifieddb.svn.sourceforge.net/svnroot/unifieddb/trunk/[/url]
(游戏的所有数据,生物,物品,怪物,NPC等等都是通过读取MYSQL数据库而实现的,而mangos这个项目只负责做框架,并没有把数据库的研发工作也包含进去,所以有另外一个小组专门做udb这方面的工作,每天都会更新很多新的数据,时时保持更新,可以让游戏里的内容更加丰富)
在编译之前将以上三个资源都下载到最新版本,然后先编译mangos,提供三个工程
vc71,vc8,vc9。我用的Visual Stdio2008,所以打开vc91的工程项目进行编译.整个编译过程没什么好说的。
1:中文问题:
需要说明的一点是,如果要在游戏里加入中文需要特别的处理一下,因为mangos这个项目最初并没有考虑到国际化的问题,所以如果需要正确的显示中文,最好在文字的开头和末尾都额外地加上一个空格,然后按照UTF-8的编码方式保存源文件。再进行编译。至于VS2003和VS2005我没有尝试过,也可以考虑添加一个通用类来进行UTF-8的转换工作。
2:编译ScriptDev2有可能遇到的问题
首先将ScriptDev2复制到mangos项目下的src\bindings\目录里进行编译。
我在编译时确实遇到了一下这个问题,如果之前通过的SVN下载的mangos源码,有可能出现这样的问题。需要将mangos用git 更新一下,不过目前的资料貌似没有出现这个问题。
mangos\src\bindings\ScriptDev2>"..\..\..\win\VC71\genrevision__Win32_Release\genrevision.exe"
1>系统找不到指定的路径。
1>mangos\src\bindings\ScriptDev2>if errorlevel 1 goto VCReportError
3:mangos版本对应wow版本的说明

2009-02-19发布v0.13-dev2 ,仅支持魔兽世界版本为3.0.8,3.0.9
2009-01-30发布v0.13-dev1 ,仅支持魔兽世界版本为3.0.3,3.0.5
2009-12-22发布v0.12,    仅支持魔兽世界版本为2.4.3

************************************************************************************************************************************

关于Mangos框架 的编译和搭建分为两部分工作.

一、先决条件:

    1. Visual Studio 2008(下Express Edition就行,免费的专门为学生和非专业开发者用,我也用这个http://www.microsoft.com/express/download/default.aspx)

    2. MySQL6.0(dev.mysql.com/downloads/mysql/6.0.html)

    3. SQLyog Community数据库管理器,用于管理MYSQL数据库(http://www.webyog.com/en/downloads.php)

    4. 新建好mangos源代码和ScriptDev2脚本源代码文件夹

    5.wow客户端,目前推荐美f3.13,台f3.12/3.13,cwow3.05/3.09(sina游戏有下载)

    6.SVN软件,或者GIT软件(中国人喜欢SVN外国人喜欢GIT+SVN,我喜欢俩个都用。。。)

如何下载mangos和ScriptDev前面已经说得很清楚了,下载完两个项目之后,将ScriptDev 放到 mangos的项目 /src/bindings目录下.
二:编译
首先release编译mangos,根据vs版本的不同打开不同的sln文件。生成解决方案(去喝杯茶,抽支烟吧)目前为止整个项目450万以上的代码对我的硬件设备是一个很大的挑战。
正常情况下编译是成功的,如果不成功,请检查是否是最新版本的源码。
继续编译ScriptDev2
编译完毕,进到mangos 目录下的 /src/bin/release里面,你会找到:libeay32.dll,dbghelp.dll,libeaysql.dll,mamgosd.exe,MaNGOSScript.dll,realmd.exe 这6个文件。
三:配置
现在新建一个目录,用来存放WOW服务开启所需要的东西。
将编译好的文件copy进来.
现在,到./src/mangosd文件夹下找到mangosd.conf.dist.in,再到./src/realmd下找到realmd.conf.dist.in文件,
    把这两个文件拷贝到mangos文件夹下,并把.in去掉。

    用记事本或者UltarEdit32打开这两个conf文件,修改几处:
    <1>mangosd.conf文件中找到:
    LoginDatabaseInfo = "127.0.0.1;3306;xxxx;xxxx;realmd"
    WorldDatabaseInfo = "127.0.0.1;3306;xxxx;xxxx;mangos"
    把第一个xxxx设置为你的MySQL用户名,第二个是你的MySQL的密码。
    找到:DataDir="@MangosDATA@" 把""里面改为:"./"即DataDir="./" 
    然后保存完事儿
    <2>realmd.conf文件中找到:
    LoginDatabaseInfo = "127.0.0.1;3306;xxxx;xxxx;realmd"
    修改方法同mangosd.conf
在mysql中新建四个数据库mangos,realmd,characters,scriptdev2
然后导入一些初始数据,sql目录下有三个主要的sql
mangos.sql
realmd.sql
characters.sql
src\bindings\ScriptDev2下有scriptdev2所需要的数据信息
五、释放DBC,MAPS文件:

    需要两个软件:ad.exe这个是解压缩地图的. mpq.exe这个是解压缩mpq文件的。
    1.把ad.exe放入游戏客户端的目录下即./World of warcraft,然后新建一个名为"maps"的文件夹
    然后,美服客户端就可以直接运行了。如果是台服,就要把Data文件夹下的enTW文件夹改名为enGB
    然后把locale-enTW.MPQ,patch-enTW-2.MPQ,patch-enTW.MPQ这3个文件的TW都改为GB。
    运行就可以解压出地图来了,弄完以后的maps文件夹大小是1.06G
    2.把mpq.exe和zlib.dll放进zhTW里面,然后:
    开始菜单--->运行--->输入cmd--->到你放mpq.exe的路径下,例:F:/WOW/DATA/zhTW--->
    输命令:mpq e locale-zhTW.MPQ *.dbc 
    然后会生成一个目录Ex....locale-zhTW的,里面有一个DB开头的文件夹,把文件夹名字改为dbc,
完工
    3.现在把maps,dbc两个文件夹拷到mangos下面就可以了。
    启动realmd.exe和mangosd.exe
OK,现在将以下文本保存为bat复制到你的wow客户端目录下
@echo off
rd cache /s /q
echo set realmlist 127.0.0.1>realmlist.wtf
start wow.exe -opengl -windows
exit
点击这个bat开始登陆吧

有一个初始的游戏管理员账号ADMINISTRATOR,密码同

***********************************************************************************************************************************

现在本人补充:为了完成3。09以上sf工作

1。GIT下载:http://msysgit.googlecode.com/files/Git-1.6.3.2-preview20090608.exe

这个冬冬作为svn的补充。建议先编译,如果不成在用git更新,

更新地址:git://github.com/mangos/mangos.git

2。svn现在官方最新的更新地址:http://svn2.assembla.com/svn/mangos-svn-mirror/

原来的地址已经不能下载mangos源程序了。

3。用户密码现在已经不是明码,而是hash码,建议用administrator建立帐户,后在数据库提高其权限为3

你可能感兴趣的:(游戏,数据库,mysql,服务器,subversion,网络游戏)