![[2019-07-19] Dev Blog: Exploits Header](https://ubistatic19-a.akamaihd.net/resource/zh-tw/game/news/rainbow6/siege-v3/devblog_exploits-min%20%281%29_352787.jpg)
在本篇的开发日志中,我们将探讨游戏漏洞以及我们解决它们的方式,还有漏洞修正与后续游戏漏洞之间的关联性。

时间轴
5 月 11 日至 12 日
- 5 月初,有三项游戏漏洞引起了《Rainbow Six Siege》社区的广大关注,它们分别是:Clash 的护盾、人员杀伤地雷和机动护盾错误。
- 随着团队于周末期间深入观察上列情况,我们很快便发现这些问题属于优先事项。
5 月 13 日
- 团队开始着手调查这些游戏漏洞。我们的第一步,是亲自准确、持续地重现这些游戏漏洞,以便我们了解问题所在并辨认主要肇因。
- 初步调查的结果显示,我们需要时间才能掌握问题的规模,而快速修正是不可能的。
- 随着游戏漏洞持续于社区间流窜,我们开始讨论如何在短期间减轻其影响的计划。
5 月 15 日
- 《Rainbow Six Siege》专案领导阶层的人员开始了关于游戏漏洞的讨论。我们必须掌握并量化手边资料、准确的事件规模以及游戏内漏洞所造成的影响。
5 月 16 日
- 16 日早上,检讨过手边资料后,我们决定暂时停用 Clash、人员杀伤地雷与机动护盾。
- 各团队都暂停了各自的例行性工作,随着我们探讨关于停用 Clash、人员杀伤地雷与机动护盾可能的选项,以及相关手法。
- 我们开始进行测试。一旦某项可能的解决方案成形就马上投入测试。我们归纳出五项处理方案,而在后续多次的失败后,终于在最后一项方案上取得成果。
5 月 17 日
- 急促地进行完第一轮与第二轮测试且获得成功的结果后,作为紧急应变手段,我们启动了停用 Clash、人员杀伤地雷与机动护盾的「开关」。
5 月 24 日
- 我们理解到若要完整修复问题是需要时间的,因为其流程会碰触到核心系统程序,主要和将资料封包传送至服务器的顺序有关。然而,我们知道移除 Clash 以及其他关键装备会严重影响整体游戏机制,所以各团队便同时动工,试图创造出多种可容错、可安全实施的方案。
6 月
- 随后数周,关于游戏漏洞的回报又再次浮现了。
- 不过幸亏「开关」已经准备好在手边了,我们可以快速反应新的问题回报并停用 Clash 和 IQ。
- 截至目前为止,团队已经针对游戏漏洞潜在肇因总结出一项完整、可行的修正方案了。内部测试已经传出乐观结果,但我们仍须将修正方案投入测试服务器进行更多的大规模测试,以便我们日后能放心地将之投入于正式服务器中。
6 月至 7 月
- 6 月底,「全域排序」首先实施在 PC 平台,并稍后于 7 月实施至家用主机。
- 在这段时日中,我们观察全域规模的排序改变之效果,以及是否有任何衰败迹象。
「开关」+ 可容错方案

在一部分团队着手设计解决方案时,另一部分团队也以更可靠的短期解决方案为目标开始研究,并同时发展各项短期可容错方案。对于这些针对游戏漏洞所设计的「开关」与可容错方案,我们从来没将它们视作完整修复的方式;比较起来,它们其实是团队在评估移除 Clash 和两件装备后对游戏完整性的冲击后,所下达的短期决定。它们随后便实施至正式服务器中,而我们也鼓励社区回报任何后续事件。
移除特勤干员并调整装备栏内容对我们来说不是个轻松的决定。我们必须尊重玩家为解锁游戏内容所投入的时间与努力,并了解移除核心游戏机制会对《Rainbow Six Siege》主流玩法与生态系统产生重大影响。但面对着如此的情况,我们认为坐等完整修复的方式出炉不是个办法。我们得替玩家尽快、尽可能安全地解决游戏漏洞,使游戏恢复正常运作。
可容错方案必须符合数项条件:(一)如外科手术般精细,避免造成任何种类的游戏崩溃或预期外的附带伤害;(二)容易修改,以供快速应变;(三)测试需求低,以供快速实施。我们最后产出的特勤干员与装备「开关」,是我们针对游戏漏洞的第一应变措施,而我们将这种「开关」视为最后手段,是我们准备和测试可容错方案时的极短期解决方案。
什么是「全域排序」?

在《Rainbow》游戏当中,每个特勤干员、装备、手榴弹、护盾、摄像机、墙壁与植物都是物件。《Rainbow Six Siege》的每个物件一旦发生了任何动作或改变,都会向服务器传送信息(封包)。举例来说,当你使用装备时,你的特勤干员会依序传送「我正在穿戴装备」与「我正在使用装备」等信息。此时,你的装备也会同时向服务器传送如「装备已启动」与「装备已部署」等信息。接着服务器会将这些信息传给和你身在同场对战中的其他玩家。
先前,这些信息传送到服务器的顺序只会在分别针对单一物件时保证正确,而这代表信息在传送至服务器期间有可能会发生遗失或顺序错乱等问题导致失败。我们网络协定中的这项缺失便是发生游戏漏洞的管道,透过同时大量传送多种动作,提高了这些网络信息无法正确收发的可能性。结果导致服务器中出现错误的复制信息,使得玩家的游戏无法正常显示适当且符合原始预期的动作。

我们的解决方案——「全域排序」——修改了网络引擎,使之可以在全域规模下排序所有信息。信息本身也改以多重形式传送,确保资料能够确实传送。现在,所有玩家的游戏都能收到顺序正确的信息,而复制信息也能在各个玩家间确实同步。

当我们认知到所有持续存在的游戏漏洞都跟这种核心程序有关时,我们必须在实作「全域排序」时保持战战竞竞的态度。我们得确保如此的改变不会产生负面影响。最终,虽然「全域排序」此项改变会造成网络带宽额外的负担,我们认为以这种些许的代价换取「全域排序」所带来的益处实属值得,于是促成此决策向前推展。
这对未来代表的意义

实施「全域排序」后,单场对战中所有玩家都能接收到统一复制的动作,这些动作现在以全域规模排序,与以往客户端规模有所不同。我们已经评估且衡量过额外的网络带宽负担,虽然此负担会稍有增加,但不会影响到各位的游戏体验。此举应能避免任何关于信息传送顺序错乱的后续问题,还有其馀相似的游戏漏洞。
这些游戏漏洞和它们对社区造成的影响,也凸显了特勤干员与装备「开关」的价值,还有我们必须于正式服务器中更完善控制特勤干员与装备栏配置的重要性。至此,我们也开始投入更多资源,以确保有任何后续游戏漏洞出现时,我们能达成快速应变的目标。