GTA5线上模式加载速度缓慢的原因是什么?

GTA5线上办法加载速度缓慢的原因找到了
长久以来,GTA5玩家们深受游戏异常缓慢的载入速度困扰。尽管游戏现已出售七年有余,玩家团体或多或少都跋涉了设备配备,读取线下故事办法的速度也缩短至1-2分钟。

可是线上办法的GTAOL如同没有遭到玩家配备跋涉的影响,亦没有在这七年里得到R星的任何优化。从进入游戏看见R星的巨大LOGO,到成功进入线上办法获得人物的控制权,这一进程仍然需求花上数分钟。

在畅游洛圣都之前,停留在洛圣都的天上“看云”,成了每位GTAOL玩家的日常。

人人都是云玩家

依据Reddit上7个月前建议的某项271人参加的不记名投票,仅有少量坐拥高端配备PC或次世代主机的玩家可以在3分钟内进入GTAOL,享受不到这种领会的玩家则占有了81.2%。

玩家们也试过寻觅GTAOL载入速度奇慢无比的原因。有人将加载慢的问题归结于GTAOL的P2P战局体系,体系强制具有不同网络环境的玩家互连,数据同步困难致使加载缓慢。也有人认为,硬盘的读取速度会影响从游戏文件中读取模型的速度,然后影响加载速度。

此外在玩家社群中还盛行着一种形而上学,即先进入故事办法再进入线上办法,比起从主菜单直接进入线上办法会快个几秒。

可是这样的形而上学并没有技能宅T0ST最近发布的补丁来得真实。他只是破解侧重写了一下程序代码,便把GTAOL的加载时间缩短了近70%。

T0ST上个月从头捡起GTAOL,他的老电脑配备不算高,读取线上办法大约需求6分钟左右。T0ST无法了解一部具有七年前史的在线游戏读取时间为何仍要如此之久,便结合网络查找作用与自用电脑的状况着手翻开研讨。

T0ST首要一起翻开了GTA5与Win10体系的使命管理器。使命管理器闪现,当GTAOL进入读取画面,电脑的硬盘占用率彻底可以忽略不计;网络占用率一开始很高,在两分钟后也降到了较低的水平。

值得注意的是,CPU的占用率在这几分钟里居高不下,一向保持在60%-70%左右,CPU的八个中心处理器中只需一个在持续运作。

T0ST所运用的CPU单核功用并不优异,因而读取GTAOL的速度大幅落后于持平配备;但这无法解释游戏读取时对CPU的异常高占用。因为他不可能从R星那里要到源代码,他只好自己着手反汇编,找到那份耗尽CPU效能的文件,并破译文件中一部分未经严峻加密的代码。

这份占用CPU的文件担任导入一份10MB巨细的JSON文档,文档记载了游戏中玩家可以买到的悉数物品——载具、设备、兵器,加起来大约有63000个条目。

T0ST发现,游戏代码导入文档与物品的功率奇低无比。首要,代码每次解析JSON文档中的一项物品后,都会从头核算文档中的字符数量,这就需求63000次核算。

其次,代码解析一项物品后,需求读取这项物品的相关数据。每样物品都有与之链接的数据,例如物品价格、一辆车的时速、一把兵器的特征等等。物品与物品数据之间通过散列算法得出的特定值一一对应,这个特定值有如这一物品的身份证号,便于代码查询。

为了防止“身份证号”重复,导致文件冲突、游戏报错,每次游戏导入一项物品及其数据之前,代码都会例行检查其他悉数物品的算法值防止出现重复,这种检查还要重复63000次。

T0ST算了一下,GTAOL的读取作业估量需求约1984531500次核算,这对CPU来说确实是很大的作业量。

可是对文档字符的数万次重复核算本身毫无意义,且物品与物品数据对应的算法值经T0ST验证,都是绝无仅有的,根柢不会出现重复,因而在这近20亿次的核算中,绝大部分的核算都在浪费用电。

所以T0ST自己编写了两个补丁。针对第一个问题,T0ST创建了一个缓存,当R星的代码查验核算文档字符数量的时分,会读取缓存里的数据,将核算次数从63000次削减到仅读取缓存的1次。第二个问题就更好处理了,T0ST让代码跳过了检查算法值的进程,直接省去了上亿次的核算。

有了这两个补丁,GTAOL在T0ST电脑上的读取速度一跃缩短为1分50秒,整整跋涉了69.4%。

R星团队七年都没有处理的问题,T0ST一个人不到一天便搞定了。2月28日,T0ST宣告了一篇博客记载他的查验作用,并点破补丁及源代码供玩家们下载。

不过他也指出,补丁关于不同电脑的优化作用必定存在差异。其他,运用补丁或许触发游戏的反作弊机制,然后导致账户封禁。

鉴于R星关于GTAOL修正与破解文件的行为一向毫不手软,T0ST只能希望R星看到相关报道后放过自己,完善游戏从未修正过的代码,让“看云模拟器”成为前史。