• 群晖下虚拟机编译部署WOW服务端TrinityCore


    前言#

    前几天突然想玩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启动,就可以了。
  • 相关阅读:
    堆优化迪氏最短单源路径原理及C++实现
    【NLP入门教程】目录
    FPGA高端项目:图像采集+GTX+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持
    xml元素值需要保留space
    NLP 学习之:2022.10.27 阶段性文章总结和筛选
    【C++】缺省参数与函数重载
    【上海大学计算机组成原理实验报告】六、内存系统实验
    凉鞋的 Godot 笔记 108. 第二个通识:增删改查
    Chrome 118 版本中的新功能
    吴恩达深度学习笔记:深度学习引言1.1-1.5
  • 原文地址:https://www.cnblogs.com/ZXdeveloper/p/16140834.html