一、核心版本与架构选型
自架魔兽世界服务端主流用开源模拟核心,按想玩的版本选:
• TrinityCore:最活跃,支持 3.3.5a(巫妖王)、4.3.4(大灾变)、正式服 master 分支
- AzerothCore:基于 TrinityCore 分支,模块化强,适合长期扩展、搭网站注册与多模组
• CMaNGOS / OregonCore:偏经典旧世(1.12.1)、TBC(2.4.3),老牌稳定
- 懒人方案:Repack 整合包(Windows 下解压即跑,含 auth/world/MySQL),适合单机试玩;外网多人在线建议源码编译
服务端恒定三库结构:
auth(realmd)= 账号、realmlist、封禁;characters = 角色、背包、进度;world = NPC、任务、物品、技能、地图
二、硬件与系统底线
• 本地单机:4GB 内存可跑,服务端+客户端同机建议 8GB+,磁盘 20GB+(地图数据另占 15GB+)
• 外网多人:4核8GB 起步,带宽按同时在线数估算,Linux 推荐 Ubuntu 20.04+/22.04 LTS、Debian 12,Windows 用 10/11 或 Server 2019+
- 防火墙放行:3724(auth 认证)、8085(world 世界)、3306(MySQL)、80/443(搭网站用)
三、Linux(Ubuntu/Debian)源码编译流程(以 TrinityCore 3.3.5a 为例)
1. 装依赖
apt update
apt install -y git cmake make gcc g++ clang \
libmysqlclient-dev libmariadb-dev libssl-dev libbz2-dev \
libreadline-dev libncurses-dev libboost-all-dev \
mariadb-server p7zip-full
2. 拉源码(指定分支,版本必须和客户端一致)
git clone -b 3.3.5 --depth 1 https://github.com/TrinityCore/TrinityCore.git
cd TrinityCore && git submodule update --init --depth 1
3. 编译
mkdir build && cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/trinity -DTOOLS=1 -DWITH_WARNINGS=0
make -j$(nproc)
make install
产物在 /opt/trinity/bin:authserver、worldserver、mapextractor、vmap4extractor、vmap4assembler、mmaps_generator
四、数据库初始化
1. 启 MySQL/MariaDB,设 root 密码,字符集 utf8mb4
2. 建专用账号(别用 root 直连服务端)
CREATE USER 'trinity'@'127.0.0.1' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON . TO 'trinity'@'127.0.0.1';
FLUSH PRIVILEGES;
3. 建三库并导基底 SQL
mysql -u root -p < TrinityCore/sql/create/create_mysql.sql
→ 生成 auth、characters、world 三库
4. 导世界库全量数据 TDB_full_world_335.xxxxx.sql(从 TrinityCore releases 下对应版),放 bin 目录让 worldserver 首次启动自动灌入,或手动 source
5. 应用 updates 目录内增量补丁(不导会导致任务/副本逻辑异常)
五、配置文件改写(最容易连不上的环节)
复制 conf 模板:
cp authserver.conf.dist authserver.conf
cp worldserver.conf.dist worldserver.conf
worldserver.conf 关键项:
LoginDatabaseInfo = "127.0.0.1;3306;trinity;强密码;auth"
WorldDatabaseInfo = "127.0.0.1;3306;trinity;强密码;world"
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;强密码;characters"
DataDir = "/opt/trinity/data" (地图目录绝对路径)
Rate.XP.Kill / Rate.XP.Quest = 1(改倍数调经验)
Motd = "欢迎语"
authserver.conf:
LoginDatabaseInfo = "127.0.0.1;3306;trinity;强密码;auth"
RealmServerPort = 3724
六、客户端地图数据提取(必做,否则进图全黑/卡地形)
用对应版本客户端(3.3.5a 推荐 build 12340 纯净端),把编译出的工具拷到客户端根目录执行:
./mapextractor → 出 dbc/ 与 maps/
./vmap4extractor → 出 Buildings/
./vmap4assembler Buildings vmaps
./mmaps_generator → 出 mmaps/(寻路用,耗 CPU 与磁盘 IO,大地图几小时到十几小时)
把 dbc、maps、vmaps、mmaps 整体拷到服务端 DataDir 指向目录
七、启动服务端
先起认证,再起世界:
./authserver
(另开会话)./worldserver
首次加载会读 world 库、注册表、地图,控制台出现 TC> 提示符即就绪。
建首个 GM 账号:
account create admin 123456
account set gmlevel admin 3 -1
外网地址写入 realmlist 表:
UPDATE auth.realmlist SET address='公网IP', name='我的魔兽服' WHERE id=1;
八、客户端对接登录
1. 用匹配版本客户端(3.3.5a → 12340 / 国服 13930 等)
2. 改 Data/zhCN/realmlist.wtf(国服路径,美服 enUS、台服 zhTW 同理):
set realmlist 127.0.0.1 (本机)
set realmlist 公网IP (外网)
set realmlist 域名 (动态 IP 用域名)
若用 Launcher 启动,把 set patchlist 也指向同地址
3. 运行 wow.exe → 输 admin / 123456 → 建角色进游戏
九、Windows 方案要点
• 装 Visual Studio 2022、CMake 3.24+、MySQL 8.0、OpenSSL 1.1+/3.0+、Boost 1.74+
• CMake GUI 指源码与 build 目录,生成 VS 工程 → Release x64 编译出 authserver.exe / worldserver.exe
• Repack 整合包:解压到无空格路径(如 C:\WoWServer)→ 启动自带 MySQL → 先 authserver.exe 再 worldserver.exe → 控制台建号 → 改 realmlist → 进游戏
十、Docker 快速方案(AzerothCore)
git clone https://github.com/azerothcore/azerothcore-wotlk.git
cd azerothcore-wotlk
cp .env.dist .env (改 MYSQL_ROOT_PASSWORD、AC_PASSWORD、REALM_NAME)
docker compose up -d
容器起好后改客户端 realmlist 为 127.0.0.1 或宿主机 IP,账号 admin / .env 内 AC_PASSWORD
十一、外网让朋友进来的网络处理
• 云服务器:安全组放 3724/8085/3306,auth.realmlist.address 写公网 IP
• 家用宽带:路由器端口转发 TCP 3724 与 8085 到内网机,realmlist 写拨号公网 IP 或动态域名;ISP 封 80/8085 时改 worldserver.conf 内 WorldServerPort 映射
• 搭注册网站:前端 Nginx 托管,后端读 auth.account 表,密码用核心自带 hash(sha256+盐),别明文落库
十二、常见起不来排查
• 卡“正在连接”/已连接断开 → realmlist IP 与 auth.realmlist 表不一致、3724 未通
• worldserver 启动即退 → world 库未导 TDB、DataDir 路径错、maps 缺文件
• 进游戏地图全黑/掉地下 → vmaps/mmaps 未提取或版本不匹配客户端
• 账号密码错 → 手动改库密码会坏 hash,必须在 worldserver 控制台用 account create / account set password
• 副本/NPC 行为异常 → updates SQL 没全跑,按版本顺序补
自架魔兽世界服务端主流用开源模拟核心,按想玩的版本选:
• TrinityCore:最活跃,支持 3.3.5a(巫妖王)、4.3.4(大灾变)、正式服 master 分支
- AzerothCore:基于 TrinityCore 分支,模块化强,适合长期扩展、搭网站注册与多模组
• CMaNGOS / OregonCore:偏经典旧世(1.12.1)、TBC(2.4.3),老牌稳定
- 懒人方案:Repack 整合包(Windows 下解压即跑,含 auth/world/MySQL),适合单机试玩;外网多人在线建议源码编译
服务端恒定三库结构:
auth(realmd)= 账号、realmlist、封禁;characters = 角色、背包、进度;world = NPC、任务、物品、技能、地图
二、硬件与系统底线
• 本地单机:4GB 内存可跑,服务端+客户端同机建议 8GB+,磁盘 20GB+(地图数据另占 15GB+)
• 外网多人:4核8GB 起步,带宽按同时在线数估算,Linux 推荐 Ubuntu 20.04+/22.04 LTS、Debian 12,Windows 用 10/11 或 Server 2019+
- 防火墙放行:3724(auth 认证)、8085(world 世界)、3306(MySQL)、80/443(搭网站用)
三、Linux(Ubuntu/Debian)源码编译流程(以 TrinityCore 3.3.5a 为例)
1. 装依赖
apt update
apt install -y git cmake make gcc g++ clang \
libmysqlclient-dev libmariadb-dev libssl-dev libbz2-dev \
libreadline-dev libncurses-dev libboost-all-dev \
mariadb-server p7zip-full
2. 拉源码(指定分支,版本必须和客户端一致)
git clone -b 3.3.5 --depth 1 https://github.com/TrinityCore/TrinityCore.git
cd TrinityCore && git submodule update --init --depth 1
3. 编译
mkdir build && cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/trinity -DTOOLS=1 -DWITH_WARNINGS=0
make -j$(nproc)
make install
产物在 /opt/trinity/bin:authserver、worldserver、mapextractor、vmap4extractor、vmap4assembler、mmaps_generator
四、数据库初始化
1. 启 MySQL/MariaDB,设 root 密码,字符集 utf8mb4
2. 建专用账号(别用 root 直连服务端)
CREATE USER 'trinity'@'127.0.0.1' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON . TO 'trinity'@'127.0.0.1';
FLUSH PRIVILEGES;
3. 建三库并导基底 SQL
mysql -u root -p < TrinityCore/sql/create/create_mysql.sql
→ 生成 auth、characters、world 三库
4. 导世界库全量数据 TDB_full_world_335.xxxxx.sql(从 TrinityCore releases 下对应版),放 bin 目录让 worldserver 首次启动自动灌入,或手动 source
5. 应用 updates 目录内增量补丁(不导会导致任务/副本逻辑异常)
五、配置文件改写(最容易连不上的环节)
复制 conf 模板:
cp authserver.conf.dist authserver.conf
cp worldserver.conf.dist worldserver.conf
worldserver.conf 关键项:
LoginDatabaseInfo = "127.0.0.1;3306;trinity;强密码;auth"
WorldDatabaseInfo = "127.0.0.1;3306;trinity;强密码;world"
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;强密码;characters"
DataDir = "/opt/trinity/data" (地图目录绝对路径)
Rate.XP.Kill / Rate.XP.Quest = 1(改倍数调经验)
Motd = "欢迎语"
authserver.conf:
LoginDatabaseInfo = "127.0.0.1;3306;trinity;强密码;auth"
RealmServerPort = 3724
六、客户端地图数据提取(必做,否则进图全黑/卡地形)
用对应版本客户端(3.3.5a 推荐 build 12340 纯净端),把编译出的工具拷到客户端根目录执行:
./mapextractor → 出 dbc/ 与 maps/
./vmap4extractor → 出 Buildings/
./vmap4assembler Buildings vmaps
./mmaps_generator → 出 mmaps/(寻路用,耗 CPU 与磁盘 IO,大地图几小时到十几小时)
把 dbc、maps、vmaps、mmaps 整体拷到服务端 DataDir 指向目录
七、启动服务端
先起认证,再起世界:
./authserver
(另开会话)./worldserver
首次加载会读 world 库、注册表、地图,控制台出现 TC> 提示符即就绪。
建首个 GM 账号:
account create admin 123456
account set gmlevel admin 3 -1
外网地址写入 realmlist 表:
UPDATE auth.realmlist SET address='公网IP', name='我的魔兽服' WHERE id=1;
八、客户端对接登录
1. 用匹配版本客户端(3.3.5a → 12340 / 国服 13930 等)
2. 改 Data/zhCN/realmlist.wtf(国服路径,美服 enUS、台服 zhTW 同理):
set realmlist 127.0.0.1 (本机)
set realmlist 公网IP (外网)
set realmlist 域名 (动态 IP 用域名)
若用 Launcher 启动,把 set patchlist 也指向同地址
3. 运行 wow.exe → 输 admin / 123456 → 建角色进游戏
九、Windows 方案要点
• 装 Visual Studio 2022、CMake 3.24+、MySQL 8.0、OpenSSL 1.1+/3.0+、Boost 1.74+
• CMake GUI 指源码与 build 目录,生成 VS 工程 → Release x64 编译出 authserver.exe / worldserver.exe
• Repack 整合包:解压到无空格路径(如 C:\WoWServer)→ 启动自带 MySQL → 先 authserver.exe 再 worldserver.exe → 控制台建号 → 改 realmlist → 进游戏
十、Docker 快速方案(AzerothCore)
git clone https://github.com/azerothcore/azerothcore-wotlk.git
cd azerothcore-wotlk
cp .env.dist .env (改 MYSQL_ROOT_PASSWORD、AC_PASSWORD、REALM_NAME)
docker compose up -d
容器起好后改客户端 realmlist 为 127.0.0.1 或宿主机 IP,账号 admin / .env 内 AC_PASSWORD
十一、外网让朋友进来的网络处理
• 云服务器:安全组放 3724/8085/3306,auth.realmlist.address 写公网 IP
• 家用宽带:路由器端口转发 TCP 3724 与 8085 到内网机,realmlist 写拨号公网 IP 或动态域名;ISP 封 80/8085 时改 worldserver.conf 内 WorldServerPort 映射
• 搭注册网站:前端 Nginx 托管,后端读 auth.account 表,密码用核心自带 hash(sha256+盐),别明文落库
十二、常见起不来排查
• 卡“正在连接”/已连接断开 → realmlist IP 与 auth.realmlist 表不一致、3724 未通
• worldserver 启动即退 → world 库未导 TDB、DataDir 路径错、maps 缺文件
• 进游戏地图全黑/掉地下 → vmaps/mmaps 未提取或版本不匹配客户端
• 账号密码错 → 手动改库密码会坏 hash,必须在 worldserver 控制台用 account create / account set password
• 副本/NPC 行为异常 → updates SQL 没全跑,按版本顺序补

