基于TrinityCore在linux上搭建wow私服

前一段时间朋友们玩wlk,找了一些私服玩玩,发现升级太慢,而且装备金币也很难弄,于是研究自己搭建wow私服玩一玩。很容易就找到了TrinityCore,看了一些说明,发现基本所有wow的私服都是基于这个搭建的。

为了搭建方便我将阿里云上的服务器重新安装了一下系统,debian9,为什么选择这个系统?首先官网上说明TrinityCore可以安装在linux,macOS,windows上,阿里云上可以装linux和windows,处于性能的考虑当然要选择linux,而选择debian系统是因为TrinityCore官网上面已经说明了,“Debian based distributions (heavy recommended debian stable, it’s the distribution we use to set minimum requirements)”,其他系统我也尝试过,都是需要重新编译安装一些软件才能达到版本要求,编译软件是很耗时的,特别是gcc。

注意:服务器重装一定要注意数据的备份。我以为数据已经备份妥当,但实际上用来备份的vps也在前一段时间被我重装了,以至于我个人的代码仓库以及过去写的博客都很难恢复了,后面我会写一篇用来备份数据的博客。

确定了以上若干条件后,我们来开始安装TrinityCore。

1.安装debian9.2系统作为服务器。

2.安装依赖包,以TrinityCore官网为准

apt-get install git clang cmake make gcc g++ libmariadbclient-dev libssl1.0-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mysql-server p7zip
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100

3.下载Release包,下载网址

这里我们选择目前最新的巫妖王版本,TDB335.64,下载源码https://github.com/TrinityCore/TrinityCore/archive/TDB335.64.tar.gz
和数据库文件
https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.64/TDB_full_world_335.64_2018_02_19.7z

4.解压源码包,并创建编译目录

cd TrinityCore
mkdir build
cd build

5.创建服务存放目录,这里以/data/wow/server为例

sudo mkdir -p /data/wow/server
sudo chown -R 当前用户 /data

6.编译,这过程很漫长,我的服务器配置很低,编译了好久

cmake ../ -DCMAKE_INSTALL_PREFIX=/data/wow/server
make -j
make install

7.下载3.35wow客户端。

首先确保服务器硬盘容量够大,这个地方大概需要40G左右空间。容量不够大的话,可以考虑临时挂载一块硬盘,最终需要用的数据只有4G左右。客户端地址从http://wlkwow.com/viewtopic.php?f=2&t=9这里获取到的。(6,7两步骤可以同时开始,两个操作都比较耗时)
wget http://222.186.15.202:12345/wowclient/wlkwowc.rar
下载后解压一下。

8.步骤6,7都结束后,我们开始提取客户端中的数据。

cd “wow客户端目录”
/data/wow/server/bin/mapextractor
/data/wow/server/bin/vmap4extractor
mkdir vmaps
/data/wow/server/bin/vmap4assembler Buildings vmaps
/data/wow/server/bin/mmaps_generator
cp -r maps vmaps mmaps /data/wow/server/data

9.修改配置

cd /data/wow/server/etc
cp worldserver.conf.dist worldserver.conf
cp authserver.conf.dist authserver.conf
worldserver.conf为游戏配置,authserver.conf为用户鉴权配置,可根据自己需要修改。worldserver.conf可以控制角色初始等级,金币,跨阵营组队等N多功能。

10.创建数据库,账号。这里使用的mysql数据库

https://github.com/TrinityCore/TrinityCore/blob/3.3.5/sql/create/create_mysql.sql
将页面里的内容(可以直接使用下面copy好的)保存到文件/tmp/create_mysql.sql中,并使用mysql的root用户执行该文件。
root>source /tmp/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;

 11.建立游戏数据库

将我们第3步下载的数据库文件TDB_full_world_335.64_2018_02_19.7z复制到/data/wow/server/bin/并进行解压

12.启动服务器。

执行/data/wow/server/bin/authserver 和 /data/wow/server/bin/worldserver。

全部启动完成后,在/data/wow/server/bin/worldserver命令控制下创建账号:
account create userid password
设置为3级GM
account set gmlevel userid 3 1

13.修改游戏服务器IP

将auth库中的realmlist表中的address字段改为你服务器的IP地址(我这里使用的域名:happypeng.com):

14.制作客户端登录器

修改的登录IP,将如下内容保存到start.bat中,并将start.bat复制到wow客户端目录,启动start.bat,登录你的GM账号,搞定!

echo SET realmlist "你的服务器IP" > Data\zhTW\realmlist.wtf
echo SET realmlist "你的服务器IP" > Data\enTW\realmlist.wtf
echo SET realmlist "你的服务器IP" > Data\zhCN\realmlist.wtf
echo SET realmlist "你的服务器IP" > Data\enCN\realmlist.wtf
echo SET realmlist "你的服务器IP" > realmlist.wtf
start WoW.exe
goto end

15.gm命令

官网版:
我自己整理的:
还在整理中,有时间的话我会整理出来。

16.自助注册

如果你觉得给手动创建账号太low了,也可以自己写个服务器让朋友自己注册,要注意的是生成的加密密码是通过sha hash加密的,规则是将userId和password转化成大写字母,并且使用”:”连接。例如使用”USERID:PASSWORD”作为key生成的加密码后的密码,而不是单单的使用”password”。gm等级设置在account_access表中,可以在注册的时候一并将GM等级设置完成。