2016年9月30日,全球总决赛的第一天,严重的玩法bug导致了奥瑞利安·索尔被禁用。10月3日,2016全球总决赛的第四天,铸星龙王重回峡谷。这是一个关于错误的时间出现错误的bug以及幕后人员全力进行挽救的故事。
旧金山 - 1:30PM(北京时间),9月30日
北美的TSM和中国的皇族(RNG)进行了2016总决赛第一天的最后一场比赛。开局仅2分钟,TSM中单Bjergsen就因RNG中单Xiaohu所选择的奥瑞利安·索尔画面表现的异常请求了暂停。龙王的被动星源之准完全消失了。
LUKE RINARD, 奥瑞利安·索尔的设计师:作为奥瑞利安·索尔的设计师,看到他出现在这种级别的职业赛场上让我欣喜若狂。虽说以前也有人选过他,但是拜托…这是总决赛啊!而且第一天就有人选了!接着游戏暂停了,我当时的反应就是“额…赌五毛是奥瑞利安出问题了。”游戏里有巴德和奥瑞利安的时候我经常这么干,通常我这么说的时候问题都不在他身上。可是这一次狼来了。
BRIAN BOSSE, 工程建筑师:我当时在家看直播,看到现场暂停了,每次看到比赛暂停我的心就会噗通一下。我向上天祈祷“音频问题,音频问题,老天保佑是音频问题”,因为经常就是它们的问题(通常修复也很快速)。这一次却不是。
AMELIA VON HADEN, 玩法程序员:我们当时正看比赛呢,通过重放看到问题时我们都疯了…“啊!!!别啊!”
RAVEN KEENE, 裁判长:遇到bug出现的反应永远都是一样的:想办法收集足够多的信息。当时的情况是,有裁判提出Bjergsen报告他看不到环绕奥瑞利安·索尔的行星。我们有台上的录音,视角能提供玩家提出有争议的地方。因为从我的观战客户端看上去一切正常,但是调出Bjergsen的视频文件能够清楚地看到他遇到的问题。
我们重启了客户端,刚开始没出问题。我们觉得“恩,大概是资源未能正确加载引起的吧,不用重赛了。”然而不到一分钟的时间,同样的问题再次出现,这就说明重启已经不能解决这个问题了。我们不得不转向下一个解决方案,重赛。
NICK TROOP, 电子竞技现场制片人:看到我们事先并不知情的某个英雄可能在接下来的赛事中都被禁用,会让我们产生某种程度上的挫败感,哪怕这是个非常独特和意外的bug,就像奥瑞利安·索尔。
洛杉矶 – 2PM,9月30日
随着奥瑞利安·索尔被禁用,一场找到造成bug出现原因和确定可能修复方案的比赛开始了。一队Rioters火速赶往洛杉矶办公室进行深入研究。
BRIAN BOSSE:我一直都在内部聊天群组里,突然群组就炸锅了“龙王的弹体出问题了。”我曾参与了那个系统的部分制作,所以我告诉自己“好吧,该拿点真本事出来了。”通过第二次暂停确定这个问题不会消失之后,我全副武装赶往办公室开始寻找问题根源。
AMELIA VON HADEN:我立即打开群组查看那个bug到底是怎么回事。作为一名玩法程序,我很清楚游戏代码,所以如果是游戏相关的地方出了问题,我觉得我能帮上忙。而且我之前也在索尔的研发团队呆过一段时间,所以我更加了解他的被动技能。我在总决赛的分流频道看到有人在讨论这个bug。因为我有机会能够做点什么,我告诉自己“这搞毛啊,赶紧去公司。”
BRIAN BOSSE:我在驱车前往办公室的路上一直在想“比赛现场到底出什么事了,这个问题会影响全部事情吗?”当时已经没有后手了。大家都下班了,常规的反馈架构不能用,任何能帮忙的都得去救火,我正好有时间,所以我也去了。
旧金山 – 3PM,9月30 日
伴随本日赛事结束,旧金山的电子竞技团队立即着手重现这个bug。这是鉴别问题寻找解决方案的关键步骤。此时全国范围内有3个团队一起解决这个问题:旧金山的电子竞技团队,洛杉矶的研发团队,以及位于蒙特利尔专门致力于质量保证的团队。
RAVEN KEENE:我们花费了数小时排除一切我们能复制的步骤。我们竭尽全力模仿当时在台上出现的场景,然后提取各种变量。我不记得最后做了多少次测试,但是起码重启了20+次游戏,不停的重复想要找到造成这样的原因。
NICK TROOP:最早是一名工程师使用单人模式工具复制了这个情况。他通过让游戏里同时出现差不多9个奥瑞利安·索尔,虽然在正常游戏里不可能,但是从工程师的立场出发能够看到一些端倪,我们也能对结果进行测试。了解问题前禁用某个英雄一天时间是一回事,可要让Raven决定是否整个系列赛都禁用这个英雄就完全是另外一回事了。我们不想让那种局面出现——这对观众不公平,对选手也不公平。
RAVEN KEENE:这个案子如此有趣的地方就在于形势非常的不清晰。我们开始用职业选手的账号查看,因为我们的测试账号无法重现这个问题。这不禁让我们思考,问题是不是出在账号上呢?因为成品和变量都是恒定的,而我们唯一会改动的东西只有账号。
洛杉矶 – 5PM,9月30日
南加州团队第一次成功复制再现当时的场景并开始逆反向工程以寻找问题的根源。
BRIAN BOSSE::遇到这种问题要做的第一件事是明白事实——你知道了什么,不知道什么。当时我们除了Bjergsen的屏幕录像之外什么都没有。我们尝试过在本地机器上读取客户端,完全模仿奥瑞利安·索尔的走位,但就是不能重现。擦。这应该是个很简单的事情才对。
AMELIA VON HADEN:我们坐在那,分析了几个小时的代码,我修改了单人模式工具,这样就能加入20个零延迟的观战者,而非原本的1个。我想测试多人观战是否会有影响。挂着20个观战者,我的电脑就快爆炸了,其他人都在尽力重现当时的画面。
BRIAN BOSSE: 快到下午5点时,我们复制出了一次当时的场景,但是造成的原因不一样。一位研发人员在机器上同时运行了服务器和10个客户端才勉强重现了那个场景。测试50次或者100次才出现1次,我们只能坐等,而龙王身上还有一条弹道出现。
AMELIA VON HADEN:我们终于还是成功重现了那个场景,大家的反应都是“我X,终于有了。接下来要怎么办?”这是在我们没法连接除错器的版本中重现的,所以大家立即找到自己的编程机重现场景。试了大概20次后,我也获得了这个画面!虽然还有一条弹道,但好歹有东西了。就像拆弹一样,连接上除错器后,我们得打电话给Brain,因为代码是他写的,他最清楚。要是有谁能够解决这个问题,那非他莫属。
BRIAN BOSSE:虽然这和台上出现的问题并不完全一致。但我们有了一个实例,能用除错器研究,看看到底弹道出了什么问题导致这种情况发生。利用观战模式回溯当时赛场的情况,这足够我们在接下来的5个小时里忙翻天了。但结果…我们从头到尾花了足足12个小时,包括中间小憩了一会。最后一名队员于晚上7:30离开,到凌晨12点时,第一名队员就又回到公司了。
洛杉矶 – 0:30 AM,10月1日
根本原因已经找到,Rioters纷纷回到公司为第二天的工作做准备。
LUKE RINARD:等我第二天回到公司时才发现,奥瑞利安应该会被禁用个一到两天,但是我们已经有修复方案了。我挺吃惊的,因为还不到中午…你怎么就有修复方案了?Brain熬了一个通宵,他桌上全是汽水罐。他看着略憔悴但仍在坚持工作,而且等不急要修复这个问题了。
AMELIA VON HADEN:Brian汽水罐摆得还行。
RAVEN KEENE:一张满桌汽水罐的照片疯传。起码有几十罐啊!
LUKE RINARD:我路过Brain的桌子,他正在给某人解释问题的原因——他用手势解释着工程上的东西。我们正打算问他到底怎么回事,他隔壁的一位工程师收到“嘘,别说话,他好像发现了什么不得了的事情。”
BRIAN BOSSE:我们一直怀疑是观战模式的问题,因为这是赛场和直播唯一的区别,因为比赛用的是另外一套观战系统。他们一直在台上用Bjergsen的账号复制当时的情景,想要缩小问题范围,“这问题什么时候出现?”“什么时候不出现?”有了这些信息,再加上先前通过除错器解析的单弹道的怪问题,我们终于能为这次事件画上因果线了。
旧金山 – 1:00 AM,10月1日
随着问题根源被找到,修复补丁出炉,电子竞技团队在总决赛第四天宣布,奥瑞利安·索尔将重登赛场。
RAVEN KEENE:我们的第一反应是“老天保佑”,然后感激Bosse大神做出的努力。接下来就要寻找修复的办法了。这个问题好修复吗?对本次事件来说,是的,因为我们能调整账号。随即就要想办法通知拳头全体可能会受到这个bug影响的人。在这个案例中,由于是和账户有关,这就包含了全体观战者以及国际观战者,所以现场制作团队耗费了一番大工夫才联系上所有的人。我们必须得让参赛队伍第一时间知道,包括关注训练赛的时间,因为我们必须得在训练赛开始前修复这个问题。
BRIAN BOSSE:续了一口大命。我们从束手无策到此刻稍微能喘一口气,一切都会好起来的。事情能进行到这一步简直不可思议。
LUKE RINARD:我向所有我有印象参与了补救的伙伴们进行了鼓励,告诉他们这件事情对我意义非凡。来帮忙的都是恩人。他们的反应却是…“那啥,必须的。”感觉他们就像在说“你谢我干嘛?我周四大半夜跑来加班不是很正常的事吗?”
BRIAN BOSSE:我想强调没有任何人是被强制召唤来的——有几个工程师,几个负责质保的人,还有产品团队的几个家伙自愿来帮忙。没有人强迫任何人。看到大家愿意花费这么长的时间修复这个问题真的很奇妙。
AMELIA VON HADEN:我觉得应该是使命感吧。当时时间挺晚的,大多数人都回家了,而且第二天还有新比赛。我了解出现的问题,他们也需要我的帮助。我只是直觉上觉得…该这么做。让全球观众享受最好的体验,这是最棒的事情了。我知道很多团队在这个英雄上下了苦功,而且观众也非常想看到这个英雄登场,我只是觉得…靠,不能让他被禁啊。
旧金山 – 11:30 AM,10月3日
奥瑞利安·索尔于总决赛第四天正式重返赛场,被CLG中单Huhi选中对阵ROX Tigers。Huhi用他最喜欢的英雄碾压了韩国冠军,帮助CLG拿下一胜。
AMELIA VON HADEN:感觉我们就像制作英雄的;每当他们看到别人使用这个英雄时,总会担心他们表现不够好,或者这个英雄要出问题…通过这次的索尔事件,我们看到别人选用时也会感同身受,祈祷这次不要再出幺蛾子。
RAVEN KEENE:当看到他再次被选用时,整个人都“紧绷”了。比赛前几分钟我们大气都不敢出。直到你再度看到他的精彩操作时,整个气氛才有所改观;团队内部的,外部的,选手的,观众的,一切都不一样了。故事的主角从奥瑞利安·索尔——被禁用者,进化为了奥瑞利安·索尔——毁灭者。
LUKE RINARD:CLG用他蹂躏了对手…我的想法是“这个角色太强了,可能过于强力了。”看到他在世界赛上呼风唤雨,我满足极了。周一的比赛结束后我再次对所有提供过帮助的人表示了感谢!我告诉他们他的表现让我整个月都会有好心情。而决赛第三场比赛看到他再度被选用,如此重要的比赛——这让我那个月余下的时间都满是好心情。
全球总决赛是英雄联盟举办的国际赛事中最为重要的,而在总决赛上损失一名重要如奥瑞利安·索尔的英雄,无论对玩家还是观众来说都是绝望的。Rioters争分夺秒携手修复了这个问题,确保全世界最好的职业选手齐聚一堂争夺召唤师奖杯的同时能使用任意英雄。如果你还有兴趣深入了解这个bug的技术细节,点击查看Brain Bosse的原因分析。