AzerothCore WotLK服务器部署与定制完整指南
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
AzerothCore 是一个开源的《魔兽世界》3.3.5a(WotLK)服务端模拟器,适合想自建私服、跑压测环境或研究 MMO 服务端逻辑的人。配合官方 Docker 部署,5 分钟内可以起齐 authserver、worldserver 和 MySQL;想改内容,再走 C++ 模块和 SQL 两条路。
为什么值得上手
- 协议 GPL v2(见 LICENSE),全部 C++ 源码公开,没有闭源黑箱。
- 构建体系是 CMake(要求 3.16~3.22),根
CMakeLists.txt声明项目版本 3.0.0,仓库内自带 docker-compose.yml 一键编排。 - 模块化设计:外部扩展放在
modules/目录,构建时可用-DDISABLED_AC_MODULES="mod1;mod2"按名字禁用。 - 数据库拆成 auth / characters / world 三库,结构 SQL 统一放在
data/sql/,基础库与更新库分层管理。 - 仓库内有一套 Go 写的 e2e 集成测试(
e2e/),对着真实运行的 auth + world 进程做协议级回归,改核心逻辑时有现成验证手段。
从零到跑起来:5 步部署
环境要求如下,首次构建比较耗时,建议先备好时间:
| 组件 | 最低 | 推荐 |
|---|---|---|
| 操作系统 | Linux / WSL2 / macOS | 带 Docker Desktop(compose v2 + buildx) |
| 内存 | 4 GB | 8~16 GB |
| 数据库 | MySQL 8.4(compose 已内置镜像) | 同左,免手工安装 |
| 游戏客户端 | 魔兽世界 3.3.5a | 与服务端同版本,否则登录会失败 |
- 克隆源码:
git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk- 构建镜像。第一次会拉依赖、编译整个服务端,慢是正常的;后续重建会快很多:
cd azerothcore-wotlk docker compose build- 启动全部容器。
ac-db-import容器会自动把data/sql/导入数据库,不用你手工跑 SQL:
docker compose up -d --build- 进入 worldserver 控制台创建管理员账号(
3是 GM 等级):
docker compose attach ac-worldserver AC> account create admin password 3 -1- 用 3.3.5a 客户端连接:认证端口 3724,世界端口 8085(默认值在 docker-compose.yml 中,可用
DOCKER_AUTH_EXTERNAL_PORT、DOCKER_WORLD_EXTERNAL_PORT覆盖)。不想用 Docker,也可以直接跑仓库根目录的./install.sh走原生安装脚本。
能帮你做什么:三类用法
自建与运维
- 容器化编排:一份 compose 文件拉齐数据库、authserver、worldserver,日志落在挂载的
logs目录。 - 自动建库导数:
ac-db-import服务完成三库创建和 SQL 导入后才放行 worldserver,首装不用手动执行任何数据库命令。 - 客户端资源提取:启用
toolsprofile 后,可以用map_extractor等工具从本地客户端目录提取地图数据(compose 中默认挂载./var/client)。
内容改造与二次开发
- 模块开发:用
modules/create_module.sh生成模块骨架,按地区(如Northrend/)或玩法归类脚本,构建时单独启停。 - 数据热改:新增 SQL 只允许写进
data/sql/updates/pending_db_*/,base/、archive/和已合并的updates/db_*/是只读的历史记录,这样升级不会互相覆盖。 - 回归验证:改完登录、战斗、掉落这类核心链路,可以跑
e2e/里的 Go 测试对着活服务验证。
排查与调优
- 配置策略和日志系统各有专门文档,见下文「文档与社区」。
- 版本行为变化看
doc/changelog/master.md,升级前先对照它改配置。
边界与风险分级:公开运营别越线
AzerothCore 的设计目标是学习、研究和私人网络。把它暴露到公网、对外收费运营、或分发原始游戏的贴图与音效资源,都可能涉及暴雪的知识产权问题,下面这张表可以作为自查依据:
| 等级 | 用法类型 | 使用建议 |
|---|---|---|
| 低 | 本地/局域网私服、单机跑压测、读代码 | 放心用,注意保持客户端版本 3.3.5a |
| 中 | 自写模块、改 SQL 内容、调 GM 等级 | 先在独立库上验证,客户端服务端版本对齐 |
| 高 | 公网公开服务器、商业化运营、对外分发游戏资源 | 不建议,法律风险自负 |
另外,改数据库时记住一条硬规则:data/sql/base/、data/sql/archive/、data/sql/updates/db_*/不可动,新改动一律进data/sql/updates/pending_db_*/。
定制与扩展:源码里的几个入口
- modules/:外部模块都放这里,每个子目录自带
CMakeLists.txt;想加功能就从这里下手。 - modules/how_to_make_a_module.md:模块创建流程说明,配合
create_module.sh使用。 - src/server/game/:核心玩法逻辑,最终编译进 worldserver,改战斗、拍卖、任务结算看这里。
- src/server/scripts/:按地区、职业、玩法组织的内容脚本,新增副本或 NPC 行为的常用位置。
- data/sql/:数据库结构层,
base/是历史基线,updates/是增量,custom/留给本地私有改动。 - e2e/:Go 编写的协议级 e2e 测试,对着活服务跑,适合给核心改动做回归。
自助排错:6 个高频问题
Q1:docker compose build第一次跑几个小时?正常现象。首次要拉基础镜像并完整编译 C++ 源码,第二次起走缓存会快很多。
Q2:客户端连不上服务器?确认三件事:客户端必须是 3.3.5a;宿主机 3724 和 8085 端口已放行;防火墙/安全组没有拦。容器内端口默认就是这两个值。
Q3:忘记建管理员账号或建错了?docker compose attach ac-worldserver进控制台执行account create <名字> <密码> 3 -1;账号相关数据在acore_auth库,也可以在库里直接查。
Q4:某个模块导致服务端起不来?构建时加-DDISABLED_AC_MODULES="模块名"逐个排除,定位到冲突模块后再看它的日志(默认在logs/目录)。
Q5:改了 SQL 没生效,或者不小心动了 base 库?base 和已合并的 updates 是只读的,改动必须放在data/sql/updates/pending_db_*/下才会被增量执行;动过历史库就直接重建容器里的数据库重来。
Q6:e2e 测试登录全部失败,报 invalid client OS?按e2e/README.md的说法,先把Warden.Enabled = 0(docker 环境可用AC_WARDEN_ENABLED=0),这是测试 harness 的已知兼容问题。
文档与社区:资料入口集中在这
- 配置策略:doc/ConfigPolicy.md
- 日志体系:doc/Logging.md
- 版本变更记录:doc/changelog/master.md,升级前先看
- 模块开发:modules/how_to_make_a_module.md
- 代码规范与测试约定:AGENTS.md、pull_request_template.md,提 PR 前对照
- 讨论与反馈:通过仓库的 issue 和官方社区渠道进行,遇到 bug 附日志和版本信息会更快得到响应
小结
AzerothCore 把 WotLK 服务端的代码、数据库、部署脚本放在同一个仓库里,Docker 路线适合快速验证,原生构建和模块化机制适合长期改造。建议从本地局域网环境起步,改完核心逻辑就用 e2e 测试兜底。本项目仅供学习与研究使用,请勿用于商业运营或传播受版权保护的游戏资源。
【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考