群晖下虚拟机编译部署WOW服务端TrinityCore
前言
前几天突然想玩WOW了,但是我是一个特别轻度的玩家,以前点卡的时候,我就是上去一个人做做任务,跑跑地图,不怎么玩副本和PVP,现在让我花钱充月卡,不太现实,没那个时间玩,所以,就考虑玩个私服,但是网上大部分的私服都是基于3.3.5编译的,毕竟搞这个的都是魔兽的老玩家,和我的需求不一样,我就想玩新,所以,只能自己编译,但是参考大神们写的教程和官网上的教程还是遇到了一些坑,所以,在此记录一下,方便大家编译master的时候,更容易通过。
参考
参考的内容一个是:TrinityCore魔兽世界服务器搭建(Debian10),另一个就是官网了,但是后期填坑的时候,更多的是在wiki上查询,因为有些朋友,也遇到了相关的问题。
步骤
- 安装Debian虚拟机(内存6G及以上,存储140G及以上),这个需要注意的是,由于我们需要编译的是Master,而且最新版的WOW客户端有70多个G,所以,需要准备一个大空间,由于最开始不知道,所以,此处踩坑了。
- 在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
- 在home/user/下新建一个目录wow,用于整体管理
cd /home/user/
mkdir wow
- 进入到wow目录,然后下载TrinityCore的master,下载的快慢,取决于网速,这个时候等等就可以了
cd /home/user/wow
git clone https://github.com/TrinityCore/TrinityCore.git
- 安装数据库,参见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
- 编译服务端代码
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 & #这个需要后台运行,时间较长
下载WOW客户端,并且上传到服务器,下载地址就是WOW的官网,下载最新的版本就可以。然后从Windows上传到Debian,不要用MobaXterm,虽然这个工具也可以传输,但是因为文件特别大,会断掉,所以,不要用这个工具,我就被坑了。最后我用了xftp这个软件,大概是传输了半个多小时的样子。注:World_of_Warcraft文件夹直接上传到wow下面就可以。至此,wow下面一共有三个文件了

提取地图,这里的步骤是用的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字段
- 客户端,从三方登录客户端平台下载客户端的登录文件,解压以后,放到本地World_of_Warcraft目录下

修改_retail_文件夹下的WTF文件夹下的Config.wft文件,设置位置
SET portal "auth.realmlist表中的address字段" - 最后,双击Arctium WoW Launcher.exe启动,就可以了。
群晖下虚拟机编译部署WOW服务端TrinityCore的更多相关文章
- 群晖下 gitea+drone+harbor实现CI/CD 发布到云服务器
常用命令 sudo -i然后输入密码登录root账户(群晖默认只能使用admin账号登陆) vim xxx编辑(编辑是进去之后按i,退出并保存是按esc,然后:wq!再回车) mkdir xx创建文件 ...
- IntelliJ IDEA openfire 使用IntelliJ IDEA 部署OPENFIRE 服务端
用MyEclipse部署OF的步骤,网上有很多,可以自行google,这里要记录的是用据说最好用的JAVA编辑器IntelliJ IDEA来部署OF服务端.试了好多下,终于成功了,记录下. 直接上图吧 ...
- Rsync同步部署web服务端配置
Rsync同步部署web服务端配置 1,参数详解: -v, --verbose 详细模式输出. -q, --quiet 精简输出模式. -c, --checksum 打开校验开关,强制对文件传输进行校 ...
- 如何将phantomjs单独部署在服务端
如何将phantomjs单独部署在服务端 文章目录 一. 容我分析(lao dao)几句 二. 服务端 Look here 服务端phantomjs搭建 web端搭建及如何调用phantomjs 三. ...
- .net 部署到服务端IIS,Process调用exe程序无法运行问题解决
场景: 开发某一功能将html内容转换为pdf,采用第三方插件wkhtmltopdf.exe进行转换.在本地调试正常运行,部署到服务端后文件没有正常生成. IIS中,Process打不开cmd程序,程 ...
- Linux 部署 iSCSI 服务端
Linux 部署 iSCSI 服务端 服务端实验环境 iSCSI-server :RHEL8 IP:192.168.121.10 一.服务端安装 target 服务和 targetcli 命令行工具 ...
- 群晖-使用docker套件部署Prometheus+Grafana
Docker 部署 Prometheus 说明: 先在群辉管理界面安装好docker套件,修改一下镜像源(更快一点) 所需容器如下 Prometheus Server(普罗米修斯监控主服务器 ) No ...
- Linux编译部署vsftp服务
部署vsftp服务 Hostname OS IP Software Vsftpsvr RHEL-5.8 10.0.0.58 yum install -y vsftpd yum install –y ...
- Ubuntu 16.04 系统编译部署lamp服务。
壹 下载Apache 和 PHP源码包: Apache:http://httpd.apache.org/download.cgi PHP:http://php.net/downloads.php 贰 ...
随机推荐
- Mybatis结果集ResultMap映射
基本使用: 解决属性名和数据库字段名不一致的问题 <resultMap id="user" type="com.guan.bean.UserBean"&g ...
- js正则表达式处理表单
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 数据结构-二叉树、B树、B+树、B*树(整理版)
1. 二叉树 二叉树的特点: ① 所有非叶子节点至多拥有两个儿子(Left和Right): ② 所有节点存储一个关键字: ③ 非叶子节点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: ...
- react核心?
虚拟DOM, Diff算法, 遍历key值 react-dom: 提供了针对DOM的方法,比如:把创建的虚拟DOM,渲染到页面上 或 配合ref来操作DOM react-router
- 为什么我们调用 start()方法时会执行 run()方法,为什么 我们不能直接调用 run()方法?
当你调用 start()方法时你将创建新的线程,并且执行在 run()方法里的代码. 但是如果你直接调用 run()方法,它不会创建新的线程也不会执行调用线程的代码, 只会把 run 方法当作普通方法 ...
- oracle.i18n.text.convert.CharacterConverterOGS.getInstance(I)Loracle/i18n/text/converter/CharacterConver;
看看项目是不是同时包含ojdbc系列jar包和nls_charset12.jar包.如果同时包含,则删除nls_charset12.jar.因为低版本的nls_charset12和ojdbc包冲突.
- MySQL 中有哪几种锁?
1.表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 2.行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最高. 3.页面锁:开销和 ...
- Java 中,嵌套公共静态类与顶级类有什么不同?
类的内部可以有多个嵌套公共静态类,但是一个 Java 源文件只能有一个顶级公 共类,并且顶级公共类的名称与源文件名称必须一致.
- BUG战斗史 —— 日期格式与字符串之间的转换
说在前面 最近在公司实习,接触了一个中小型的后台管理系统,不得不说,项目的目录结构比我平时做的"课程设计"要来得复杂,于是我先去看了Github上一些后台管理系统的模板项目 在gu ...
- 单片机ram和rom的区别
单片机运行时需要调用某个程序/函数/固定数据时就需要读取ROM,然后在RAM中执行这些程序/函数的功能,所产生的临时数据也都存在RAM内,断电后这些临时数据就丢失了.ROM:(Read Only Me ...