5分钟教你学会搭建巫妖王之怒魔兽世界私服

最近闲来无事,和朋友完了一阵魔兽私服;玩了一段时间之后一个想法冒了出来;作为一个程序员,为什么不自己搭建一个魔兽世界的私人服务器呢,于是就进入了漫长的入坑探索;
完成之后,本着技术分享,后人不在踩坑的初衷,也方便后期自己查找;写下此篇经验分享。

Ubuntu 编译 AzerothCore

注:
Ubuntu 版本必须 >= 22.04
旧版本系统会遇到大量软件版本过旧的问题,需要自己手动升级,不建议使用。

安装所需软件

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

编译

mkdir ~/wow
cd ~/wow
git clone https://gitee.com/payneqiao/azerothcore-wotlk.git
cd azerothcore-wotlk
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server/ -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DWITH_WARNINGS=1 -DTOOLS_BUILD=all -DSCRIPTS=static -DMODULES=static
make -j $(nproc --all) # 编译
make install # 安装

服务器设置

  1. 下载地图文件 data.zip, 链接: https://pan.baidu.com/s/1MD5MHjrwM9nCAUAecJyPLw 提取码:of0t
  2. 把 data.zip 解压到 ~/azeroth-server/data 目录下
  3. ~/azeroth-server/etc/worldserver.conf.dist 复制一份到 ~/azeroth-server/etc/worldserver.conf,然后编辑 ~/azeroth-server/etc/worldserver.conf,把 DataDir = "." 改成 DataDir = "/home/你的用户名/azeroth-server/data"
  4. ~/azeroth-server/etc/authserver.conf.dist 复制一份到 ~/azeroth-server/etc/authserver.conf

初始化数据库

  1. 执行 sudo mysql 进入数据库的终端

  2. 执行以下SQL语句,创建acore用户,创建acore_world、acore_characters、acore_auth三个数据库,并授权acore用户拥有这三个数据库的所有权限

DROP USER IF EXISTS 'acore'@'%';
CREATE USER 'acore'@'%' IDENTIFIED BY 'acore' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;

GRANT ALL PRIVILEGES ON * . * TO 'acore'@'%' WITH GRANT OPTION;

DROP DATABASE IF EXISTS `acore_world`;
CREATE DATABASE `acore_world` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;

DROP DATABASE IF EXISTS `acore_characters`;
CREATE DATABASE `acore_characters` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;

DROP DATABASE IF EXISTS `acore_auth`;
CREATE DATABASE `acore_auth` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;

GRANT ALL PRIVILEGES ON `acore_world` . * TO 'acore'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `acore_characters` . * TO 'acore'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `acore_auth` . * TO 'acore'@'%' WITH GRANT OPTION;
  1. 允许外网访问MySQL服务器
  • 进入 /etc/mysql/mysql.conf.d 目录
  • 修改 mysqld.cnf 文件,把 bind-address 的值由 127.0.0.1 改成 0.0.0.0
  • 在终端输入 sudo systemctl restart mysql 重启MySQL服务

启动服务器

cd ~/azeroth-server/bin

#启动世界服务,
./worldserver

#启动完成后会出现AC命令输入,输入GM命令创建账号
account create admin admin
account set gmlevel admin 3 -1

#启动登录服务
./authserver

更改数据库

  1. mysql命令或者Navicat进入数据库
  2. 修改 acore_auth.realmlist 表里的 address 字段,改为服务器的公网IP(如果是虚拟机就填虚拟机的IP)

网络设置

Ubuntu 防火墙打开3724和8085端口 3306数据库端口

sudo ufw allow 3306
sudo ufw allow 3724
sudo ufw allow 8085

客户端配置

  1. 记事本打开客户端目录Data\zhCN下的 realmlist.wtf
  2. 修改ip为你的服务器ip SET realmlist 你的服务器ip

关闭服务器

pkill authserver
pkill worldserver

为了方便,可以把上面两条命令写到一个脚本里,比如 ~/azeroth-server/bin/stop.sh,然后执行 chmod +x ~/azeroth-server/bin/stop.sh,这样就可以通过 ~/azeroth-server/bin/stop.sh 来关闭服务器了。

posted @ 2023-12-01 21:26  大西瓜的一片净土  阅读(1545)  评论(1编辑  收藏  举报