解读游戏更新:什么会坏,为什么会坏
一个补丁会改动三样不同的东西,修复代价天差地别,而大家说的“更新偏移”只是其中之一。
作者:Lethal Research
补丁一出,版本一下线,每个频道里的第一个问题都是:要多久?诚实的答案取决于补丁改动了三样东西中的哪一样,而这三样修复起来代价相差很大。头一个小时里,谁也说不清改的是哪一样,所以早期给出的时间估计,只是一个披着信息外衣的猜测。你能做的,是弄懂这项工作的大致形态,懂到不需要估计也能读懂状态面板的程度。
从版本的角度看,补丁改变了什么
读取游戏内存的软件,依赖一份描述,说明某一版游戏程序内部各种东西放在哪里:有哪些结构、结构里有什么、怎样从一个结构走到下一个。补丁会替换可执行文件及其数据,于是这份描述里的每一行,都成了对一个已经不存在的程序的陈述,要么碰巧依然成立,要么不再成立。从机械意义上说,什么都没有坏,只是描述对不上了。
三类改动
| 改了什么 | 意味着什么 | 修复通常是什么样 |
|---|---|---|
| 数值挪了位置,结构没变 | 版本原先掌握的东西都还在,形式也一样,只是换了位置 | 最简单的情况。重新测量、测试、发布。以小时计,而不是以天计 |
| 结构变了 | 某个结构增加、删除或重排了字段,容器类型变了,或者某个子系统被重写了 | 描述需要重新推导,而不是重新测量。以天计,而且有些功能回来时可能不再是原来的样子 |
| 反作弊组件变了 | 新的驱动版本、新的扫描,或者开始检查以前从没读过的东西 | 这根本不是游戏代码的问题。正是这种情况,可能让一个版本无限期下线,或者需要重新编译固件 |
一个补丁可能属于其中任意一种、任意两种,或者三种同时出现——而从外部看,在第一天根本分辨不出来。
为什么“更新一下偏移就行”有时说得没错
因为第一行确实存在。当一个补丁只属于第一行时,这句话准确描述了要做的事:重新测量、验证、发布。它之所以误导人,是因为被当成了对三行的通用描述。第二行根本不是测量,而是要先搞清楚新的结构是什么样,才谈得上对照它去测量。一次引擎或工具链的更换,可能把所有功能同时推进这一行。而第三行压根就不是游戏代码的事。
固件存在于卡上的 Flash 里,游戏推送的任何东西都写不进去。如果某款游戏打了补丁,而你的卡依然能被识别,那变了的就不是固件。随游戏补丁一同到来的反作弊驱动更新,是另一件事,后果也不一样。去查看你那款产品已发布的状态,而不是凭怀疑就重刷固件。
真正要紧的是第三行
反作弊的改动是代价高的情况,因为它们移动的是靶子,而不是地图。上个月看起来毫不起眼的配置,现在可能就不再是了:某个程序开始读取一个以前没人读过的字段,而你的硬件什么都没变。换新保障正是为这种情况而设的。保障时长是你订单里所购档位的属性,不是谁在频道里能承诺的东西。这也是为什么一个版本恢复上线并不是一次性的事件:软件可以已经是最新的,而它周围的环境仍在变化。
第一个小时里该做什么
- 1不要以为什么都没变就直接启动——这是代价最高的一种猜测
- 2查看状态面板上你那款游戏的条目,看的是状态,而不是频道里的情绪
- 3读卡片上的两个日期:我们的发布日期,以及游戏自己的补丁日期
- 4把 “更新中” 当作等待,把 “测试中” 当作尚无结论,把 “暂无状态” 当作未知,而不是没问题
- 5不要凭猜测重刷固件;中断的写入,是这套方案里最常见的自己把卡刷成砖的方式
- 6如果需要和你订单相关的具体信息,就带上订单号在订单工单里问,而不是在公共聊天里问
调整你自己的预期
有两条校准值得采纳。第一,速度不等于质量。几小时就恢复的版本,遇到的是代价最低的那种改动;花了一周的版本,可能需要做真正的工作。这两件事都说明不了它恢复之后能撑多久。第二,没有时间估计,比一个笃定的估计更有信息量。改动的性质还不清楚时就报出恢复时间的人,报的是一个他不可能知道的数字,而这个习惯,也可靠地反映了他跟你说的其他一切。
状态面板的设计,就是让这一切不需要任何人写公告也能读懂:每个版本一行,各带一个有日期的状态;旁边是游戏自己的补丁日期;我们读不到自己的数据源时,宁可什么都不显示,也不显示绿色。补丁之后,这两个日期就是全部的来龙去脉:局面是什么时候变的,我们最后一次查看又是什么时候。
对本文有疑问?在 Discord 提问
全部文章