前言

前几天突然想玩WOW了,但是我是一个特别轻度的玩家,以前点卡的时候,我就是上去一个人做做任务,跑跑地图,不怎么玩副本和PVP,现在让我花钱充月卡,不太现实,没那个时间玩,所以,就考虑玩个私服,但是网上大部分的私服都是基于3.3.5编译的,毕竟搞这个的都是魔兽的老玩家,和我的需求不一样,我就想玩新,所以,只能自己编译,但是参考大神们写的教程和官网上的教程还是遇到了一些坑,所以,在此记录一下,方便大家编译master的时候,更容易通过。

参考

参考的内容一个是:TrinityCore魔兽世界服务器搭建(Debian10),另一个就是官网了,但是后期填坑的时候,更多的是在wiki上查询,因为有些朋友,也遇到了相关的问题。

步骤

  1. 安装Debian虚拟机(内存6G及以上,存储140G及以上),这个需要注意的是,由于我们需要编译的是Master,而且最新版的WOW客户端有70多个G,所以,需要准备一个大空间,由于最开始不知道,所以,此处踩坑了。
  2. 在Debian下执行以下命令(我全部都是使用root用户操作),参考地址
apt-get update
apt-get install git clang cmake make gcc g++ libmariadb-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mariadb-server p7zip default-libmysqlclient-dev
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100
  1. 在home/user/下新建一个目录wow,用于整体管理
cd /home/user/
mkdir wow
  1. 进入到wow目录,然后下载TrinityCore的master,下载的快慢,取决于网速,这个时候等等就可以了
cd /home/user/wow
git clone https://github.com/TrinityCore/TrinityCore.git
  1. 安装数据库,参见MariaDB Linux安装指南,并且创建对应的表
mysql -u root
source /home/user/wow/TrinityCore/sql/create/create_mysql.sql
use auth;
source /home/user/wow/TrinityCore/sql/base/auth_database.sql
use characters;
source /home/user/wow/TrinityCore/sql/base/characters_database.sql
  1. 编译服务端代码
cd /home/user/wow
mkdir server
cd TrinityCore/
mkdir build
cd build/
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/user/wow/server
nohup make -j $(nproc) install & #这个需要后台运行,时间较长
  1. 下载WOW客户端,并且上传到服务器,下载地址就是WOW的官网,下载最新的版本就可以。然后从Windows上传到Debian,不要用MobaXterm,虽然这个工具也可以传输,但是因为文件特别大,会断掉,所以,不要用这个工具,我就被坑了。最后我用了xftp这个软件,大概是传输了半个多小时的样子。注:World_of_Warcraft文件夹直接上传到wow下面就可以。至此,wow下面一共有三个文件了

  2. 提取地图,这里的步骤是用的CSDN里面的,而没用官网提供的步骤,是因为官网提供的属于组合性操作,不能后台,或者我不会,毕竟我是Linux小白,因此,没用官网的。

cd /home/user/wow/server
mkdir data

至此,server下有三个文件夹,bin和etc都是生成的

cd /home/user/wow/World_of_Warcraft
nohup /home/user/wow/server/bin/mapextractor & #比较慢,后台运行
cp -r dbc maps /home/user/wow/server/data /home/user/wow/server/bin/vmap4extractor
mkdir vmaps
nohup /home/user/wow/server/bin/vmap4assembler Buildings vmaps & #比较慢,后台运行
cp -r vmaps /home/user/wow/server/data mkdir mmaps
nohup /home/user/wow/server/bin/mmaps_generator & #比较慢,后台运行,我的群晖大概跑了一天半的时间
cp -r mmaps /home/user/wow/server3.5.5/data

至此,地图都提取完了。

9. 修改配置文件,把server下etc里面的文件拷贝到本地,然后去掉dist,并且修改worldserver.conf中 DataDir = "." 为 DataDir = "../data",然后把这两个文件再回传到目录下,这样etc文件夹下有4个文件



10. 从官网下载TDB数据库的压缩包,解压后,将得到的TDB_full_hotfixes开头和TDB_full_world开头的两个sql文件上传到/home//wow/server/bin目录下

11. 修改数据库,更新一下auth.realmlist表中的address字段为虚拟机的IP,更新gamebuild字段为客户端的版本,为什么这么做呢。是因为如果不统一的话,在登录用户后,显示服务器列表的位置,会显示不兼容,无法继续。

TrinityCore的master的版本对应的是9.2.0.43114,WOW官网标注的客户端也是这个版本,但是,其实客户端版本较低。

TrinityCore版本:



WOW客户端官网标注版本:



WOW客户端实际版本:



12. 启动服务端

cd /home/user/wow/server/bin
nohup ./bnetserver &
./worldserver

等待完事以后,会出现TC>

TC>bnetaccount create test@test test   #创建了一个邮箱是test@test,密码是test的用户
TC>account set gmlevel 1#1 3 -1 #设置为GM,其中n#n是从auth.account表的username字段
  1. 客户端,从三方登录客户端平台下载客户端的登录文件,解压以后,放到本地World_of_Warcraft目录下



    修改_retail_文件夹下的WTF文件夹下的Config.wft文件,设置位置

    SET portal "auth.realmlist表中的address字段"
  2. 最后,双击Arctium WoW Launcher.exe启动,就可以了。

群晖下虚拟机编译部署WOW服务端TrinityCore的更多相关文章

  1. 群晖下 gitea+drone+harbor实现CI/CD 发布到云服务器

    常用命令 sudo -i然后输入密码登录root账户(群晖默认只能使用admin账号登陆) vim xxx编辑(编辑是进去之后按i,退出并保存是按esc,然后:wq!再回车) mkdir xx创建文件 ...

  2. IntelliJ IDEA openfire 使用IntelliJ IDEA 部署OPENFIRE 服务端

    用MyEclipse部署OF的步骤,网上有很多,可以自行google,这里要记录的是用据说最好用的JAVA编辑器IntelliJ IDEA来部署OF服务端.试了好多下,终于成功了,记录下. 直接上图吧 ...

  3. Rsync同步部署web服务端配置

    Rsync同步部署web服务端配置 1,参数详解: -v, --verbose 详细模式输出. -q, --quiet 精简输出模式. -c, --checksum 打开校验开关,强制对文件传输进行校 ...

  4. 如何将phantomjs单独部署在服务端

    如何将phantomjs单独部署在服务端 文章目录 一. 容我分析(lao dao)几句 二. 服务端 Look here 服务端phantomjs搭建 web端搭建及如何调用phantomjs 三. ...

  5. .net 部署到服务端IIS,Process调用exe程序无法运行问题解决

    场景: 开发某一功能将html内容转换为pdf,采用第三方插件wkhtmltopdf.exe进行转换.在本地调试正常运行,部署到服务端后文件没有正常生成. IIS中,Process打不开cmd程序,程 ...

  6. Linux 部署 iSCSI 服务端

    Linux 部署 iSCSI 服务端 服务端实验环境 iSCSI-server :RHEL8 IP:192.168.121.10 一.服务端安装 target 服务和 targetcli 命令行工具 ...

  7. 群晖-使用docker套件部署Prometheus+Grafana

    Docker 部署 Prometheus 说明: 先在群辉管理界面安装好docker套件,修改一下镜像源(更快一点) 所需容器如下 Prometheus Server(普罗米修斯监控主服务器 ) No ...

  8. Linux编译部署vsftp服务

    部署vsftp服务   Hostname OS IP Software Vsftpsvr RHEL-5.8 10.0.0.58 yum install -y vsftpd yum install –y ...

  9. Ubuntu 16.04 系统编译部署lamp服务。

    壹  下载Apache 和 PHP源码包: Apache:http://httpd.apache.org/download.cgi PHP:http://php.net/downloads.php 贰 ...

随机推荐

  1. sqlserver 中,如何将getdate()时间的时分秒固定为00:00:00或者忽略不要

    在使用getdate()时,时间会实时刷新,那么我们就要再查询的时候就需要精确到毫秒后三位,非常难受,那么为了解决这个问题我们可以通过以下几种方法进行固定或者去掉毫秒 1.将毫秒固定为00:00:00 ...

  2. 如何构建Docker镜像

    构建Docker 镜像有如下两种方法: (一)使用docker commit命令.(二)使用docker build命令和 Dockerfile 文件.在这里并不推荐使用docker commit来构 ...

  3. Pulsar 也会重复消费?

    背景 许久没有分享 Java 相关的问题排查了,最近帮同事一起排查了一个问题: 在使用 Pulsar 消费时,发生了同一条消息反复消费的情况. 排查 当他告诉我这个现象的时候我就持怀疑态度,根据之前使 ...

  4. sql语言:如何查询字符串某个字符的个数?

    sql语言:如何查询字符串某个字符的个数? 这语句太精彩了! select len('05011045')-len(replace('05011045','0',''))

  5. JS的Event各种属性级target/currentTarget/relatedTarget各种目录的解释

    1.Event属性解释:https://developer.mozilla.org/zh-CN/docs/Web/API/Event 2.Event.target/currentTarget/rela ...

  6. 请说一说Servlet的生命周期?

    servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达. Se ...

  7. SpringBoot starter 作用在什么地方?

    依赖管理是所有项目中至关重要的一部分.当一个项目变得相当复杂,管理依赖会成为一个噩梦,因为当中涉及太多 artifacts 了. 这时候 SpringBoot starter 就派上用处了.每一个 s ...

  8. C# 如何让new 出来的form显示在最外层?

    /// <summary> /// 显示比对不同点的位置 /// </summary> public void showDiffImage() { //在此处弹出不一样图 Bi ...

  9. 转载:TCP协议如何保证可靠传输

    转载至:https://www.cnblogs.com/xiaokang01/p/10033267.html TCP协议如何保证可靠传输 概述: TCP协议保证数据传输可靠性的方式主要有: (校 序  ...

  10. Zookeeper 的典型应用场景?

    Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员 可以使用它来进行分布式数据的发布和订阅. 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watch ...