TC 从0 编译
这个教程教大家在 64 位 windows 系统下面,怎样从零开始编译一个魔兽世界的服务端(包括 3.3.5 和与官方同步的 7.x 版本),本教程以 7.x 版本为例
MaNGOS 芒果端,也就是 M 端,源码地址:https://github.com/mangos/MaNGOS ,MaNGOS 端所有版本
怎样从零开始编译一个魔兽世界服务端
Posted by xspio on 2018-05-25 16:43:08
这个教程教大家在 64 位 windows 系统下面,怎样从零开始编译一个魔兽世界的服务端(包括 3.3.5 和与官方同步的 7.x 版本),本教程以 7.x 版本为例
下图为 7.x 版本进入游戏后的画面(点击图片查看大图)
MaNGOS 芒果端,也就是 M 端,源码地址:https://github.com/mangos/MaNGOS ,MaNGOS 端所有版本 MaNGOS 官方都会编译好并在服务端源码的 releases 那里放出下载链接,所以大家都不用编译直接下载就可以使用了
教程里源码使用 TrinityCore,也就是T端,如果哪天T端也放出编译好的版本,那就不需要这个教程了,在这里告诉下大家,这些服务端源码都是免费的,编译好后也没有任何限制
有兴趣和能力的同学还可以往里面加一些自定义功能,比如传送啊、PlayerBot(也就是我们说的机器人)啊、自定义附魔啊等等(大部分你在外面看到的功能都已经有人写好了,你只要往服务端源码里加入再编译就行了)
其中 3.3.5 版本基本能实现官方 99% 的功能
7.x 版本则很多系统功能和副本脚本都不是很完善,但也是可玩的,特别是对一些喜欢尝新的同学来说
注:教程里使用的是 win10 64 位的系统,所以大部分的截图和环境设置都是以这个为准,如果你使用的是其他版本的系统,比如 win7,其实基本和 win10 是一致的,一样可以照着教程实现正常编译
系统需求:
CPU 处理器必须支持 SSE2 指令集(一般只要不是太旧的 CPU 都支持)
Boost 1.65.1
MySQL ≥ 5.1.0
OpenSSL = 1.0.x
CMake ≥ 3.8.2
MS Visual Studio (Community) ≥ 15 (2017)
Git https://gitforwindows.org (这个请自行安装)
下面开始上面环境的安装
Boost
下载:https://dl.bintray.com/boostorg/release/1.65.1/binaries/boost_1_65_1-msvc-14.1-64.exe
如上图安装到默认位置(一般是 C:\local\boost_1_65_1)
然后在系统中添加环境变量,如下图(点击图片看大图)
MySql
编译用 MySql 下载:https://dev.mysql.com/downloads/mysql/5.6.html
下载 Windows (x86, 64-bit), ZIP Archive 这个免安装版本,解压到 D 盘根目录(例 D:\mysql-5.6.40-winx64)
运行用 MySql ,这个用来导入游戏数据库,服务端实际运行在这个数据库下面,编译时不用,后面导入游戏数据库和运行游戏服务端时才用到
这里提供一个绿色免安装的版本,和本站发布的版本里自带那个一样的
链接: https://pan.baidu.com/s/1XQ_NuCj8Vj8xikyUhlJVDw 密码: vunn
解压到(D:\MySql)后运行里面的 MySQL.bat 就行了,连接数据库用户名和密码如下
用户名:root
密码:ascent
OpenSSL
下载:http://slproweb.com/products/Win32OpenSSL.html
注意:下载 64 位的,版本号为 1.0.x 的版本,不要下载 1.1.x 的版本和名字里带 Light 的版本
比如现在下载的 Win64 OpenSSL v1.0.2o,有可能你下载的时候最后的版本字母 o 会不一样
安装的时候如果系统里没有 Microsoft Visual C++ 2008 Redistributable Package (x64) 会出错
VC ++ 2008 64位下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=15336
安装选项里如下图选择,其他的按默认就行了
CMake
下载:https://cmake.org/download/
在 Latest Release 下面找到 Windows win64-x64 Installer ,下载这个
安装的时候记得在生成桌面快捷方式上打勾,其他默认,如下图
MS Visual Studio (Community)
下载:https://www.visualstudio.com/zh-hans/
在下载 windows 版里面选择带 Community 的版本,只有这个是免费的,免费版功能和收费版是一样的
安装的时候注意选项如下图(点击图片放大)
勾选"使用 C ++ 的桌面开发",如果是 windows 10 的系统,还要勾选右边那两个选项,其他的默认就行了
开始编译
到这里我们的编译环境就已经搭建好了,下面需要下载源码了
TrinityCore 下载地址:https://github.com/TrinityCore/TrinityCore
点击 Branches: master 这里可以切换版本分支,版本分支说明在上面源码下载链接的页面上有说,比如现在显示的是 TrinityCore Open Source MMO Framework (master = 7.3.5.26654, 3.3.5 = 3.3.5a.12340) ,说明 master 代表 7.x 版本,3.3.5 代表 3.3.5a.12340 版本(巫妖王之怒),你要编译哪个版本就切换到哪个版本的分支再下载
提醒:如果你编译的是最新 master 分支的版本,一定要先运行 魔兽世界 客户端,检查两个版本号是否对应,不相同就不要编译了,运行不会成功的
客户端版本查看,运行桌面的 魔兽世界 快捷方式,或者在 魔兽世界 文件夹里面运行 World of Warcraft Launcher ,会在上面显示版本信息,我这里显示的版本号也是 7.3.5.26654 ,说明服务端和客户端版本是匹配的,如果不匹配,那你可以更新 魔兽世界 到最新版本,或者等 TrinityCore 更新服务端源码到现在客户端相同版本后才可以编译,否则就不要编译了,编译好了也会因版本不对应而无法进入游戏
这里以 master 分支为例,点击右边的绿色按钮 Clone or download ,点击 Download ZIP 开始下载,下载好后把 TrinityCore-master.zip 解压到 D 盘根目录,重命名 TrinityCore-master 文件夹名称为 Trinity
在 D 盘根目录新建一个命名为 Build 空文件夹,用来放 CMake 生成的源码程序(后面编译好的服务端程序也在这里)
运行安装好的 CMake,刚刚新建了桌面快捷方式的话在桌面就可以直接找到了,没有的话在默认安装目录 C:\Program Files\CMake\bin 运行 cmake-gui.exe
如上图,点击 Browse Source… 选择源码文件夹 D:\Trinity ,点击 Browse Build… 选择 D:\Build 文件夹,然后点击 Configure

上图"活动解决方案配置"这个选择"RelWithDebInfo","活动解决方案平台"选择"x64",选择好后点击"关闭"
这里 VS 会再次扫描整个方案,等状态栏显示"就绪"后,在 VS 的"解决方案资源管理器"面板里面,右键 ALL_BUILD,选择"生成"
这个过程视每个人的电脑不同,所用时间也不尽相同,我电脑配置差,下去喝杯水先
片刻后…
项目生成成功,在 VS 的"输出"框内显示如下类似信息
========== 生成: 成功 26 个,失败 0 个,最新 0 个,跳过 0 个 ==========
生成的文件在 D:\Build\bin\RelWithDebInfo 目录里面,至此源码编译就已经完成了
解压 DBC, Maps, VMaps 和 MMaps
在 D:\Build\bin\RelWithDebInfo 文件夹里面,拷贝下面4个文件到 魔兽世界 客户端里面
mapextractor.exe
mmaps_generator.exe
vmap4assembler.exe
vmap4extractor.exe
在 D:\Trinity\contrib 文件夹里面,拷贝 extractor.bat 到 魔兽世界 客户端里面
上面文件全部拷贝完成后,双击拷贝进 魔兽世界 客户端里面的 extractor.bat ,在弹出的对话框中输入数字 4 (解压全部)后敲"回车"键,提示你"This may take a few hours to complete. Please be patient."意思是全部解压得花好些个小时,你得耐心一点,再次敲"回车"键后开始解压
服务端配置
在 D 盘根目录,新建一个 TrinityCore 的文件夹,把上面生成的 DBC , Maps , GT , VMaps 和 MMaps 这几个文件夹复制或者剪切到这里来
在编译好的 D:\Build\bin\RelWithDebInfo 文件夹里面,把下面的文件拷贝到 D:\TrinityCore 文件夹中
bnetserver.cert.pem
bnetserver.conf.dist
bnetserver.exe
bnetserver.key.pem
bnetserver.pdb
worldserver.conf.dist
worldserver.exe
worldserver.pdb
然后把 bnetserver.conf.dist 和 worldserver.conf.dist 文件名后面的 .dist 删除掉变成 bnetserver.conf 和 worldserver.conf
还有几个文件需要拷贝进来
在 D:\mysql-5.6.40-winx64\lib 文件夹里面,把 libmysql.dll 拷贝到 D:\TrinityCore 文件夹中
在 C:\OpenSSL-Win64 文件夹里面,把 libeay32.dll 和 ssleay32.dll 拷贝到 D:\TrinityCore 文件夹中
下载创建数据库的 sql 文件:https://github.com/TrinityCore/TrinityCore/blob/master/sql/create/create_mysql.sql 打开这个页面,在 RAW 这个按钮上面鼠标右键,选择"链接另存为",把 create_mysql.sql 保存到 D 盘根目录
服务端数据库下载:https://github.com/TrinityCore/TrinityCore/releases
在上面这个下载页面可以看到, TDB 7xx.00 打头的是 7.x 服务端用的数据库, TDB 335.xx 这个是 3.3.5 版本用的数据库,我们编译的是 7.x 的服务端,那就下载 TDB_full_7xxx.7z 这个最新的数据库,下载好后解压到 D 盘根目录
在解压出来的 D:\TDB_full_7xxx 文件夹中,找到"TDB_world_xxx"和"TDB_hotfixes_xxx"两个文件,拷贝到 D:\TrinityCore 目录中去
服务端运行
在 D:\TrinityCore 目录,修改一个文件后,服务端就可以运行了
用编辑器打开 worldserver.conf ,编辑器可以使用 vscode 、 sublime 等等,最好不要用记事本打开
修改 DBC.Locale = 0 ,改成 DBC.Locale = 4 (这个是因为使用的是中文的游戏客户端)
修改 mmap.enablePathFinding = 0 ,改成 mmap.enablePathFinding = 1 (这个可以改善怪物的寻路,免得怪物飞天之类的发生)
修改好后现在运行 D:\TrinityCore 里面的 worldserver.exe ,程序会自动创建、导入并更新数据库,红线标明了正在导入的数据库,如下图(点击图片看大图)
登录游戏
用编辑器打开你的游戏客户端里面的 WTF\Config.wtf 文件,修改这行 SET portal "CN" 为 SET portal "127.0.0.1"
把 D:\Build\bin\RelWithDebInfo 里面的 connection_patcher.exe 和 刚刚放进 D:\TrinityCore 目录的 libeay32.dll 拷贝到游戏客户端里面,把 Wow-64.exe 拖到 connection_patcher.exe 图标上面放开,会生成 Wow-64_Patched.exe 文件,运行 Wow-64_Patched.exe 这个文件进入游戏,在游戏账号那里输入刚刚创建的 test@test ,密码输入 test 就成功连接了,如果弹出服务器选择框,选择 Trinity 就行了
游戏截图(点击图片看大图)