ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AzerothCore WotLK 3.0.0 版本演进全解析:更新日志、升级路径与核心变更源码实证

AzerothCore WotLK 3.0.0 版本演进全解析:更新日志、升级路径与核心变更源码实证 AzerothCore WotLK 3.0.0 版本演进全解析更新日志、升级路径与核心变更源码实证【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk本文围绕仓库内 doc/changelog/previous-versions/v3.x.md 这一 3.0.0 版本官方更新日志展开。它记录了 AzerothCore魔兽世界巫妖王之怒开源模拟器首个大版本 3.0.0 从开发到发布的完整变更清单涵盖核心玩法修正、数据库内容完善、配置系统扩展、CI/构建链现代化与大规模代码重构。阅读本文后你将理解该项目的版本发布策略与升级路径能按主题快速检索 3.0.0 的数百项变更并通过仓库源码与配置文件逐一验证代表性改动的真实落点。文档定位一份记录 3.0.0 里程碑的官方更新日志v3.x.md是 AzerothCore 变更日志体系中面向旧版本的归档文件与其并列的还有 doc/changelog/master.md当前 master 分支的持续更新日志与 doc/changelog/previous-versions/v2.x.md更早版本。它并非教程型文档而是一份以 1271 行 commit 记录为核心的发布说明前半部分陈述版本策略与升级指引主体部分是按时间倒序排列的变更条目每条遵循type(Scope): 简述的约定式提交格式fix/feat/refactor/chore/test/docs/style等。当前仓库根目录的 acore.json 显示项目版本为17.0.0-dev意味着 master 分支已远超前于 3.0.0阅读这份历史日志正是理解项目从哪里来、关键能力何时引入的最佳入口。版本策略为什么不建议使用 Release而应始终跟踪 master文档开篇给出两条硬性建议这是整个项目持续集成节奏的核心约定始终使用 master 分支的最新版本不要从 Release 下载源码而应按照官方安装指引拉取最新 master。这一策略与仓库根目录下的 apps/ci 目录结构相互印证该项目在 3.0.0 时期完成了从 Travis CI 到 GitHub Actions 的迁移changelog 中的feat(CI): migrate from Travis to GitHub Actions并持续加入 Ubuntu / macOS / Windows 三平台构建、clang/gcc 多编译器支持、模块编译检查、待处理 SQL 导入检查等流水线feat(CI): add Windows to the CI、feat(CI): add macOS to our CI、fix(CI): do not run core_build on forks、feat(CI): check if pending sql has procedure or function。正是这种每日多次验证 master 可编译、可导入、可运行的机制让官方敢于公开宣称最新 master 比历史 Release 更可靠。升级路径从 pre-3.0.0 服务器平滑迁移文档第二项核心内容面向服务器运维者提供了从 3.0.0 之前版本升级到最新 master 的指引。虽然在仓库内无法保存外部 Wiki 链接的完整内容但升级的核心难点——数据库结构随版本不断演进——在本地仓库中有充分的落地证据数据库更新文件按库分目录组织data/sql/updates/db_auth、data/sql/updates/db_characters、data/sql/updates/db_world并配套pending_db_*目录管理尚未合并的待处理脚本3.0.0 期间引入的数据库合并Database Squash机制如今沉淀在 apps/DatabaseSquash 工具集含 DatabaseSquash.sh、DatabaseExporter、VersionUpdater其说明文档 apps/DatabaseSquash/databasesquash.md 与 data/sql/base/database-squash.md 详细解释了如何把累计数千个增量 SQL 合并为一份干净的 base 数据库合并后的基础库位于 data/sql/basedb_auth / db_characters / db_world 三库的完整结构。因此对运维者而言3.0.0 的升级路径在工程上的含义是先备份旧库 → 拉取最新 master → 编译新核心 → 导入合并后的 base 库并执行全部 updates 目录下的增量 SQL。changelog 中的fix(DB): sql update chain for all DBs、feat(CI): add commit hashes to the automatic SQL import等条目正是这套更新链在 CI 中自动验证的体现。3.0.0 变更总览六大主题逐一解读日志主体覆盖了 2019-02-17 至 2021-01-25 约两年的开发成果这一时间窗也由文档中 contributors 图表的起止参数标注。按变更性质可归纳为六大主题下面逐类列出代表性条目并解释其技术含义。主题一核心玩法与战斗系统修正Core3.0.0 对战斗、法术、副本与首领战做了大量修正其中可举证的典型条目包括fix(Core/Spell): Paralytic Poison、fix(Core/Spell): Killing Spree range、fix(Core/Spell): Earthliving weapon proc——毒药、杀戮盛筵射程、大地生命武器触发的具体规则修正fix(Core/SpellMgr): Death Plague stacks、fix(Core/SpellMgr): Thorns should not miss——法术层数与荆棘术命中规则fix(Core/Unit): ranged auto-attack sound issue if a player attacks target not in LOS、fix(Core/Unit): melee attack through LoS——远程/近战攻击的视线Line of Sight判定fix(Core/Creature): dead creatures spawn position on respawn、fix(Core/Creature): Implement CREATURE_FLAG_EXTRA_GHOST_VISIBILITY、fix(Core/Creature): Implement INHABIT_ROOT——生物刷新位置与标志位实现fix(Core/Battleground): Arena team queue protections、fix(Core/BG): do not start new BGs if there are BGs with free slots、refactor(Core/BG): improvements to the queue system——竞技场队伍排队保护与战场排队优化fix(Core/Raid): Eyes activate when endboss dead in Naxxramas、fix(Scripts/Ulduar): Yogg-Sarons portals、fix(Core/Raid): Putricide mutated abomination being energized by players、fix(Core/Raid): Vault of Archavon stomp——纳克萨玛斯、奥杜尔、冰冠堡垒等团本的关键机制修复feat(Core/Opcodes): Implement CMSG_CHANNEL_MODERATE、fix(Core/Opcodes): Implement CMSG_GROUP_SWAP_SUB_GROUP——聊天频道主持与小队换组的客户端协议实现fix(Core/Guild): Implement gender in guild、fix(Core/Guild): Crash during money deposit / withdrawal——公会系统的性别字段与存取款崩溃修复fix(Core/Mail): avoid big mail loading/saving time, only load 50 mails at a time——邮件加载优化避免大邮箱卡顿。主题二配置系统大规模扩展Core/Config3.0.0 把大量硬编码参数迁移为可配置项changelog 中feat(Core/Config): .../feat(Core/Conf): ...系列条目尤为密集。下面这些新增配置项至今仍可在世界服务器配置模板 src/server/apps/worldserver/worldserver.conf.dist 中直接找到变更条目3.0.0 引入当前配置文件中的对应参数默认值feat(Core/Config): allow initial (free) amount of Guild Bank tabsGuild.BankInitialTabs0feat(Core/Conf): allow to change the cost of the guild bank tabsGuild.BankTabCost0~Guild.BankTabCost51000000 ~ 50000000feat(Core/Config): Arena points - Games requiredArena.GamesRequired10feat(Core/Config): Added pet experience rateRate.Pet.LevelXP0.05feature(World/Config): Implement MaxWhoListReturnsMaxWhoListReturns49feat(Core/Player): Additional option for worldserver config parameter InstantFlightPathsInstantFlightPaths0feat(Core/Config): CONFIG_INTERVAL_SAVE玩家保存间隔配置—feat(Core/Config): configurable BG Respawn Timers战场重生计时器配置—feat(Core/Config): Enable/Disable Debug BG/Arena、feat(Core/Conf): Move BG rewards to config、feat(Core/conf): Move arena charters cost to config战场/竞技场相关配置组—feat(Core/Config): make stop time for creatures with WP movement configurable、feat(Core/Config): Parameter to set all creatures with WP movement active路径点移动相关配置—feat(Core/SpellMgr): Worldserver option for ICC buff冰冠堡垒 Buff 开关—其中公会银行标签页的购买成本是一条完整的配置链Guild.BankInitialTabs控制公会创建时免费解锁的标签页数量Guild.BankTabCost0-5依次定义第 1~6 个付费标签页的购买价格以铜币计默认依次为 100 万、250 万、500 万、1000 万、2500 万、5000 万。运维者可通过修改这两组参数自由调整服务器的公会经济节奏。主题三数据库与游戏内容完善DB数据库内容修正占据日志的最大篇幅覆盖生物、任务、掉落、区域刷新、翻译与副本数据代表性条目包括fix(DB/Creature): ...系列——从艾尔文森林到冰冠冰川的地图生物修正如fix(DB/Creature): Darkshore、fix(DB/Creature): Barrens、fix(DB/Creature): Stratholme、fix(DB/Creature): Desolace、fix(DB/Creature): Deadmines、fix(DB/Creature): Shadowfang Keep、fix(DB/Creature): Wailing Caverns几乎覆盖全部旧世界与副本fix(DB/Quest): ...系列——数千条任务文本与流程修正如fix(DB/Quest): Taken by the Scourge、fix(DB/Quest): Shadow Vault Decree、fix(DB/Quest): The Black Boxfeat(DB/locales): Import deDE locales (Part 01~15)、feat(DB/locales): Import deDE quest locales from TrinityCore、fix(DB/Locale): Add several entries for frFR——德语、西班牙语、法语等多语言内容的大批量导入最终落地为 data/sql/updates/db_world 中的 locale 相关 SQLfeat(DB/smart_scripts): Improved ...系列——遍布旧世界的 SmartAI 脚本增强如Improved Elwynn Forest、Improved Duskwood、Improved Stranglethorn Vale、Improved Hinterlandschore(DB/VerifiedBuild): Creatures/Items/Gameobjects/Quests 3.1.x~3.3.5——按客户端 3.1~3.3.5 客户端数据版本校准数据库字段fix(DB/GameTables): correct links to data from gt* DB tables、fix(DB/points_of_interest): Improved points_of_interest table——游戏数据表与兴趣点表重构。主题四脚本系统与 SmartAIScripts / SAIfeat(Core/AI): CU_SAI - Custom Target Options、feat(Core/AI): CU_SAI - Custom Event Options、feat(Core/AI): CU_SAI - set creature in combat outside of dungeon——SAI 自定义目标与自定义事件选项极大扩展了数据库脚本能力feat(Core/SAI): new Actions Polar Coords System Offset Relocating——新增 SAI 动作类型与极坐标偏移系统feat(InstanceScripts): new scriptable function DoAction()——副本脚本新增DoAction()可编程入口feat(Core/Hook): New GlobalScript hook、feat(Core/Hook): New PlayerScript hooks、feat(Core/Hooks): Adds hooks for start and stop game events、feat(Core/Hook): OnFirstLogin can now make persistent changes——脚本钩子系统持续扩张为 modules 模块体系提供扩展点feat(Core/Script): Hooks for custom arena teams/types、feat(Core/CFBG): Added support module mod-cfbg、feat(Core/Battlegrounds) Reworked enhanced bg system for modules——为自定义战场/竞技场模块如 mod-cfbg铺路的钩子设计。主题五工程现代化与代码重构Core/refactor这是 3.0.0 在工程质量维度最重要的收获C 标准升级feat(Core): enable C17、feat(cpp): enable C17 support、Switch to C14 to solve compilation issues——项目由此进入现代 C 时代移除 ACE 依赖refactor(Core): replace ACE atomic types with standard C、refactor(Core): remove ACE types、refactor(Core): remove ACE_Singleton、refactor(Core/sLog): improve singleton management、refactor(Core/sWorld): improve singleton management、chore(Core/MapUpdate): switch from ACE_Method_Request to PCQ——逐步以标准库/自研实现替换 ACE 库clang-tidy 现代化改造apply clang-tidy modernize-use-nullptr、modernize-use-override、modernize-use-emplace、modernize-pass-by-value、modernize-loop-convert、modernize-deprecated-headers、modernize-raw-string-literal等一批条目命名空间统一refactor(Core): rename namespaces and macros to acore、feat(Core/Misc): replace all prefix preprocessor defines from CompilerDefs with AC_——为后续模块生态奠定acore前缀规范库结构重组feat(Core/Shared): added new library - shared、feat(Core/Library): Rename shared library to common、refactor(Core/Game): restyle game lib with astyle——代码风格统一与库边界梳理。主题六CI、Docker 与工具链feat(CI): migrate from Travis to GitHub Actions、feat(CI): add Windows to the CI、feat(CI): add macOS to our CI、feat(CI): add support for GCC、feat(CI): upgrade to Ubuntu 20.04、feat(CI): actions/cachev2——三平台、多编译器、带缓存的持续集成feat(Docker): update to Ubuntu 20.04 more improvements、feat(Docker): Container healthchecks、fix(Docker): Persistent volumes for ac-database、fix(docker): garbled cjk characters in docker——Docker 部署体验含中文乱码修复相关配置见 docker-compose.yml 与 apps/dockerfeat(MMAPS/mapbuilder): restore ability to work with custom MapIDs 1000、feat(Core/Tools): mmaps working with mapID 1000——自定义地图 ID 的 mmaps 支持feat(CMake): show version when running cmake、feat(Cmake): set minimal support version 3.8、feat(Cmake/Build): Use interface targets for inheriting flags and definitions——构建系统规范化test: add code coverage report、feature(testing-automation): unit tests with Google Framework、test(Formulas.h): GetGrayLevel, GetColorCode, GetZeroDifference——单元测试体系建立对应今日的 src/test 与 e2e 测试目录。代表性变更的源码级验证为证明日志条目与代码现状的一致性下面选取五项能力进行源码核验。1. 公会银行标签页免费额度与价格feat(Core/Config): allow initial (free) amount of Guild Bank tabs与feat(Core/Conf): allow to change the cost of the guild bank tabs两项配置如今可直接在 src/server/apps/worldserver/worldserver.conf.dist 中读到完整定义Guild.BankInitialTabs 0 # 公会创建时免费解锁的银行标签页数量 Guild.BankTabCost0 1000000 # 第 1 个付费标签页价格铜币 Guild.BankTabCost1 2500000 Guild.BankTabCost2 5000000 Guild.BankTabCost3 10000000 Guild.BankTabCost4 25000000 Guild.BankTabCost5 50000000这组参数即核心配置与游戏经济之间的桥梁BankInitialTabs决定免费档位BankTabCost0-5决定后续购买成本两者组合即可定制服务器的公会经济节奏。2. 宠物经验倍率feat(Core/Config): Added pet experience rate对应 src/server/apps/worldserver/worldserver.conf.dist 中的# Rate.Pet.LevelXP # Description: Experience rate for pets. Rate.Pet.LevelXP 0.05默认 0.05 倍表示宠物仅获得玩家经验的 5%与暴雪原始设定一致运维者可按需调高。3. 竞技场点数所需场次feat(Core/Config): Arena points - Games required对应 src/server/apps/worldserver/worldserver.conf.dist 中的Arena.GamesRequired 10用于控制竞技场结算时玩家必须完成的场次门槛。4. GetFreeInventorySpace() 背包容量判断feat(Core/Player): implement GetFreeInventorySpace()声明于 src/server/game/Entities/Player/Player.h实现在 src/server/game/Entities/Player/PlayerStorage.cpp。该方法用于法术/拾取前的背包空间预检实际调用点可见于 src/server/game/Spells/Spell.cpp 与 src/server/game/Spells/Spell.cpp——当目标背包空间为 0 时阻止相关法术效果生效是满包即拒机制的基础设施。5. 新的任务条件类型fix(Core/Condition): Implement CONDITION_QUESTSTATE与fix(Core/Conditions): Implement CONDITION_DAILY_QUEST_DONE对应 src/server/game/Conditions/ConditionMgr.h 中的条件枚举CONDITION_DAILY_QUEST_DONE 43——判断当日日常任务是否已完成CONDITION_QUESTSTATE 47——按状态掩码判断任务状态1未接取2已完成8进行中32失败64已奖励。其解析逻辑分布于 src/server/game/Conditions/ConditionMgr.cpp条件求值与 src/server/game/Conditions/ConditionMgr.cpp条件持久化使任务链、NPC 交互可以按玩家任务状态动态变化。贡献者规模两年开发周期的社区缩影文档末尾记录了完整的致谢名单与Top dev-contributors图表入口并注明统计区间为 2019-02-17 至 2021-01-25。名单中包括项目核心维护者与大量模块/工具开发者如 FrancescoBorzi、Kitzunu、Helias、Nefertumm、Rochet2、Yehonal 等是 3.0.0 由社区协作完成的最直接证据。结语3.0.0 作为现代化起点的意义纵观 v3.x.md 的 1271 行记录3.0.0 不只是一个修复了大量 bug 的版本更是 AzerothCore 工程化转型的分水岭C17 与 clang-tidy 规范化了代码基线ACE 的移除降低了依赖复杂度GitHub Actions 三平台 CI 与单元测试保证了变更质量配置系统的扩张把服务器调优权交还运维者而数据库合并机制与 SQL 更新链则为后续所有版本的平滑升级奠定了基础。如今 master 分支的 master.md 延续着同样的日志纪律——理解这份历史日志也就理解了该项目高频迭代、master 即发布、日志即档案的工程哲学。完整变更明细数百条原始 commit 记录仍保留在 doc/changelog/previous-versions/v3.x.md 中需要逐条核对时可直接查阅原文。【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表