2010年2月9日 00:40 米奈希尔港

0x00 写在开始

精神退休的时候就想回到故乡——艾尔文森林,溜达溜达钓钓鱼,坐在狮王之傲旅店里喝一杯。学生时代有大把的时间可以挥霍,买月卡玩玩还是挺合适的。现在人到中年了不太有时间玩游戏了,月卡这种放着不玩也消耗就显得很浪费,所以就暂时不支持了。

这篇教程会比较长,并且会涉及一些专业知识,需要有一定的技术基础

如果你自己实在搞不定,文章最后也会提供编译好的服务端网盘链接

0x01 事先准备

以下是在写这篇教程时使用的工具和版本,编译能够正常通过,编译出的文件可以正常工作。

工具 版本 下载 必要 备注
Windows 11 专业版 24H2 - Windows 10 19H1 64bit及以上版本都可以,必须是64位操作系统
Boost 1.78 下载
Git - 下载 用于从git仓库获取最新的TirinityCore代码
OpenSSL 3.5.2 下载 不能是Light版本
MySQL 8.0.43 下载 5.7版本也可以
CMake 4.1.0 下载
VisualStudio 2022 17.14.13 下载 安装时必须勾选“使用C++的桌面开发”
Navicat - 下载 用于管理数据库
数据库初始化SQL TDB 1120.25081 下载 用于服务端初始化数据库
Arctium - 下载 用于启动游戏连接本地服务

*如果你所处的网络环境直接下载这些文件有困难,文末的网盘链接中也会提供部分工具的下载

0x02 准备编译环境

获取TC源代码

(推荐)使用Git将代码克隆到本地,并切换至11.2.0.62748版本的最后一个提交

1
2
git clone https://github.com/TrinityCore/TrinityCore.git
git checkout 417716d

(不推荐)或者直接从 https://github.com/TrinityCore/TrinityCore
下载最新的源代码。但这样可能会有服务端版本和游戏客户端版本对不上的问题。

Boost、OpenSSL、Cmake

安装\解压在任意位置都可以,方便找到即可。

MySQL

一路“Next”或者“Execute”

在这一步时,给root账户设置一个自己能记住的密码,方便以后连接进去调数据。然后添加一个名称和密码都是trinity的账户,其余选项保持默认。
设置MySQL账户

VisualStudio 2022

一定要勾选“使用C++的桌面开发”

VS安装

0x03 开始编译

CMake

在CMake\bin中找到“cmake-gui.exe”双击执行。

点击“Browse Source...”,并选择TC源代码所在的文件夹。

点击“Browse Build...”,并选择一个你想将结果输出到哪里。

然后点击“Configure”

CMake

在弹出的窗口里选则“Visual Studio 17 2022”,然后点击“Finish”。

等一会儿后,大概率会报错“Could not find a package configuration file provided by "Boost"”

找不到Boost

点击“Boost_DIR-NOTFOUND”,然后点击右侧的文件夹选择按钮,定位到之前安装的Boost1.78\lib64-msvc-14.3\cmake\Boost-1.78.0

(这个路径下应该只有两个文件BoostConfig.cmake和BoostConfigVersion.cmake)

然后再次点击“Configure”,正常的话应该会输出“Configuring done”。此时点击“Generate”生成VisualStudio项目,正常的话应该会输出“Generating done”。

VisualStudio

在上一步CMkae输出目录里找到TrinityCore.sln,双击启动。

将编译配置从Debug调整至Release,保持x64。

一般来说直接对ALL_BUILD右键,生成即可。但我自己测试过程中这样做的话会很容易失败。更稳妥的方式是先对scripts执行“生成”,再对ALL_BUILD执行“生成”。

这个过程会花一些时间,取决于你主机的性能。

编译出错的应对方法

无法打开输入文件

对出错的项目进行单独生成。比如下边这样,就对script进行单独生成,然后再对ALL_BUILD进行生成。

0x04 部署服务

提取地图文件

这个步骤是必须不能跳过的,缺少map的话,服务端完全无法启动;缺少vmap和mmap的话,世界、副本中的小怪、Boss无法正确寻路,会直接穿墙飘出来揍你,或者直接掉到地图下边让你打不到。

提取地图需要你有一个官方的、未经修改过的客户端,私服的客户端大概率无法提取。并且需要在游戏根目录存在“.build.info”文件。

编译输出的文件里有这样4个exe

  • mapextractor.exe
  • mmaps_generator.exe
  • vmap4assembler.exe
  • vmap4extractor.exe

在TC源代码目录\contrib中有1个bat

  • extractor.bat

将上述这5个文件复制到游戏根目录(World of Warcraft Launcher.exe所在的文件夹),双击运行bat文件,按4回车,开始提取。

extractor.bat

这个过程会非常费时间,大概需要5-6个小时,取决于你机器的性能。如果你懒得提取,可以从文章最后的网盘里下载我提取好的。

提取结果如下,总计约21GB。

提取地图结果

补充缺失的文件

从C:\Program Files\MySQL\MySQL Server 8.0\lib 复制一个libmysql.dll至服务端目录。

将数据库初始化SQL解压至服务端目录。

将提取好的地图数据放至服务端目录。

将worldserver.conf.dist文件重命名为worldserver.conf

将bnetserver.conf.dist文件重命名为bnetserver.conf

启动服务前需要这些,共22个文件(夹)

启动服务

第一次启动

第一次启动服务时,由于MySQL里还没有需要的库,需要先运行worldserver.exe,按提示对数据库进行初始化。初始化完成后,可以启动bnetserver.exe。

第一次启动时数据库里还没有账号,在出现TC>之后,使用命令(注意是bnetaccount 不是account)

1
bnetaccount create 1@1 123

就可以创建一个账号为1@1 密码为123的账号。

使用命令

1
account set gmlevel 1#1 3

可以将你的账号升级为权限最大的GM

一般启动

启动bnetserver.exe和worldserver.exe,等待worldserver控制台窗口显示“TC>”时,表示worldserver服务已经完全启动。

0x05 开始游戏

启动游戏需要使用额外的启动器(比如Arctium)来让客户端连接自己部署的服务器。将启动器放置到游戏根目录。

修改配置文件

启动前,需要对_retail_\WTF\Config.wtf 文件进行修改。使用任意文本编辑器打开Config.wtf,找到SET portal这行,把这行改成SET portal "127.0.0.1"。

Config.wtf

Enjoy

使用启动器启动游戏,使用之前创建的账号1@1和123登录游戏。

Enjoy

0x06 网盘资源

网盘里包含 0x01事先准备 章节中的工具下载
及 提取好的地图文件
及 编译好的服务端文件
支付成功后,链接及提取码会显示在支付成功页面上
感谢您的支持!

如果手速太快关闭了支付成功页面没看到链接,请联系邮箱b1g2ebra@outlook.com

0x07 问题解决

服务器显示Incompatible

服务版本不兼容

临时解决:在MySQL中,找到auth库,realmlist表,将其中的gamebuild列改为你游戏版本的末尾数字。然后重启bnetserver.exe。

但这不是一个好方法,说明游戏或者服务器配置自动更新了,这样登录游戏可能会出现不兼容问题。

最好是重新编译新版本的服务器。