# 百人赛远程资源:公共清单与独立 ZIP 百人赛现已接入金字塔使用的 `packages/activity-bundles`。完整构建、上传和缓存规则见 [活动 ZIP 分包与公共清单](activity-bundles.md)。 ## 分包与版本 `cloud_rise_home` 保留在本地分包;`art`、`matching`、`stage1`、`stage2`、`stage3` 仍为五个独立远程 Bundle,父目录 `assets/cloud_rise` 是普通目录。每个远程 Bundle 分别生成哈希命名 ZIP,共用 `remote/manifest.json`,不再递增 `assets/cloud_rise/version.json`。 代码包中的组件脚本仍本地发布,ZIP 只包含资源。修改脚本、home、公共字体或其他本地依赖仍需发布新客户端。 ## 加载时机保持不变 - 活动可参与时,先准备 home 和版本信息,再准备 art、matching。 - 点击开始时,同时准备 matching 和目标 stage;匹配页准备好就显示。 - 查看进行中的挑战或结算时,只准备当前 stage;结算仍包含在 stage 内。 - 依赖顺序仍为 home → art → 目标页面。不新增全阶段下载或首页活动请求。 - 原匹配、模拟头像、重试、报名、确认、胜负及奖励流程不变。资源加载完成后仍交给原预制体和业务逻辑。 现在每个首次使用的远程 Bundle 会下载完整 ZIP;按需粒度为 Bundle,不再是 Bundle 内的单个资源文件。 ## 多包一致性与释放 五个远程包组成 `cloudRise` 依赖组,页面和在途 Prefab 加载持有该组。保留引用本身不请求网络,首次到达原有版本检查或远程加载位置时才选择清单。 页面使用期间固定同一清单快照。即使 CDN 已发布新版本、应用进入新检查周期,后续首次使用的 stage 仍从该快照对应的历史 ZIP 加载。页面关闭、节点销毁且在途加载完成后,下次加载可切换到新清单。切换时依赖页先于 art 释放,服务层 Prefab 缓存按实际 Bundle 对象失效;不清理其他活动资源。 清单不可用时,五包必须匹配之前保存的同一组清单;缺失或损坏的包报错,不猜测下载地址、不混搭多个版本。活动运行和业务状态仍由原接口管理。 ## 发布迁移 1. 重启 Creator 2.4.15,完整构建微信小游戏。 2. 从 `build/wechatgame-activities/remote/` 上传哈希 ZIP,最后上传公共 `manifest.json`。 3. 发布新的微信代码包。新构建不安装旧 `cloud-rise-package` 加载器,也不生成旧百人赛发布目录。 4. 保留服务器旧 `remote/cloud_rise/` 目录供旧客户端使用,并保留历史 ZIP 供已有页面继续按旧快照加载。 旧 `packages/cloud-rise-package/pack.js` 与 `runtime.js` 仅保留为旧发布维护工具,不参与新客户端构建。 ## 验证 ```powershell node --test tools/test-activity-bundles.cjs tools/test-activity-resource-integration.cjs node --test tools/test-cloud-rise-bundles.cjs tools/test-cloud-rise-prefab.cjs tools/test-cloud-rise-package.cjs tools/test-cloud-rise.cjs ``` 发布前需在微信开发者工具与真机检查 CDN 合法域名、首次下载、本地缓存、跨前后台的页面版本一致性和阶段按需加载。