Files
youle_cocos/docs/superpowers/implementations/2026-09-08-version-xml.md
T
joywayer 35216f75e7 feat: integrate room framework and isolated subgame bundles
Complete room UI and protocol integration, move game definitions and resources behind bundle entries, publish authoritative version XML, and document single-game builds. Include all current resource changes and experiment artifacts.
2026-09-09 03:13:18 +08:00

4.0 KiB

子游戏 version.xml:网页预览与原生发布共用

日常使用

  1. 在 Cocos 启动场景的应用组件 SubgameAssets 中选择 gameKey,并绑定对应游戏页面和房间资源。当前为 erqiwang。
  2. 编辑该游戏唯一的 assets/games/<目录>/resources/<gameKey>/version.xml。
  3. 网页预览直接读取该文件。Web Desktop / Web Mobile 正常构建后,扩展自动将原文件放在输出根目录,与 index.html 同级,不需要手动复制。

当前文件:

  • 二七王:assets/games/erqiwang/resources/erqiwang/version.xml
  • 模板游戏:assets/games/template/resources/Game_Surface_3/version.xml

XML 契约

保留原生既有 XML 声明、game 根节点及 agent/game/channel/version 节点,不新增 market 字段。

  • game/agent@id、game/channel@id:网页身份。
  • game/game@id:所选游戏 gameid。
  • game/version@value:非负安全整数 versionCode,转换为数值后发送至 player_login.data.version。
  • game/version@name:字符串展示版本 version,例如 1.8;登录页显示 v1.8,不由 versionCode 拼造。
  • 各 name 属性保留供原生读取。

网页 marketid 唯一配置位于应用层 app/composition/build-identity.ts 的 WEB_MARKET_ID,当前为 4。XML 不包含 marketid,因此不重复维护该字段。现有显式 URL 渠道/版本调试覆盖仍遵循通用启动解析器规则;日常预览无需 URL 身份参数,直接使用 XML。

原生环境的 agentid、channelid、marketid 仍通过既有 settings/uAgent_3 接口读取,缺失时报错,不回退到网页身份。游戏与版本信息来自 XML。未更改服务器、原生接口名或登录协议。

当前 XML 保留迁移前的联调身份与数值版本 1;展示版本采用原游戏 XML 的名称(二七王 1.8、模板 1.1)。旧 XML 的 versionCode 不覆盖当前联调版本;正式发布需在这一份 XML 中配置部署要求的实际版本和身份。

接入新游戏

game-config.ts 仅指定 versionResource: '<gameKey>/version',不再保存身份和版本。应用注册表引用该配置。

在编辑器中把游戏的 resources 文件夹配置为 Asset Bundle:名称必须是 version-<gameKey>。运行时只加载所选版本包,读取 <gameKey>/version TextAsset,解析后释放该文本资源。使用编辑器操作资源及 meta,禁止手改序列化文件。

构建扩展 extensions/youle-version-manifest 在当前编辑器已启用;新环境需要在项目扩展管理器中启用。它从构建任务真正的启动场景读取游戏选择,检查唯一 XML、合法版本、对应 bundle 元数据和构建结果的 bundle 列表。构建中修改 XML、启动场景或相关元数据会使构建失败,避免生成身份不一致的包。

框架只消费注入身份,不包含具体游戏配置。新增、选择子游戏不需要修改框架代码或资源。本次未实现排除所有未选游戏代码和资源的完整构建裁剪。

验证记录

  • 956 项框架测试、22 项构建扩展测试通过;框架/Cocos 严格类型检查、import boundaries、两款游戏房间资源检查通过。
  • 实际 Cocos Game View:二七王解析 gameid 为当前联调值、versionCode=1、version=1.8;登录页显示 v1.8。创建独立测试组件选择模板后读取到模板 gameid、versionCode=1、version=1.1,未发送业务请求。
  • 同时修复现有场景切换清理问题:隐藏已销毁的加载节点时不再访问其子节点;实际预览确认销毁后 dispose 成功,有效但缺失必要组件的节点仍明确报错。
  • 最终真实 Web Mobile 构建任务 1788872259776 成功,用时 28 秒,输出目录 build/web-mobile-version-xml。构建日志确认扩展在 onAfterBuild 输出根目录 version.xml。
  • 源 XML 与导出根目录 XML 的 SHA-256 均为 6871c9a71f7363261c85de52bd72d1d9fc3cc7dfbdf0c1ef949b11367cb657f7。
  • Web Desktop 已注册同一 hook 并通过注册测试,尚未另跑真实构建;真实原生壳读取未执行。