2010年11月6日星期六

Mangos 研究-编译工作

先是关于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 Stdio2003,所以打开vc71的工程项目进行编译.整个编译过程没什么好说的。


1:中文问题:

需要说明的一点是,如果要在游戏里加入中文需要特别的处理一下,因为mangos这个项目最初并没有考虑到国际化的问题,所以如果需要正确的显示中文,最好在文字的开头和末尾都额外地加上一个空格,然后按照UTF-8的编码方式保存源文件。再进行编译。至于VS2005和VS2008我没有尝试过,也可以考虑添加一个通用类来进行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 2003 或者是Visual Studio 2005版本。
2. MySQL 4.1 去官方下在4.1.22版本的就可以或者更高版本
3. Navicat2005数据库管理器,用于管理MYSQL数据库
4. 准备好mangos源代码和ScriptDev2脚本源代码文件夹
如何下载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="@[email protected]" 把""里面改为:"./"即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"的文件夹
然后,美服TBC客户端就可以直接运行了。如果是台服TBC,就要把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,密码

没有评论:

发表评论