Debian 9下安装测试基于TrinityCore的魔兽世界服务端

TrinityCore是一个开源项目,维护于GitHub。TrinityCore基于MaNGOS开源项目并做了大量改动与优化,目前已经独立出来并拥有大量维护者,拥有成熟的社区环境。 TrinityCore是一个魔兽世界服务端模拟器,目前经过多年的维护于优化,已经基本模拟了所有魔兽世界服务端的功能与特性,而且没有严重影响游戏运行的BUG。 TrinityCore开源项目目前在GitHub上面维护了两个最重要的分支,一个是6.x版本(最新版),一个是3.3.5版本(巫妖王之怒)。

Debian 9下安装测试基于TrinityCore的魔兽世界服务端

TrinityCore整体架构共分为三层:

1.Client客户端   2.Server服务端   3.DataBase数据库

图中灰色框体内是TrinityCore开源项目部分,其他颜色框体是开服必须但是非TrinityCore部分。

下面我们来分别说明:

客户端

1.WOW Client :游戏客户端,版本限制为3.3.5a(国服13930,台服12340)。2.Launcher:登录器,使用C#编写的windows程序,提供登录功能。基于Jeakz's Launcher改造。

服务器

1.WEB Server:网站系统,基于通用CMS改造,提供账号注册、修改密码、服务器状态查询等功能。2.World Server:游戏世界服务器,基于TrinityCore改造。支撑游戏运行的最重要的服务器。3.Auth Server:鉴权服务器,基于TrinityCore,无改动。提供登录与服务器列表功能。

数据库

1.Web数据库:对应WEB Server服务器的数据库。2.Characters数据库:角色数据库,存储所有角色人物相关的信息。TrinityCore提供建表SQL。3.World数据库:世界数据库,存储整个魔兽世界的一切信息,包括NPC,怪物,装备,道具,任务,副本等等所有一切。TrinityCore提供建表SQL。 4.Auth数据库:权限数据库,存储服务器列表,玩家账户等信息。TrinityCore提供建表SQL。

开始编译

测试配置要求:

CPU:INTEL,AMD系列至少四核或以上
内存: 最少4G起
硬盘: 至少60G剩余空间,推荐SSD硬盘

安装编译环境

$ sudo apt-get install build-essential git clang cmake make gcc g++ libmariadbclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mariadb-server p7zip
$ sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
$ sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100

安装测试版本3.3.5a(12340)

$ cd ~
$ git clone -b 3.3.5 git://github.com/TrinityCore/TrinityCore.git
$ cd TrinityCore
$ git pull origin 3.3.5

创建服务器路径,$USER是你当前用户名

$ mkdir -p /home/$USER/server

创建编译目录

$ cd ~/TrinityCore
$ mkdir build
$ cd build

开始编译,根据电脑配置,决定完成时间

$ cmake ../ -DCMAKE_INSTALL_PREFIX=/home/$USER/server
$ make -j4    ##这里的 j4 是指你当前CPU的物理核数,如果是6核CPU就改 j6 ,可以使用 echo $(nproc)来查看CPU核数。
$ make install

下载wlk 3.3.5a (12340)客户端

先保证硬盘剩余空间超过40G以上,然后访问https://www.xspio.com/去下载客户端,或者从http://wlkwow.com/viewtopic.php?f=2&t=9获取。
电信宽带线路下载:
wget http://222.186.15.202:12345/wowclient/wlkwowc.rar
这将是一个漫长的过程,除非你家宽带够快。
下载完后解压到当前目录。

提取客户端数据

$ cd "wow客户端目录"   ##wow客户端目录就是你能看到wow.exe运行程序的目录
$ /home/$USER/server/bin/mapextractor
$ /home/$USER/server/bin/vmap4extractor
$ mkdir vmaps
$ /home/$USER/server/bin/vmap4assembler Buildings vmaps
$ /home/$USER/server/bin/mmaps_generator
$ mkdir -p /home/$USER/server/data
$ cp -r dbc maps vmaps mmaps /home/$USER/server/data

修改配置文件

$ cd /home/$USER/server/etc
$ cp authserver.conf.dist authserver.conf
$ cp worldserver.conf.dist worldserver.conf

worldserver.conf为游戏配置,authserver.conf为用户权限配置,worldserver.conf可以控制角色初始等级,金币,跨阵营组队等N多功能。

LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"  ## worldserver.conf / authserver.conf    
WorldDatabaseInfo = "127.0.0.1;3306;trinity;trinity;world" ## worldserver.conf    
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters" ## worldserver.conf
DataDir = "/home/$USER/server/data" ## worldserver.conf

安装数据库

1,数据库初始化

$ sudo mysql_secure_installation ## 设置一下root密码,然后一路按 y 回车

2,安装wow数据库,查看https://github.com/TrinityCore/TrinityCore/blob/3.3.5/sql/create/create_mysql.sql

GRANT USAGE ON * . * TO 'trinity'@'localhost' IDENTIFIED BY 'trinity' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;

CREATE DATABASE `world` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

GRANT ALL PRIVILEGES ON `world` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON `characters` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON `auth` . * TO 'trinity'@'localhost' WITH GRANT OPTION;

把里面的内容复制下来

$ nano wowmysql.sql   ##右键粘贴上面复制的内容
$ sudo mysql -uroot -p
mysql> sources /home/$USER/wowmysql.sql
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root的密码' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> \q

3,修改数据库配置,供局域网或者外网连接
打开文件/etc/mysql/mariadb.conf.d/50-server.cnf,注释掉bind-address项。
重启mariadb,sudo systemctl restart mariadb

下载数据文件

访问https://github.com/TrinityCore/TrinityCore/releases,下载TDB 335.64下的文件,

$ cd ~
$ wget -c -t5 https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.64/TDB_full_world_335.64_2018_02_19.7z
$ 7zr x TDB_full_world_335.64_2018_02_19.7z
$ mv TDB_full_world_335.64_2018_02_19.sql /home/$USER/server/

运行服务器

$ /home/$USER/server/bin/authserver &
$ /home/$USER/server/bin/worldserver
TC> account create 游戏账号 密码
TC> account set gmlevel 游戏账号 3 1  ## 升级为GM 3级
怎么退出我也不知道,我是ctrl + c,然后回车,等一下。

修改数据库IP,新服名字,版本号。

去网上寻找mysql客户端工具,如Navicat for MySQL。

$ sudo mysql -uroot -p
mysql> show databases;
mysql> use auth;
mysql> select * from realmlist;
+----+---------+---------------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+
| id | name    | address       | localAddress | localSubnetMask | port | icon | flag | timezone | allowedSecurityLevel | population | gamebuild |
+----+---------+---------------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+
|  1 | testwow | 192.168.1.200 | 127.0.0.1    | 255.255.255.0   | 8085 |    0 |    0 |        1 |                    0 |          0 |     12340 |
+----+---------+---------------+--------------+-----------------+------+------+------+----------+----------------------+------------+-----------+
1 row in set (0.00 sec)

其中,name是服务器称,开新服就可以在表2添加 ,address就是你连接网络的IP,gamebuild就是游戏版本号,请与客户端版本号相同,不然你的服务器会显示离线。

启动服务器

$ /home/$USER/server/bin/authserver &
$ /home/$USER/server/bin/worldserver

上面这样启动有个弊端,会一直卡在TC状态,你可以安装pm2做进程守护,保护长久运行。

客户端登陆

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

把上面的内容生成一个bat批处理文件,IP地址根据你服务器的改,放到你的游戏客户端目录,点击就可以了。
关于GM命令,网上大把,自助注册等功能,不再研究,本来就是自己测试着玩,过过80级时拿极品装备,极品坐骑的瘾。