基于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等级设置完成。

Ubuntu下搭建git服务器

自己做一个git服务端
1、安装相关软件: ssh以及python等

sudo apt-get install openssh-server openssh-client git-core python-setuptools

2、获取并安装gitosis

cd /tmp
git clone https://github.com/res0nat0r/gitosis.git
cd gitosis
sudo python setup.py install

3、创建个人公钥和私钥,默认情况下,公钥和私钥会保存在~/.ssh目录下。产生文件 id_rsa id_rsa.pub known_hosts

ssh-keygen -t rsa

4、初始化全局设置,设置每次git提交时作者的名字和邮箱

git config --global user.name "HappyPeng" 
git config --global user.email "wangpeng2015@gmail.com"

5、git服务器管理用户,在服务器上添加用户git,用来创建git仓库

sudo useradd -m git
sudo passwd git

6、创建git仓库存储目录

sudo mkdir /home/git/repositories

7、设置git仓库权限

sudo chown git:git /home/git/repositories 
sudo chmod 755 /home/git/repositories

8、配置gitosis

scp ~/.ssh/id_rsa.pub /tmp
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

9、在服务器上新建一个测试项目仓库。切换到git用户

su - git
cd /home/git/repositories 
mkdir gamedev.git
cd  gamedev.git
git init --bare
exit

10、添加公钥,各个用户按照前面提到的办法生成各自的ssh公钥文件后,服务器管理员把所有人的ssh公钥文件都拿来,拷贝到keydir目录下(用户的区分以.pub文件命名为用户如:root@ubuntu.pub,user1.pub)。

cd ~
clone git@:gitosis-admin.git
cd ~/gitosis-admin/

修改gitosis.conf文件

[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = root@ubuntu

[group developers]
writable = gamedev
members = root@ubuntu user1

[group test] 
readonly = gamedev
members = user2

这个配置文件表达了如下含义:gitosis-admin组成员有 root@ubuntu ,该组对gitosis-admin仓库有读写权限; developers组有 root@ubuntu ,user1两个成员,该组对gamedev仓库有读写权限; test组有user2一个成员,对gamedev仓库有只读权限。当然目前这些配置文件的修改只是在你的本地,你必须推送到gitserver上才能真正生效。加入新文件、提交并push到git服务器:

git add .
git commit -a -m "add users to projects"
git push origin master

现在服务器就搭建完了,并且有一个空的项目gamedev在服务器上。在 gitosis.conf文件中developers中所有用户都可以对gamedev.git进行读写。
11、创建测试
下面以user1为例,进行创建。
user1:

mkdir gamedev-origin
cd gamedev-origin/
git init
echo "" > hello
git add .
git commit -a -m “initial version”
git remote add origin git@<</span>hostname>:gamedev.git 
git push origin master

12、读写测试
以root@ubuntu为列,进行clone
root@ubuntu:

cd ~
mkdir proj
cd proj/
git clone git@happypeng.com:gitosis-admin.git