ubuntu22.04运行魔兽服务端azerothcore

1 环境要求

sudo apt-get update && sudo apt-get install git cmake make gcc g++ clang libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev

另外自行安装mysql服务端

2 编译项目

git clone https://github.com/azerothcore/azerothcore-wotlk.git --branch master --single-branch azerothcore --depth 1
cd azerothcore
mkdir build
cd build
sudo cmake ../ -DCMAKE_INSTALL_PREFIX=/srv/azerothcore-wotlk -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS_BUILD=all -DSCRIPTS=static -DMODULES=static

这里我选择把编译好的程序放到/srv/azerothcore-wotlk文件中

查看自己的机器核心有多少个线程

nproc --all

上一个命令的结果如果为6,那么下面的-j后面就输入6

make -j 6
make install

此时/srv中有就会自动创建一个名为azerothcore-wotlk的文件夹
在这里插入图片描述

3 下载wow客户端

当前的azerothcore支持的版本是3.3.5a,下面贴出对应的客户端下载地址
https://wowdl.net/client/World-of-Warcraft-3.3.5a.12340-zhCN

下载后得到World-of-Warcraft-3.3.5a.12340-zhCN.zip
将此文件上传至服务器的/srv文件夹中,解压并将其改名为wow_client

cd /srv
sudo unzip World-of-Warcraft-3.3.5a.12340-zhCN.zip
sudo mv 'World of Warcraft 3.3.5a.12340 zhCN' wow_client

将/srv/azerothcore-wotlk/bin中的map_extractor,mmaps_generator,vmap4_assembler和vmap4_extractor这四个二进制文件拷贝到/srv/wow_client目录下

cd /srv/azerothcore-wotlk/bin
sudo cp map_extractor mmaps_generator vmap4_assembler vmap4_extractor /srv/wow_client/

在/srv/wow_client/目录下,分别执行这四个二进制文件

cd /srv/wow_client
sudo ./map_extractor
sudo ./mmaps_generator
sudo ./vmap4_assembler
sudo ./vmap4_extractor

此时/srv/wow_client目录下生成了四个文件夹:dbc,maps,mmaps,vmaps
在/srv/azerothcore-wotlk下创建data文件夹,将上述四个文件夹复制到/srv/azerothcore-wotlk/data

cd /srv/wow_client
sudo cp -R dbc maps mmaps vmaps /srv/azerothcore-wotlk/data

4 设置服务端配置文件

进入/srv/azerothcore-wotlk/etc文件夹,将复制一个authserver.conf.dist,将其改名为authserver.conf,并编辑authserver.conf

cd /srv/azerothcore-wotlk/etc
sudo cp authserver.conf.dist authserver.conf
sudo vim authserver.conf
  1. 修改SourceDirectory
    在这里插入图片描述
  2. 修改LoginDatabaseInfo
    在这里插入图片描述
    数据库配置格式如下
    Variablename = “MySQLIP;Port;Username;Password;database”

进入/srv/azerothcore-wotlk/etc文件夹,将复制一个authserver.conf.dist,将其改名为authserver.conf,并编辑authserver.conf

cd /srv/azerothcore-wotlk/etc
sudo cp worldserver.conf.dist worldserver.conf
sudo vim worldserver.conf
  1. 修改LoginDatabaseInfo,WorldDatabaseInfo和CharacterDatabaseInfo
    在这里插入图片描述
  2. 修改DataDir
    在这里插入图片描述

5 设置数据库

这里假设你的机器已经安装了mysql8
Windows使用hedisql连接你的mysql
运行以下sql

CREATE DATABASE `acore_world` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE `acore_characters` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE `acore_auth` DEFAULT CHARACTER SET UTF8MB4 COLLATE UTF8MB4_UNICODE_CI;

安装如果你是使用docker安装的mysql,那么你还需要安装mysql-client,否则后台程序无法正常初始化数据库

sudo apt update
sudo apt install mysql-client

6 运行后端程序

cd /srv/azerothcore-wotlk/bin
sudo ./authserver

在这里插入图片描述

在启动一个ssh连接窗口

cd /srv/azerothcore-wotlk/bin
sudo ./worldserver

在这里插入图片描述
在worldserver运行的窗口,按下回车,执行account create hyl 12345600就创建了一个账号,账号为hyl,密码为12345600
更多的AC命令,参考https://www.azerothcore.org/wiki/creating-accounts

此时数据库已经有数据了,我们需要去数据库修改一下ip,才能让其他客户端连接到服务端

use acore_auth;
UPDATE realmlist SET address = '192.168.2.135' WHERE id = 1;

我的服务器ip为192.168.2.135,根据实际情况进行修改

7 修改wow客户端配置

在第3步,我们下载了wow客户端,我们把客户端在Windows系统中解压,解压后进入World of Warcraft 3.3.5a.12340 zhCN\Data\zhCN文件夹
编辑realmlist.wtf文件

set realmlist 192.168.2.135

根据实际情况替换192.168.2.135
保存修改后,打开World of Warcraft 3.3.5a.12340 zhCN文件夹中的Wow.exe文件

8 创建service文件

后台运行authserver和worldserver




注意注意注意注意!!!!!!!!!!

我是用frp内网穿透,映射了1024到10000的所有端口,并且关闭内网服务器防火墙,公网服务器放行(我确定放行了必要的端口,因为我可以通过frp的内网穿透,成功连接到redis mysql nginx等服务),但是仍然无法成功连接公网的azerothcore的worldserver。当我使用wow客户端登陆后,我的账号是可以成功登录的,一直卡在服务器选择页面,无法进入服务器。也就是说,azerothcore的认证服务是可以被连接到的,但是worldserver无法被连接到。
我发现在局域网时,设置正确的localAddress是可以成功游玩的(这也是其他所有教程的示例,全是以内网ip作为示例的),我的猜想是acore_auth数据库的realmlist表中的address字段没有起到作用,客户端根本不去连接address,而是直接去连接了localAddress字段。无语,累了,不搞了

  • 23
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值