小游戏
云存档
账号
同步
冲突
SSO

玩家换手机时,他的进度去哪了?

一篇问答:为什么设备 ID 不是身份层、云端存档冲突的三种解法,以及作弊者怎么伪造存档

C

Cross Mini App Team

2026年10月25日 · 1 分钟阅读

玩家换手机时,他的进度去哪了?

玩家换手机时,他的进度去哪了?

一个玩家在你的游戏里泡了六个月,买了赛季通行证,打到 400 关——然后换了新手机,进度没了。客服工单堆起来,商店评论变凶,而根因是你第一天做的一个没意识到其后果的设计决定。下面讲"换手机"要真的等于"接着玩",底层到底得成立什么。

Q:为什么设备 ID 不是存档系统?

因为设备 ID——IDFA、GAID、Android ID——是归因令牌,不是身份。它出厂重置会清、换设备会没,而且越来越被隐私弹窗挡住(ATT、GDPR、平台默认值)。玩家一换硬件,那个 ID 就没了;如果你的进度是挂在它上面的,账号也跟着没了。身份得来自玩家随身带的东西:邮箱、手机号,或 SSO。别的任何东西,都会悄悄把一次手机升级变成数据丢失,而玩家怪的是你的游戏,不是他的系统。

Q:云端存档冲突,怎么解才不删玩家的东西?

最后写入获胜(last-write-wins)是个陷阱:玩家离线玩了三天,一上线,他新鲜的本地进度被周二那份过期的云端文件覆盖。版本向量和操作日志(CRDT)合并干净,但存储和工程量你可能不需要。对休闲游戏,字段级乐观合并是甜点——把货币、关卡、装饰当独立字段分别合并,每个字段取较高或较新的值——冲突率低,几乎不丢东西。坑在:先定什么算真相。服务端权威字段(货币、解锁)必须服务端校验,不能信客户端时间戳。

Q:离线优先还是云端优先?

离线优先:本地先玩、后台同步——弱网下顺,但冲突率更高、作弊面更大。云端优先:每次操作都问服务器——干净,但一断网就不可用,在连通性是例外的市场是致命的。务实答案对休闲游戏是离线优先 + 后台合并 + 对少数要紧字段做服务端校验。你用一点冲突处理,换一个到处都能玩的体验。

Q:怎么阻止作弊者伪造存档?

本地存档是一份明文 JSON,玩家用文本编辑器或内存修改器就能改——货币设到九百亿、解锁一切。防御从协议层开始:任何值钱的东西,别让客户端持真值。货币和解锁服务端签名或存权威,每次同步都校验,再跑异常检测(一天涨了十年货币的不是 bug,是标记)。反作弊不只是事后封号;存档格式本身就该让伪造变得没用。

策略冲突丢失成本适合
最后写入获胜高极小可丢的数据
版本向量 / CRDT无高协作状态
字段级合并低中休闲游戏

参考来源

相关文章

为什么你的 A/B 测试总在骗你?

一篇问答:偷看问题、功效分析、保留组,以及让"胜出"变体成为统计幻象的混杂因素

小游戏
数据分析
A/B 测试
2026年10月25日·1 min read
广告太多会杀掉游戏

频次上限,是今天收入和下个月死掉的游戏之间的旋钮

Mini-Game
Ad Frequency
Load Balancing
2026年10月25日·1 min read
瀑布流还是竞价——广告收入到底怎么最大化?

一篇问答:聚合层、为什么手排瀑布流在悄悄漏钱,以及怎么选聚合 SDK 而不被它自己的 eCPM 骗

小游戏
广告
聚合
2026年10月25日·1 min read