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

3.1 KiB

百人赛远程资源:公共清单与独立 ZIP

百人赛现已接入金字塔使用的 packages/activity-bundles。完整构建、上传和缓存规则见 活动 ZIP 分包与公共清单。

分包与版本

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 仅保留为旧发布维护工具,不参与新客户端构建。

验证

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 合法域名、首次下载、本地缓存、跨前后台的页面版本一致性和阶段按需加载。