TapTap PC 游戏更新机制
TapTap PC 的游戏更新遵循一条默认规则,并为自更新游戏提供一套协调机制:
- 平台默认更新:以开发者中心当前置为线上的包为准。当玩家本地安装的包与线上包不一致时,TapTap 下发更新。该判断基于线上包的设置,不依赖版本号比较。
- 游戏自更新协调:当游戏包内放置
.taptap/meta.json时,TapTap 改为依据该文件版本号与线上包版本号的比较结果决定是否更新。此机制主要用于游戏自更新场景,避免重复提示更新。
判断流程
平台默认更新:跟随当前线上包
开发者在开发者中心将某个包置为线上后,TapTap 会让本地未安装该包的玩家更新到它。切换线上包即触发更新,无需关心版本号大小。
这是绝大多数游戏的更新方式。更新时采用增量更新还是差量更新,由包体状态自动决定,详见 增量更新与差量更新。包体内文件与目录的处理规则,详见 包体更新规则。
游戏自更新协调:通过 .taptap/meta.json 上报版本
游戏通过自身热更新升级后,若开发者随后在开发者中心发布内容相同的更高版本整包并置为线上,TapTap 会因本地包与线上包不一致而再次提示更新。此时该更新的内容与游戏此前自更新的内容一致,对玩家而言是重复更新,影响体验。
为避免这一情况,自更新游戏需在包内放置并维护 .taptap/meta.json。只要游戏包内放置了该文件,TapTap 即启用以下两个版本号的比较:
| 版本号 | 含义 |
|---|---|
| 线上包版本号 | 开发者中心当前置为线上的包对应的版本号。 |
.taptap/meta.json 版本号 | 游戏目录内 .taptap/meta.json 记录的版本号,由游戏热更新时写入。 |
判断规则:
.taptap/meta.json版本号不低于线上包版本号 → 视为游戏已自行更新到位,TapTap 不提示更新。.taptap/meta.json版本号低于线上包版本号 → TapTap 仍按需下发更新。
接入方式详见 游戏自更新版本上报。
实际案例
下图以一款自更新游戏为例,展示版本号随 TapTap 分发更新与游戏自更新的变化过程:
情况速查
| 场景 | TapTap 行为 |
|---|---|
| 自测模式(包未提审 / 审核中,仅开发者自测可见) | 增量更新(块级,仅传输变更块) |
| 正式上线(包已提审通过),玩家本地非当前线上包 | 差量更新(二进制 diff,更新量最小) |
| 本地已是当前线上包 | 不更新,直接进入游戏 |
自更新游戏,.taptap/meta.json 版本号已写为不低于线上包版本号 | 不提示,沿用游戏自更新结果 |
自更新游戏,未维护 / 漏写 .taptap/meta.json 版本号 | 重复提示「更新游戏」(需修复) |