2016 年 10 月 - 2 文章

在Windows系统上搭建TrinityCore开发环境

  |   0 评论   |   0 浏览

〇、前言

TrinityCore是一个魔兽世界服务端模拟器,我们可以通过TrinityCore来学习大型网络游戏服务端的编写,从中汲取营养来编写我们自己的游戏。

一、前期准备工作

CPU需要支持SSE2指令集 Boost版本大于等于1.59.0 MySQL数据库版本大于等于5.1.0 OpenSSL版本为1.0.x CMake版本大于等于3.3.2 MicroSoft Visual Studio (Community)版本大于等于14 (2015 update 3)

1.安装 Git Extensions

注意其中Git、MySYSGit和KDiff这三个软件必须全部安装,安装Git的时候,在路径选择那里选择“RunGit from the Windows Command Prompt”。MySYSGit和KDiff使用默认选项安装即可。

2.安装IDE

安装Visual Studio 2015,注意当安装VS2015时,默认是不支持C++的,我们需要手动选择Visual C++,选择自定义安装,然后将Visual C++选项选中,如下图所示:

12

3.安装MySQL

TrinityCore支持的MySQL版本为5.55.6,请勿使用5.7及以上版本。
  1. 下载安装包
  2. 在MySQL Configuration配置中,设置用户名为trinity,密码同样为trinity,并且确保该用户拥有localhost域访问权限。
  3. 建议将MySQL注册为服务,这样数据库就可以随Windows开机启动了。

4.选择一款数据库管理软件

1)SQLYog Community Edition(强烈推荐) 2)HeidiSQL (对新手友好) 3)MySQL Workbench(MySQL官方出品,个人感觉使用起来不太友好,但是是唯一可以建立模型的软件)

使用你安装好的数据库管理软件连接数据库,测试数据库是否安装成功。

5.安装Boost

下载对应 Visual Studio 2015 的版本:

1)64bit:http://sourceforge.net/projects/boost/files/boost-binaries/1.59.0/boost_1_59_0-msvc-14.0-64.exe/download

2)32bit:http://sourceforge.net/projects/boost/files/boost-binaries/1.59.0/boost_1_59_0-msvc-14.0-32.exe/download

Boost 1.59.0是可以使用的最低版本,推荐使用1.60.0版本。

64bit: https://sourceforge.net/projects/boost/files/boost-binaries/1.60.0/boost_1_60_0-msvc-14.0-64.exe/download

32bit: https://sourceforge.net/projects/boost/files/boost-binaries/1.60.0/boost_1_60_0-msvc-14.0-32.exe/download

安装到默认路径(C:\local\boost_1_XX_0),然后添加一个名为“BOOST_ROOT”的环境变量到你的安装路径,比如“C:/local/boost_1_60_0”。确保没有末尾斜杠,如下图所示:

boost_envs

注意:这张图片中的版本号为1_55_0,将它改为你的实际版本号。

6.安装CMake

下载cmake-3.6.2-win64-x64.msi 这个版本,不要下载RC (Release Candidate)版本。注意要下载64bit版本。如图所示: dcmake

7.安装OpenSSL

不要下载light版本,分为32和64位两个版本,下载对应版本即可。我们这里选择64bit版本,如图所示:

注意:不能选择最新版本1.1.0,必须选择1.0.x版本。

openssl

如果安装过程中提示没有VisualC++库的话请到网上自行下载安装。

二、代码编译

1.从GIT拉取代码

创建一个文件夹,在该文件夹上点击鼠标右键,选择“Git Extensions -> Clone”,如下图所示: git

3.3.5a版本仓库地址:

Repository to clone: https://github.com/TrinityCore/TrinityCore
Destination: D:\Trinity\Source
Subdirectory to create: <none>
Branch: 3.3.5
Personal Repository: Yes

6.x版本仓库地址:

Repository to clone: https://github.com/TrinityCore/TrinityCore
Destination: D:\Trinity\Source
Subdirectory to create: <none>
Branch: 6.x
Personal Repository: Yes

我们这里选择3.3.5的仓库拉取代码。

2.使用CMake生成VS2015使用的Visual C++ 工程

编译之前在硬盘上建立编译文件目录,比如“D:\Trinity\Build”。

1)运行CMake,如下图所示:

step2

2)点击 Browse Source... -> 选择源码目录(D:/Trinity/Source)

step3

3)点击 Browse Build... -> 选择编译目录(D:/Trinity/Build)

step4

4)点击 Configure

step5

5)确保 Use default native compilers 选项是选中状态

step6

6)选择Visual Studio 14 Win64

step7

7)点击Finish

step8

8)确保Tools是被选中状态。

step9

9)再次点击Configure

step10

10)点击Generate,VS所需的资源文件已经生成到D:/Trinity/Build目录了。

3.使用VS2015编译代码

使用VS2015打开D:/Trinity/Build目录下的TrinityCore.sln文件,经过一段时间的读取,VS加载了TrinityCore整个工程。我们选择菜单中的Build->Configuration Manager选项打开编译配置界面。

设置 Active SolutionConfiguration 为 Release。
设置 Active Solution Platform 为 Win64 (确保上面安装的软件全部实64位的)。
点击 Close 关闭对话框。

在 Solution Explorer 中右键单击 ALL_BUILD 选择 Clean。
清理完毕后再次右键单击ALL_BUILD 选择 Build。
现在就已经开始编译源码了,这个过程要花5-30分钟,视你的电脑配置而定。

完成后会提示:
========== Build: 22 succeeded, 0 failed, 0up-to-date, 0 skipped ==========

你可以在D:\Trinity\Build\bin\Release找到编译好的文件。
想要正常运行程序,你需要如下文件:

  • libeay32.dll
  • libmySQL.dll
  • ssleay32.dll
  • worldserver.conf.dist
  • worldserver.exe
  • authserver.conf.dist
  • authserver.exe
其中worldserver.conf.dist 、worldserver.exe 、authserver.conf.dist和authserver.exe是编译成果,libeay32.dll、libmySQL.dll和ssleay32.dll需要从以下路径(如果你安装软件的时候手动改过路径,请从你改过的路径中拷贝)手动拷贝过来:

libmySQL.dll - C:\Program Files\MySQL\MySQL Server 5.x\lib
libeay32.dll, ssleay32.dll - C:\OpenSSL-Win64\bin

至此,编译完成!

4.保持更新

在源码目录(D:\Trinity\Source)上点击右键,选择Git菜单中的Pull(拉取代码的意思)选项。

打开CMake软件,点击Configure,然后点击Generate。

使用VS2015重新编译。

完成!

三、导入数据库并准备资源文件

TrinityCore使用MySQL数据库,其中我们需要建立三个数据库,它们分别是authcharactersworld
  • Auth:权限数据库,存储服务器列表,玩家账户等信息。
  • Characters:角色数据库,存储所有角色人物相关的信息。
  • World:世界数据库,存储整个魔兽世界的一切信息,包括NPC,怪物,装备,道具,任务,副本等等所有一切。

1.下载数据脚本

下载world数据库sql脚本,地址如下:

https://github.com/TrinityCore/TrinityCore/releases/tag/TDB335.61

打开以上网址,选择TDB_full_335.61_2016_04_11.7z下载并解压缩。

2.导入数据库脚本

1)执行D:\Trinity\Source\TrinityCore\sql\create\create_mysql.sql。

2)选择auth数据库,执行D:\Trinity\Source\TrinityCore\sql\base\auth_database.sql脚本。

3)选择characters数据库,执行D:\Trinity\Source\TrinityCore\sql\base\characters_database.sql脚本

4)选择world数据库,执行刚刚下载解压缩的TDB_full_world_335.61_2016_04_11.sql脚本。

3.保持数据库更新

每次启动worldserver.exe时,会自动执行最新的SQL升级脚本,无需人工干预。

4.准备资源文件

除了数据库之外,服务器的运行还依赖以下资源文件:
目录 版本  是否必须
dbc all 必选
maps all 必选
vmaps all 强烈推荐
mmaps all 强烈推荐
cameras 3.3.5a only for now 推荐
gt 6.x only 必选

1)取得资源文件提取工具:

  • extractor.bat 批处理文件,我们主要通过这个文件执行命令提取资源文件。
  • mapextractor.exe 这个工具负责提取dbc和cameras文件。
  • vmap4extractor.exe 这个工具负责提取maps文件。
  • mmaps_generator.exe 这个工具负责提取mmaps文件。
  • vmap4assembler.exe 这个工具负责提取vmaps文件。
在D:\Trinity\Build\bin\Release目录中可以找到4个可执行文件,如图所示: %e8%b5%84%e6%ba%90%e6%8f%90%e5%8f%96%e5%b7%a5%e5%85%b7

在D:\Trinity\Source\TrinityCore\contrib目录中可以找到extractor.bat,如图所示:

%e6%89%b9%e5%a4%84%e7%90%86

将以上文件拷贝到魔兽世界3.3.5客户端的根目录中。

2)提取资源文件

双击运行extractor.bat,如下图所示: extractor

输入1然后回车,这时候会提取dbc和maps文件。

等待提取结束,然后输入2回车,这时候会提取vmaps文件。

等待提取结束,然后输入3回车,这时候会提取mmaps文件,注意该步骤将花费大量时间,如果PC性能一般,可能会用2-3个小时左右。

3)拷贝提取好的资源文件

提取结束后,在魔兽世界客户端根目录会多出5个文件夹,分别是Cameras、dbc、maps、mmaps和vmaps,将他们拷贝到我们编译后的服务端程序根目录中,如下图所示: %e8%b5%84%e6%ba%90

四、配置网络并启动

1.修改 authserver.conf 配置文件

修改authserver.conf.dist为authserver.conf,然后使用文本编辑器打开。

找到数据源配置(MYSQL SETTINGS)

修改LoginDatabaseInfo = "localhost;3306;trinity;trinity;auth"

2.修改 worldserve.conf 配置文件

修改worldserve.conf.dist为worldserve.conf,然后使用文本编辑器打开。

同样修改

LoginDatabaseInfo = "localhost;3306;trinity;trinity;auth"
WorldDatabaseInfo = "localhost;3306;trinity;trinity;world"
CharacterDatabaseInfo = "localhost;3306;trinity;trinity;characters"

注意:如果你的数据库是使用的是你自己设定的用户名和密码,请将红色字体对应修改为你自己设定的用户名的密码(红色字体部分前面是用户名,后面是密码)。

3.修改服务器IP地址

修改auth库中realmlist表中的address字段为你的公网IP地址,如下图所示: %e6%95%b0%e6%8d%ae%e5%ba%93ip%e5%9c%b0%e5%9d%80%e9%85%8d%e7%bd%ae

注意:如果你只是在本机测试,不在外网发布可以忽略这一步骤。

4.确认游戏客户端版本号

修改gamebuild字段为你的游戏客户端(国服为13930,台服为12340)。

5.启动服务器

运行authserver.exe,这个是登录与网关程序,启动成功如下图所示: authserver

运行worldserver.exe,这个是游戏主程序,启动成功如下图所示:

worldserver

6.创建账号并授予GM权限

在worldserver.exe的DOS窗口中输入如下命令:
  • 创建账号命令: account create <user> <pass>
  • 创建账号例子: account create test test
  • 授予GM权限命令: account set gmlevel <user> 3 -1
  • 授予GM权限例子: account set gmlevel test 3 -1

7.修改客户端的连接地址

在客户端根目录建立一个txt文本文件

在里面输入:

echo y | rd /s "Cache"
echo SET realmlist "127.0.0.1" > Data\zhTW\realmlist.wtf
echo SET realmlist "127.0.0.1" > Data\enTW\realmlist.wtf
echo SET realmlist "127.0.0.1" > Data\zhCN\realmlist.wtf
echo SET realmlist "127.0.0.1" > Data\enCN\realmlist.wtf
echo SET realmlist "127.0.0.1" > Data\enUS\realmlist.wtf
echo SET realmlist "127.0.0.1" > realmlist.wtf
start wow.exe
goto end

注意:如果你配置了公网IP地址,这里的127.0.0.1需要修改为你的公网IP地址才可以。

保存该文件,将扩展名改为bat并运行。

恭喜你,经过漫长的工作,你终于可以进入游戏了!这时你可以用刚才创建的GM账号进行游戏!你将在独属于你自己的世界中尽情遨游!

其他注意事项

  1. 如果你想在其他PC上运行TrinityCore,你可能会需要安装Microsoft Visual C++ 2015 Redistributable Package
  2. Windows XPWindows 2003 不被支持,请不要做无谓的尝试了。

附录

  • GM命令大全 https://trinitycore.atlassian.net/wiki/display/tc/GM+Commands
  • 日志配置 https://trinitycore.atlassian.net/wiki/display/tc/Logging+Configuration
原创文章,版权归作者刘小平所有,在保留作者姓名与原文地址的情况下允许转载。