• Trinitycore学习之在Linux环境上搭建服务器并测试运行


    1:准备环境,这里用ubuntu 22.04进行测试,安装环境后为了方便,换源。

    注意:这里用的虚拟机,在虚拟机上生成地图信息,地图信息占用内存比较大,我暂时设置磁盘50G进行测试,后面研究细节。

    ubuntu@ubuntu:~/res$ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 22.04.3 LTS
    Release:	22.04
    Codename:	jammy
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2:参考文档了解:

    https://trinitycore.info/en/install/requirements/linux

    https://trinitycore.info/en/install/requirements/windows

    3:开始安装环境-安装必备依赖

    sudo apt-get update
    sudo apt-get install git clang cmake make gcc g++ libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mysql-server-5.7 p7zip
    # 这里mysql-server-5.7 版本没有  我这里安装好mysql-server-8.0
    sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
    sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4:开始安装

    mkdir game
    cd game
    git clone -b 3.3.5 https://github.com/TrinityCore/TrinityCore.git
    
    mkdir build
    cd build
    cmake ../ -DCMAKE_INSTALL_PREFIX=/home/ubuntu/game -DCONF_DIR=/home/ubuntu/game/bin
    make -j2
    make install
    
    #这里完了之后  会在/home/ubuntu/game/bin 目录中生成相关可执行文件,以及配置文件也在这
    ubuntu@ubuntu:~/game/bin$ pwd
    /home/ubuntu/game/bin
    ubuntu@ubuntu:~/game/bin$ ll
    total 274160
    drwxrwxr-x 2 ubuntu ubuntu      4096 Sep  9 16:38 ./
    drwxrwxr-x 5 ubuntu ubuntu      4096 Sep  9 17:22 ../
    -rwxr-xr-x 1 ubuntu ubuntu  16259744 Sep  9 16:28 authserver*
    -rw-r--r-- 1 ubuntu ubuntu     13897 Sep  9 16:10 authserver.conf.dist
    -rwxr-xr-x 1 ubuntu ubuntu   2810696 Sep  9 16:27 mapextractor*
    -rwxr-xr-x 1 ubuntu ubuntu  14319552 Sep  9 16:27 mmaps_generator*
    -rwxr-xr-x 1 ubuntu ubuntu   7811168 Sep  9 16:26 vmap4assembler*
    -rwxr-xr-x 1 ubuntu ubuntu   6700944 Sep  9 16:27 vmap4extractor*
    -rwxr-xr-x 1 ubuntu ubuntu 232656040 Sep  9 16:37 worldserver*
    -rw-r--r-- 1 ubuntu ubuntu    140889 Sep  9 16:10 worldserver.conf.dist
    #这里的文件  除了配置文件   就是生成地图的工具 以及启动游戏可执行文件
    #authserver是认证服务,worldserver是世界服务也就是游戏的核心服
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    5:生成地图

    上面已经编译出处理地图数据的可执行文件 mapextractor, vmap4extractor,vmap4assembler, mmaps_generator,执行后生成其他一些目录或者文件,是服务器需要的地图信息。

    #1:首先从客户端中 把客户端安装目录下 Data和Interface 目录,拷贝到服务器上 这里拷贝到/home/ubuntu/res目录下 (这里的客户端自行下载 启动点击wow.exe)
    #2:处理地图的可执行文件  在/home/ubuntu/game/bin目录中
    #3:在地图文件所在目录res目录下执行相关可执行文件,这里要用到Data和Interface 中数据,并且好大,快20G:
    ../game/bin/mapextractor 
    ../game/bin/vmap4extractor 
    ../game/bin/vmap4assembler 
    ../game/bin/mmaps_generator 
    #如果运行没有问题  生成如下相关文件:
    #这里的执行比较耗时,一到两个小时,以及这里需要的内存比较大,自己在虚拟机进行测试时,反复测试几次。
    ubuntu@ubuntu:~/res$ ll
    total 1168
    drwx--x--x  2 ubuntu ubuntu 311296 Sep  9 18:02 Buildings/
    drwxrwxr-x  2 ubuntu ubuntu   4096 Sep  9 17:56 Cameras/
    drwxrwxr-x  3 ubuntu ubuntu   4096 Sep  9 17:53 Data/       #主要地图数据 从客户端拷贝而来
    drwxrwxr-x  2 ubuntu ubuntu  12288 Sep  9 17:56 dbc/
    drwxrwxr-x  3 ubuntu ubuntu   4096 Sep  9 17:47 Interface/   #从客户端拷贝而来
    drwxrwxr-x  2 ubuntu ubuntu 159744 Sep  9 17:58 maps/
    drwxrwxr-x  2 ubuntu ubuntu 135168 Sep 10 03:11 mmaps/
    drwxrwxr-x  2 ubuntu ubuntu 552960 Sep  9 18:05 vmaps/
    
    #4:登录mysql,导入数据库,
    #   首先处理安装后设置mysql密码问题,不是本次核心。
    #   简单重设mysql密码: sudo mysqladmin -u root -p password
    #   导入对应的数据 在TrinityCore源码目录下/sql/create/ 
    #   可以查看数据库 生成的表 后续待了解相关结构
    sudo mysql -uroot -p123456
    mysql> source /home/ubuntu/game/TrinityCore/sql/create/create_mysql.sql
    #5:修改realmlist表中address 信息为本机ip地址。
    select * from realmlist;
    select * from realmlist\G  #纵向显示
    update realmlist set address="192.168.40.130" where id = 1; #修改ip
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    注意:这里地图数据特别大,大约20G,比较耗费内存,这里我用虚拟机测试时,直接设置比较大的内存进行解决。

    同时,df -h查看内存情况,参考https://zhuanlan.zhihu.com/p/359959580 可以实现磁盘内存扩展

    6:开始运行

    ./worldserver   #运行服务器
    ./authserver    #运行认证服务器
    
    #第一次启动时与相关报错
    ubuntu@ubuntu:~/game/bin$ ./worldserver
    TrinityCore rev. 79e2f77d4403 2023-09-01 12:15:17 +0200 (3.3.5 branch) (Unix, RelWithDebInfo, Static) (worldserver-daemon)
    .....
    File "TDB_full_world_335.23061_2023_06_14.sql" is missing, download it from "https://github.com/TrinityCore/TrinityCore/releases" uncompress it and place the file "TDB_full_world_335.23061_2023_06_14.sql" in the directory "/home/ubuntu/game/bin".
    Could not populate the World database, see log for details.
    
    #按照提示进行处理 去https://github.com/TrinityCore/TrinityCore/releases 找到335.23061对应版本中
    #下载对应de.7z 压缩包,用7zip进行解压后,获取到一个sql文件。
    
    #把解压后的sql脚本拷贝到 worldserver 同级目录
    TDB_full_world_335.23061_2023_06_14.sql
    ubuntu@ubuntu:~/game/bin$ pwd
    /home/ubuntu/game/bin
    ubuntu@ubuntu:~/game/bin$ ls
    Auth.log         authserver.conf.dist  mapextractor     TDB_full_world_335.23061_2023_06_14.sql  worldserver
    authserver       DBErrors.log          mmaps_generator  vmap4assembler                           worldserver.conf
    authserver.conf  GM.log                Server.log       vmap4extractor                           worldserver.conf.dist
    # 把该目录下的配置文件进行处理
    cp authserver.conf.dist authserver.conf
    cp worldserver.conf.dist worldserver.conf
    #修改配置文件  在配置文件中设置地图信息位置   DataDir = "../../res"
    vi worldserver.conf
    #最终,分别启动真正服务器和认证服务器
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    7:测试运行

    #启动./worldserver  后,设置一个用户名和密码,在客户端进行测试
    TC> account create test1 1234
    TC> Account created: test1
    #在客户端,逍遥魔兽登录器.bat 脚本中,修改对应的服务端ip地址 这里改为对应的服务器ip 对应上面修改的数据库内部地址
    if not exist "WTF" md "WTF"
     echo set realmlist 192.168.40.132>realmlist.WTF
     echo set realmlist 192.168.40.132>data/enGB/realmlist.WTF
     echo set realmlist 192.168.40.132>data/zhcn/realmlist.WTF
     start wow.exe
     goto end
     #启动该bat脚本,输入上面的用户名和密码  测试ok
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    太多的技术栈来源于零声学院,上班之余,又报了个游戏的课外进修,做此整理。

    推荐:https://xxetb.xet.tech/s/2W52YR

  • 相关阅读:
    vue-2
    一次断网故障修复
    (六) ES6 新特性 —— 迭代器(iterator)
    Taurus: 面向机器学习的数据面架构
    载20(S)-人参皂苷/细胞穿膜肽-单克隆抗体-载丝裂霉素白蛋白纳米微球的制备
    【Simulia】 Lsight多学科仿真流程 | 达索系统百世慧®
    MySQL主从的应用
    NRF52840-QIAA-R Nordic BLE5.0蓝牙无线收发芯片
    数据结构与算法之排序: Leetcode 922. 按奇偶排序数组 II (Typescript版)
    实现微信转账到零钱经验
  • 原文地址:https://blog.csdn.net/yun6853992/article/details/132842450