游戏版本更新规则
本文档介绍 TapTap PC 在执行游戏版本升级时对游戏包体中文件与目录的新增、删除与修改策略。
请开发者遵循下列规则,确保增量/差量补丁能够正确生成并高效分发。如果游戏的版本更新由自带启动器完成(不依赖 TapTap),请同时阅读 启动器更新上报接入指南,通过
.taptap/meta.json避免启动器更新后 TapTap 仍提示「更新游戏」。
文件规则
| 旧版本文件状态 | 新 版本文件状态 | TapTap 行为 | 说明 |
|---|---|---|---|
| ❌ 不存在 | ✅ 存在 | 下载新文件 | |
| ✅ 存在 | ❌ 不存在 | 删除文件 | 不校验旧版本文件内容(即使在运行期被修改,也会删除) |
| ✅ 存在 | ✅ 存在且内容相同 | 忽略 | 不校验旧版本文件内容(即使在运行期被修改,也会忽略) |
| ✅ 存在 | ✅ 存在且内容不同 | 仅下载差异块 | 不校验旧版本文件内容;请确保 旧版本文件在运行期未被改写 |
| ❌ 不存在 | ❌ 不存在 | 保留文件 | 运行时生成的文件不会被删除/修改 |
目录规则
包体中的目录(包括空目录)会随包体一起被记录。新旧版本之间的目录差异按以下规则处理:
| 旧版本目录状态 | 新版本目录状态 | TapTap 行为 | 说明 |
|---|---|---|---|
| ❌ 不存在 | ✅ 存在 | 创建空目录 | 安装/更新前 TapTap 会按新版本目录结构提前创建好整个目录树 |
| ✅ 存在 | ❌ 不存在 | 递归删除整个目录 | 目录下任何运行期写入的内容(日志、缓存、用户数据等)也会一并被删除 |
| ✅ 存在 | ✅ 存在 | 保留 | 目录本身不动;目录内文件按上节「文件规则」处理 |
警告
若某个目录在新版本中被移除,TapTap 会通过 RemoveAll 整体清理,目录下运行期写入的文件也会被一并删除。涉及用户数据/存档的目录,请从一开始就放在包体之外的专用目录,避免后续版本调整目录结构时被误删。
开发者最佳实践
存档与用户数据处理
- 将 游戏存档 放置于专用目录(例如
Saves/),并在打包时排除该目录。 - 将 玩家个性化配置(键位、画质、语言等)放置于专用目录(例如
UserSettings/),并排除在包体之外。 - 切勿把用户数据放进包体已包含的目录——若该目录在后续版本被移除,目录下运行期写入的数据将一并被清理。
包内容建议
- 只读原则:包体内文件运行期保持只读,禁止动态改写。
- 路径稳定:相同资源在不同版本中保持一致的相对路径与文件名;目录结构尽量保持稳定,避免在版本间整体重命名或删除目录。
- 移除冗余资源:删除不再使用的旧资源文件,减小补丁体积。
增量/差量更新注意事项
- 当文件在新旧版本中同时存在时,TapTap 自动检测差异,仅下载变动数据块。
- 为获得最佳差量效果,请遵循以下规范:
- 相同文件保持路径与文件名不变。
- 不在目录结构中携带版本号信息。
- 旧版本文件在运行期不得被改写。
- 通过版本控制系统精确管理资源变 动,避免临时文件进入包体。
常见问题 FAQ
Q1: 为什么增量补丁大小仍然接近完整包?
请检查旧版本文件是否在运行期被改写,或资源路径/文件名是否发生变动。
Q2: 运行期动态生成的日志/缓存会被删除吗?
取决于所在目录:
- 若目录仍在新版本包体中,目录内运行期生成的文件不会被删除或修改。
- 若目录在新版本中被整体移除,TapTap 会递归删除整个目录,目录内的运行期文件也会被一并清理。
建议把日志、缓存、用户数据放到包体之外的专用目录,从根本上避开版本切换时的目录回收。