欢迎访问本站!

首页头条正文

usdt不用实名交易(www.caibao.it):GTA 5 祖传代码被修复,这位黑客喜提一笔“年终奖”

admin2021-03-1732

USDT自动充值

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

原题目:GTA 5 祖传代码被修复,这位黑客喜提一笔“年终奖”

泉源:量子位

折磨全球无数 GTA 5 玩家的联机版超长加载时间问题,终于要修复了。

什么?R 星自动改善玩家游戏体验?不存在的。

打开 GTA 5 联机版,要跑 19.8 亿次 if 语句,一支烟的功夫游戏都加载不完。这堪称游戏开发史上更大的 " 屎山 " 代码,存在了 7 年,R 星从没想过要修复……

玩家对 GTA 5 联机版可谓又爱又恨,有人甚至破口痛骂:

直到一位黑客年迈途经,着实忍不了恶臭的代码,取笑完 R 星后,随手按了 " 冲水键 ",直接将守候时间压缩 70%。

鉴于 R 星失误着实太低级太离谱,而这位老哥的方式又太有用,以致无数玩家称他 " 好事无量 "。

若是平均给每个玩家节约 10 秒,全球 500 万玩家一天就能节约 5000 万秒,一年中,节约的总时间也许能有数十年。相当于拯救了十多小我私人的生命!

R 星这才坐不住了,赶忙官宣修复 bug,不只接纳了黑客的方案,还大方的给他奖励了 1 万美元 " 赏金 "。

黑客 " 治病救人 "

不久前,量子位曾经先容过黑客年迈通过逆编译器检查 GTA 5,而且重写代码,一下节约 70% 加载时间的故事。

先来前情回首一下。

简朴地说,就是 GTA 5 联机版加载时间长得太过,有跨越 80% 的玩家要等 3 分钟以上,有的人甚至要等 15~20 分钟。

一位黑客年迈着实忍不了,于是决议开扒 GTA 5 的代码,看看到底是那里出了问题。

首先,他用 Windows 义务治理器,来判断联机版 GTA 5 在启动时,都挪用了哪些盘算机资源。

在 1 分钟的时间分界线上,之前是加载的是单机和联机版通用的基础内容,之后是联机版独占的内容。

可以看到,联机版 GTA 5,加载时挪用大量 CPU 资源至少长达 4 分钟之久,而同时,内存、GPU、硬盘的使用情形险些没有显著转变。

,

Usdt第三方支付平台

菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

以是,问题也许率出在代码上。

黑客年迈说:

我闻到一股烂代码的味道……

为了找出到底那一部门程序卡住了 CPU,他使用了工具 Luke Stackwalker,对 CPU 义务客栈举行采样剖析。

沿着挪用栈往下走,发现问题出在一个 sscanf 函数上。

sscanf 的功效是读取花样化的字符串中的数据,而在 GTA 5 中,它正在读取的是一个 10M 左右,有 63000 多个条目的 *** ON 文件。

这个文件到底是干什么用的?黑客年迈推测,这可能是游戏内购商铺的相关内容。

再看第二个问题,这是一个存储下令,工具是 item,详细是什么不得而知。

然则保留前,有一个 if 语句,逐一对照 item 内项目的哈希值,检查它们是否泛起在某一列表中。

根据他盘算,这一步 if,要执行(63000^2+63000)/2 = 1984531500 次!

没错,守候加载前的十多分钟里,GTA 5 用你的 CPU,执行了 19.8 亿次 if 下令。

云云简朴粗暴的编程思绪,让这位老哥啼笑皆非:

既然工具有唯一哈希值,那为什么不用 hash map?

至于 R 星为什么不修正,有网友推测,最更先,if 的循环次数并没有这么多,而是随着开发,条目不停增多,最后到了积重难返的境界。

而之前的代码结构,谁也不愿意去动。

就是这样一个低级的失误,让全球玩家至今每次打开游戏,都要上演一遍 19.8 亿次的 if 循环……

这是不是堪称游戏开发史上最意外的 " 屎山 " 代码?

若何冲掉 " 屎山 "

第一个问题,黑客年迈接纳 hook 大法,不逐一读取字符串,而是:

hook strlen" 缓存 " 字符串起始和当前长度。若是在字符串局限内函数在此被挪用,返回缓存的值。

网友评论