为了改善加载问题,《GTA Online》玩家自己写起了游戏代码
文/易碎
不知道你是否有这样的经历:和三五好友相约到《GTA Online》里干上一票,兴奋地打开steam,在熟悉的黄底黑星logo闪过后,等待游戏加载完毕…之后,所有人对着洛圣都上空的云彩发呆。
《GTA 5》线上模式(即《GTA Online》)加载缓慢的问题已经困扰了玩家很多年,虽然硬件已经迭代了好几代,R星却迟迟没有对这个问题做出什么改善。
最近,这场历时七年的痛苦等待,被一位玩家深入研究游戏的代码,这位叫t0st的玩家通过一顿调整,成功地将《GTA Online》的加载时间减少了近70%。
在他的一项投票调查中,81.2%的参与者加载时间都在3分钟以上,甚至有不少人需要等待10分钟以上
上个月,GitHub用户tostercx,也就是t0st,上传自己调整的代码,不过当时他表示,自己并不打算随意修改代码,顶多算是证明了r星的代码有多糟糕,他还很友好地提供了整个过程的细节。和大量玩家一样,t0st在被GTAOL的载入问题反复折磨了好久之后,终于忍无可忍了。于是他用代码拆解工具解开了游戏的程序代码,发现了问题的所在——
《GTA Online》的加载问题归因于一些优化极差的代码,以及包含63000个条目的10MB JSON文件,每个游戏素材被调取之后,整个检索流程就重新进行一遍,然后周而复始,一遍又一遍…t0st发现这个检索过程要完成1,984,531,500次检索。
再加上游戏只从t0st的CPU上的一个内核加载,这似乎成了游戏加载最大的瓶颈。不过,t0st尝试了几次优化代码的修复之后,就能够将加载时间缩短到更容易接受的1分50秒,比原来的时间快了69.4%。
对原本动辄几分钟甚至几十分钟的载入时间而言,这无疑是一个巨大的进步,而这其中需要的工作量——按照t0st本人的说法,应该花费不了一个开发人员超过一天的工时。t0st甚至给R星留下了一些建议,希望这些优化建议有望付诸实施,毕竟,考虑到玩家已经忍受了相当长的一段时间,R星也是时候做点什么了。
于是,R星就采纳了。
R星:谢谢!
虽然实际上花的时间比想象中要长一些,但是R星确实证实了t0st的的发现是准确的,而且修复正在进行中。在R星的一份公告中显示:“经过彻底调查,我们可以确认玩家t0st确实透露了一个与《GTA Online》PC版加载时间相关的游戏代码问题,我们会进行改进,并在未来的补丁中推出。” 随后R星就和t0st取得了联系,并表示将通过自家的bug bounty计划奖励t0st一万美元的奖金。
得到了修复代码的R星效率倒是非常的高,晚上8点就已经将补丁正式上线了,据玩家反馈的结果来看,加载时间确实是有所改善的。说到这个bug bounty计划,实际上不是R星独有,而是很多企业的选择,企业们需要“白帽黑客”的帮助去维护他们的程序或网络安全。
每当白帽黑客发现了任何会对网络安全产生威胁的系统漏洞,都会申请上报并解决好,从而能得到丰厚的报酬,这是一种现代很流行的悬赏活动,名为“Bug Bounty Program“。就像是针对企业程序或网络安全的清洁工,“白帽黑客”会接受企业请求帮助他们清理网络上的各种威胁。而R星的bug bounty计划则始于2019年,不为别的,就是为了解决自家的另一款产品——《荒野大镖客》在线模式的bug问题。
t0st就这么成了一位“白帽黑客”,以往其他的白帽黑客通常都是为了高额收入才参与企业招募,而t0st的情况有些不同,他是快被《GTA Online》的载入时长逼疯了,才不得不出手。而R星还“破例”把t0st“先斩后奏”的行为列入了bug bounty计划,一切看起来皆大欢喜。不过,别忘了t0st是怎么说的,这事儿交给任何一个程序员都不需要消耗一天以上的工时,而R星足足等了7年才搞定…究其原因,估计还是挣钱太容易了,所以说,到底是谁还在买《GTA 5》!