Files
MatchMaster/docs/cloudRise-remote-package.md
T
2026-10-16 15:02:14 +08:00

46 lines
3.1 KiB
Markdown

# 百人赛远程资源:公共清单与独立 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 合法域名、首次下载、本地缓存、跨前后台的页面版本一致性和阶段按需加载。