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
- 修改SourceDirectory
- 修改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
- 修改LoginDatabaseInfo,WorldDatabaseInfo和CharacterDatabaseInfo
- 修改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字段。无语,累了,不搞了