AzerothCore-WoTLK 数据提取实操指南:map、vmap、mmaps 全流程与避坑
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
跑通 AzerothCore-WoTLK 数据提取,你最终会拿到三组文件:map 管地形,vmap 管碰撞与视线,mmaps 管 NPC 寻路。下面按执行顺序讲清 extractor.sh 每个选项干什么、产物落在哪、怎么验收,帮你避开 3.3.5a 私服地图数据搭建里的常见坑。
先搞懂:三组数据各管什么
🗺️ 这三组数据各有分工,互不替代:
| 数据集 | 解决什么问题 | 文件形态 |
|---|---|---|
| map | 地形高度、纹理、地图基础结构 | maps/下的0000_0000.adt |
| vmap | 静态物体(建筑、地形细节)的碰撞与视线遮挡 | .vmtree/.vmtile |
| mmaps | navmesh(给 NPC 寻路用的导航网格) | .mmap |
依赖关系是一条单向链,后一步都要靠前一步的产物:
开跑前自检
条件不满足时不会直接报错拦住你,而是跑到一半卡住或产物残缺,所以先花一分钟对照这张表:
| 检查项 | 要求 | 不满足的后果 |
|---|---|---|
| 客户端版本 | WoW 3.3.5a(Build 12340),Data/下 MPQ 完整 | map_extractor 找不到数据包,产物缺失 |
| 磁盘空间 | ≥20GB 空闲(原始数据 20GB+) | 提取中途写满、文件残缺 |
| 内存 | 推荐 16GB 以上 | vmap 阶段频繁磁盘交换,速度骤降 |
| 运行环境 | 四个二进制与Data/目录放在 WoW.exe 同级目录 | extractor.sh 直接提示缺文件,进不了菜单 |
四个工具各就各位
工具源码都放在src/tools/下,速查如下:
| 工具 | 输入 | 输出 | 前置依赖 | 一句话定位 |
|---|---|---|---|---|
| map_extractor | MPQ 数据包 | maps/、dbc/、Cameras/ | 无 | 解析 ADT 区块文件头并校验,产出地形底座 |
| vmap4_extractor | WMO/M2 模型 | Buildings/(临时) | map | 把模型简化成碰撞网格 |
| vmap4_assembler | Buildings/ | vmaps/ | vmap4_extractor | 汇编成游戏可读的 vmap |
| mmaps_generator | map + vmap | mmaps/ | vmap | 用 Recast/Detour 生成寻路网格 |
第一个工具的源码在 src/tools/map_extractor,其余三个与其平级存放。
extractor.sh 菜单怎么用
统一入口是 apps/extractor/extractor.sh,运行后进入交互菜单:
Press 1, 2, 3 or 4 to start extracting or 5 to exit. 1 - Extract base files (NEEDED) and cameras. 2 - Extract vmaps (needs maps to be extracted before you run this) 3 - Extract mmaps (needs vmaps to be extracted before you run this, may take hours) 4 - Extract all (may take hours) 5 - EXIT- 1:基础文件 + 相机,必须最先做;
- 2:vmap 全流程(原始提取 + 汇编一并跑完),依赖 1;
- 3:mmaps,依赖 2,耗时最长;
- 4:1→2→3 一次跑完;
- 5:退出。
四步走:执行与验收
1. map:打地基
- 做什么:从 MPQ 里拆出地形数据,map_extractor 负责解析 ADT 区块并做头部校验,同时导出 DBC 和相机定义。
- 怎么跑:
./extractor.sh,选 1。 - 得到什么:
maps/按地图 ID 组织,文件形如0000_0000.adt;另有dbc/、Cameras/。 - 确认成功:三个目录都有内容,且
maps/下按目录分层铺开了各地图的 adt 文件。
2. vmap 原始数据:导出碰撞对象
- 做什么:vmap4_extractor 逐个读取 WMO(世界模型)和 M2 文件,转成简化碰撞网格。
- 怎么跑:选 2(该选项内部会连续跑提取和汇编两步)。
- 得到什么:临时工作目录
Buildings/。 - 确认成功:日志里出现
Couldn't open RootWmo!!!这类字样是正常现象——菜单启动时就提前打过招呼,个别 WMO 组文件本就缺失,不用中断。✅
3. vmap 汇编
- 做什么:vmap4_assembler 把
Buildings/里的原始数据打包成优化格式,相当于 src/tools/vmap4_assembler 源码里的两步走vmap4_assembler Buildings vmaps。 - 怎么跑:随步骤 2 自动完成,结束后临时目录被清理。
- 得到什么:
vmaps/目录,按地图 ID 和区块组织.vmtree与.vmtile文件。 - 确认成功:
vmaps/不再为空,且能找到对应地图 ID 的 tree/tile 文件。
4. mmaps:让 NPC 会走
- 做什么:mmaps_generator 基于 Recast/Detour 为每张图生成导航网格,支持
--threads指定线程数。工具细节见 src/tools/mmaps_generator。 - 怎么跑:选 3。脚本会先提示 "This may take a few hours to complete",坐稳。
- 得到什么:
mmaps/目录,每张地图一个.mmap。 - 确认成功:进程正常收尾无错误,
mmaps/下文件齐全;有疑义时翻var/extractors/下的日志。
Extract all:一步到位的代价
首次部署或整库翻新时,直接选 4 最省事。代价是:
- 原始数据 20GB+,IO 和内存持续高压;
- 单张大陆地图(如诺森德)含数百个区块,寻路网格的几何计算很重;
- 整体耗时以数小时计,中途断电或关机会让你从头再来。
时间充裕且想省心的选它;时间紧、已跑过部分步骤的,按 1→2→3 分步执行。
踩坑速查
⚠️ 症状对号入座,大多十分钟能解决:
| 症状 | 可能原因 | 处理办法 |
|---|---|---|
| map_extractor 提示文件缺失 | 客户端非 3.3.5a(Build 12340),或 Data 目录 MPQ 不完整 | 换一套干净的 3.3.5a Data 目录再验证 |
| vmap 阶段速度缓慢 | 内存不足触发交换;Buildings 里留着无关地图数据 | 清理Buildings/中不需要的数据,内存加到 16GB+ |
| mmaps 生成失败 | vmap 尚未完成;磁盘空间不足 | 先确认 vmap 已跑完;预留至少 10GB 空闲;查var/extractors/日志 |
部署与验收
📦 三组目录maps/、vmaps/、mmaps/放进 AzerothCore 服务器目录,然后在 worldserver.conf 里让 DataDir 指向它们所在的路径:
DataDir = "."配置模板可参考 worldserver.conf.dist。注意 DataDir 无法通过重载 worldserver.conf 生效,改完要重启。
启动后做三项验收:
- 进图看地形——大陆起伏、水面与客户端一致;
- 贴建筑或崖壁走——碰撞和视线遮挡正常,能站上去的也能正常交互;
- 喊 NPC 巡逻——路径应绕开障碍物而不是直线穿墙。
三组数据都就位后,你的世界就具备了真实的地形、碰撞与寻路,后续调内容时基本不用再碰这一层。
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考