Contents
环境的选择
具体用什么环境部署,就看大家自己选择了,可以用win,也可以用linux。由于我家的服务器是装的PVE虚拟机7.4(基于debian 11),所以我就用最新的debian 12来进行搭建。
由于目前TC 3.3.5版本最新的是24011,所以我就采用这个版本:
https://github.com/TrinityCore/TrinityCore/releases/tag/TDB335.24011
准备工作:在正式安装之前,确保你已经做好了系统初始化工作,包括debian 12系统的安装(虚拟机,物理机,LXC都行,我现在用的是LXC),root用户权限的的相关配置(看个人习惯,包括允许root用户名登录,安装并允许ssh密码登录等,当然用密钥登录更安全),ip地址配置等,apt国内源的替换等。
开始搭建
假设已经完成以上步骤,那么正式进入搭建步骤:
安装编译工具和关联库及mysql数据库
#例行公事,更新数据源
apt-get update
#安装后面编译需要用到的工具
apt-get install git clang cmake make gcc g++
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100
#boost依赖,如下
apt-get install -y libboost-dev \
libboost-system-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-iostreams-dev
# zlib在 zlib1g-dev
apt-get install zlib1g-dev
# openssl
apt-get install libssl-dev
# readline
apt-get install libreadline-dev
apt install libbz2-dev
apt install mysql-common libmariadb-dev-compat libmariadb-dev
apt install mariadb-client mariadb-server
注1:不同版本的debian系统或者ubuntu,以上命令为未必都一样,我当时安装的系统是debian12刚出来的版本,如果后面是不同的版本默认的库会有差异,所以可能需要大家根据自己的实际环境进行微调。
注2:还有一个问题是部署TC的这台设备是否一直开机,因为后期涉及另一个问题是账号注册网站需要写数据库的问题,如果安装数据库这台要关机,那关机时候注册网站就没法使用。。这个也是我遇到的问题,搞得我先是把数据库迁移到一台虚拟机上,后来又迁移到另一台专门跑容器的设备上,数据导来导去,折腾死我了,如果大家后续有建立账号注册网站的需求,一开始的时候就要规划好专门找一台24小时开机的设备来做数据库,当然如果是云服务器就没这个问题,像我用自家的服务器就有点折腾,因为噪音大,还有费电等问题,必须定时开关机。
创建wow用户
使用root账号操作
adduser wow
约定目录
# 以wow权限执行
su wow
cd
为了便于后续操作,优先创建以下3个目录
# TrinityCore源码目录
mkdir /home/wow/TrinityCore
# 服务器程序目录,最终完成后会包含etc,bin,data三个子目录
mkdir /home/wow/server3.3.5
# 客户端目录。后面用于存放客户端版本,提取客户端数据
mkdir /home/wow/client12340
注:因为最开始我是参考了CSDN博主”开始沸腾了”的文章( https://blog.csdn.net/fanrongwoaini/article/details/113864338 ,感谢他的好文章),最后写完文章的时候才发现他就写错了。。但是图已经截完了,没法改了(只有中间几幅图我重新截了下,但是大部分都是用的上个版本截的老图)~我是一个很注重命名规范的人,在项目中都是严格要求其他人的,这个问题让我很别扭(虽然其实没影响,但是强迫症实在难受)。。真是:一失足成千古恨啊,总之大家不要在意截图上这个错误就是了。。。,命令我都改为3.3.5了。
S端源码下载:
如果github无法访问,也可以访问以下链接下载:无敌的文件共享,访问密码为:”blog.tangwudi.com“,下载其中的”TDB335.24011.zip”文件,然后上传到/home/wow/TrinityCore
目录下即可,如果可以访问github,也可以按照下方命令下载:
cd /home/wow/TrinityCore
wget https://github.com/TrinityCore/TrinityCore/archive/refs/tags/TDB335.24011.zip
#解压
unzip TDB335.24011.zip
注:这是我安装时候的最新版,各位后续自己搭建的时候,请先查看当时的最新版,并将文中命令中的相关版本号(文中是24011)改成最新版即可,当然,新版本运行cmake的时候可能会有不同的报错,上个版本23061的时候只有第一个报错,这次20411就多了后面一个报错,这个就需要自行解决了,我只能尽量每个版本都重新制作傻瓜书。
C端下载
客户端版本:3.3.5(13930 或者12340) ,我用的12340.
以下提供我的客户端百度网盘下载链接:
https://pan.baidu.com/s/1O0cAfuWe6B4S1faNhK04UA?pwd=6ah9
cmake
su wow
cd /home/wow/TrinityCore/TrinityCore-TDB335.24011
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server3.3.5 #构建项目
遇到这个报错,需要编辑genrev.cmake文件:
vim /home/wow/TrinityCore/TrinityCore-TDB335.24011/cmake/genrev.cmake
在116行红框部分加上””:
如下:
然后保存退出。
然后又有如下报错:
这是因为缺少”boost_locale”这个包,所以我们需要安装这个包,先查看哪些包含boost-locale的包:
apt search boost-locale
显示如下结果:
然后我们进行安装缺失的包:
sudo apt-get install libboost-dev
sudo apt install libboost-locale1.74-dev #这里可能大家要根据自己当时的版本做微调
重新运行cmake
cd /home/wow/TrinityCore/TrinityCore-TDB335.24011/build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server3.3.5
成功:
编译
make -j $(nproc) install
编译成功后:
ls /home/wow/server3.3.5
这2个目录,bin下是可自行文件,etc下是配置文件。
bin下的authserver是认证程序,worldserver是魔兽主程序,其他4个是地图提取程序,后面要用到。
etc下是2个配置文件模板,分别是上面提到的2个程序需要读取的,后面要用到。
地图数据载入
创建数据目录
用来存放地图数据
mkdir /home/wow/server3.3.5/data
修改配置文件
把worldserver.conf.dist和authserver.conf.dist各自复制一份,然后去掉后缀**.dist**
cp /home/wow/server3.3.5/etc/worldserver.conf.dist /home/wow/server3.3.5/etc/worldserver.conf
cp /home/wow/server3.3.5/etc/authserver.conf.dist /home/wow/server3.3.5/etc/authserver.conf
注:关于TC的worldserver.conf里有很多游戏的选项,这个我有空的时候专门用一篇文章来介绍吧,在这之前大家可以先在网上搜索下,一大堆文章专门介绍的。
从客户端导出地图数据
将下载好的客户端,复制一份到上面约定的客户端目录/home/wow/client12340中,进入目录
cd /home/wow/client12340/wow-3.5.5
注意,如果是zip压缩包解压缩的话,需要再进入解压缩的实际目录下,比如我是进入
cd /home/wow/client12340/wow-3.5.5
运行下面命令,提取客户端数据。这个过程有点慢,请耐心等待。
- DBC and Maps files
/home/wow/server3.3.5/bin/mapextractor
cp -r dbc maps /home/wow/server3.3.5/data
- Visual Maps (aka vmaps)
/home/wow/server3.3.5/bin/vmap4extractor
mkdir vmaps
/home/wow/server3.3.5/bin/vmap4assembler Buildings vmaps
cp -r vmaps /home/wow/server3.3.5/data
- Movement Maps (aka mmaps)
mkdir mmaps
/home/wow/server3.3.5/bin/mmaps_generator
cp -r mmaps /home/wow/server3.3.5/data
cd /home/wow/server3.3.5/data
ls
数据库配置
cd /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/create/
这个红框中的文件是我们将要用到的。
然后使用mysql命令连接到mariadb数据库进行初始化:
mysql -u root -p -h 127.0.0.1 #如果非默认的3306,就用-P参数后加端口
注:如果mariadb数据库和Trinitycore都是在一台机器上,就用127.0.0.1连,但是如果数据库是分离的,像我,就是单独用一台macmini来跑的数据库,比如下图中的192.168.10.130,所以大家可以根据自己的规划来部署数据库:
show databases;
可以查看当前默认的database
默认有4个databases。
然后执行前面提到的create_mysql.sql文件,进行wow需要的数据库的初始化:
source /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/create/create_mysql.sql
show databases;
可以看到多了auth,characters,world 3个database,其中,auth存放用户名密码,characters存放游戏角色的相关信息,world存放所有其他游戏需要的信息,像npc,副本,boss等。
然后是分别给这auth和characters这2个database进行初始化,创建需要的表:
use auth;
source /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/base/auth_database.sql
use characters;
source /home/wow/TrinityCore/TrinityCore-TDB335.24011/sql/base/characters_database.sql
world的表生成在后面。
配置连接
在auth这个database里有很多表,其中有一个非常重要,就是realmlist,这里面有worldserver这个主程序监听的端口,地址,还有游戏版本id等,这里就需要看大家只是想自己在家玩玩,还是放网络上(私有网络或者公网)大家一起玩,不同需求设置不一样。
以下命令是查看auth数据库中realmlist这个表中的id、name、port、address等项的具体内容,这个也涉及到后面玩的方式。
use auth;
select id,name,port,address,localaddress,gamebuild from realmlist;
端口决定了worldserver主程序监听的端口,这个不用改,用默认就好了,重要的是address,一般来说,如果数据库和主程序都安装在同一台服务器上,那这个address就设置成这台服务器的接口地址即可(局域网玩),但是如果是发布在互联网上,那这里的地址设置就很重要了。如果是购买的云服务器并且有固定的公网地址,那这里可以直接设置成公网地址,当然也可以用公网ip对应的域名。如果是架设在内网,公网地址在出口设备上,并做的映射,则这里要设置成出口设备上的公网地址,或者对应的域名。
修改的方式很多,例如phpadmin,或者其他的数据库客户端都可以。因为我是放在公网上,所以这里要改成我的域名。gmaebuild就是客户端版本,只有这个版本的客户端才能正常访问。
use auth;UPDATE realmlist SET address = '【your_ip】' WHERE id = 1
修改之后如下:
编辑配置文件
配置authserver对应的配置文件,指明数据库的地址和端口以及账户:
vim /home/wow/server3.3.5/etc/authserver.conf
端口,地址这些尽量都采用默认值,关键以下
LoginDatabaseInfo = “127.0.0.1;3306;trinity;trinity;auth”
如果是本机玩,比如win上跑服务器,然后同一台机器开客户端玩,这里可以不改,但是如果数据库和服务端程序不在同一台主机,这里就需要修改,比如我就改成了局域网里数据库的IP地址192.168.10.130,端口3306:
同时大家要注意,trinity是前面使用create_mysql.sql时候创建的账户,这个账户默认只有访问localhost主机的权限,所以如果单机玩没问题,但是如果数据库和服务器主程序不在同一台服务器上,则需要修改trinity用户的远程访问权限,trinity@localhost,改成trinity@%,或者新建trinity@%并授权auth,characters,world 3个database的所有权限。具体涉及到数据库的操作,我就不细说了,那个篇幅就太大了,请大家自行研究。
vim /home/wow/server3.3.5/etc/worldserver.conf
DataDir = “.”
这里””里的.改成数据路径说在的文件夹:
DataDir = "/home/wow/server3.3.5/data
LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
WorldDatabaseInfo = "127.0.0.1;3306;trinity;trinity;world"
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"
这3个按照前面authserver.conf的处理一样,根据自己的需要修改ip地址:
启动服务端
先运行 authserver
/home/wow/server3.3.5/bin/authserver
注:下面这个报错很坑,前几个版本如果使用mariadb,就会报这个错,到国外论坛上搜了一大圈,当时看到大神的回复是建议就使用mysql,因为TC和mariadb搭配就容易报这个错,而最关键当时apt安装mysql的时候,刚好默认的db从mysql被替换成了mariadb。。这个浪费我很多时间,又重新安装mysql,又重新编译,坑死人了。。不过好在从我现在安装这个23061的版本起,支持最新的mariadb了,所以大家就不用折腾了。
再运行 worldserver
/home/wow/server3.3.5/bin/worldserver
大家记得前面我们只初始了auth和characters这2个database吗?world并没有初始化,为空,所以这里才有这个报错
那么,根据后面提示的地址下载:
cd /home/wow/server3.3.5/bin/
wget https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.24011/TDB_full_world_335.24011_2024_01_21.7z
注:如果github无法访问,也可以访问以下链接下载:无敌的文件共享,访问密码为:”blog.tangwudi.com“,下载其中的”TDB_full_world_335.24011_2024_01_21.7z”文件,然后上传到/home/wow/server3.3.5/bin/
目录下即可。
安装7zip:
apt-get install p7zip-full
解压缩:
7z x TDB_full_world_335.24011_2024_01_21.7z
再次运行worldserver:
./worldserver
这个时候就是在生成world的database,坐等即可:
成功。
登入世界
添加账号
这里我创建了一个用户名为wow1,密码也为wow1的账号,并升级为GM等级。
创建账号
创建一个wow的账号先,worldserver命令行输入,如下:
TC> account create wow1 wow1
TC> Account created: wow1
升级为GM
可以提升wow1的gmlevel为3,升级为GM账号,worldserver命令行输入,如下:
紧接着我们把wow1账户升级为gm
TC> account set gmlevel wow1 3 -1
TC> Security level of account WOW1 changed to 3.
客户端配置
打开客户端目录,找到wow.exe,同级目录下创建init_connect.bat
,内容如下。
#在本地跑ip用127.0.0.1,这个ip对应上面realmlist中的address,我这里因为是放在互联网上,所以用的域名,如下:
echo y | rd /s "Cache"
echo SET realmlist "wlk.example.com" > Data\zhTW\realmlist.wtf
echo SET realmlist "wlk.example.com" > Data\enTW\realmlist.wtf
echo SET realmlist "wlk.example.com" > Data\zhCN\realmlist.wtf
echo SET realmlist "wlk.example.com" > Data\enCN\realmlist.wtf
echo SET realmlist "wlk.example.com" > Data\enUS\realmlist.wtf
echo SET realmlist "wlk.example.com" > realmlist.wtf
start Wow.exe
然后,运行脚本。此时,初始化客户端连接配置成功并可以登录游戏了,以后直接运行wow.exe即可登录游戏。
如果想authserver和worldserver开机启动,可以参考我的另一篇文章:debian系列 设置命令或脚本开机启动的3种常见方式。
关于如何搭建一个高大上的注册网站来配合用户注册,参看我另一篇文章:Trinitycore系列 部署魔兽世界Trinitycore 3.3.5注册网站
这里也告诉大家一个秘密哟,其实百度网盘下载的客户端直接运行wow.exe就可以直接连上我的公益服了,大家要是懒,直接玩也是可以的。:),不过需要先在我的注册网站上注册账号,网址链接如下:无敌的艾泽拉斯。
后话
其实如果只是架设起来能玩,很简单,把数据库和服务器端软件都装在一台主机上(例如云主机),但是我是因为后来要求越来越多,并且很多应用的数据库都用的同一台mariadb,所以后面就单独新建了一个独立的数据库,又把原来数据导了过去,反正就是各种折腾。所以建议大家在一开始就想好,如果这个数据库本来就只给wow用,那装在一台设备上也无妨,如果有后续其他打算,建议一开始就分离开来,免得后面又来折腾。并且,如果还有更多想法,比如加npcbots(参见我另一篇文章:Trinitycore系列 3.3.5(24011)版本添加npcbots机器人),建议大家还是学习一些数据库的常规操作,毕竟后面涉及到的数据库操作不少。
另:其实我本来不太想写这篇文章的,毕竟博主”开始沸腾了”的文章写得很好,但是trinitycore升级了2次小版本了,特别是他那个时候trinitycore的版本22061默认的数据库是mysql,但是在下一个版本23061的时候就变成mariadb了,改变非常大,而且安装细节也变了很多,我不得不重新记录,所以才写了这篇文章,一般对于优秀的文章我是不会费精力来重写的。
楼主问一下如果只是容纳100人的小团体 那服务器配置多少就可以了了
几百人还需要考虑下,100个人又不多,我觉得随便一个现在的主流电脑都可以吧,win的话内存16g肯定稳了;linux主机,8g内存估计够了,4G内存不知道行不行。