Win11 的更新,给 20 年前的 GTA 带来了新 BUG

作者 : 轉身陌路,🌚🌚 -- 本文共1374个字,预计阅读时间需要4分钟 发布时间: 2025-05-1 共121人阅读
也想出现在这里? 联系我们

Silent 是一位小有名气的游戏 MOD 作者,同时也是专攻逆向工程的游戏开发者。他平日里最大的乐趣便是为那些旧世代的经典游戏制作各种 MOD 和修复补丁,这一过程中,自然也包括帮助玩家们解决各类稀奇古怪的 BUG。 

比如最近,Silent 就收到了一份令他颇感费解的 BUG 报告——有位使用了他制作的原版《GTA:圣安地列斯》修复补丁的玩家反映,在系统更新至 Windows11 24H2 版本后,游戏内的水上飞机 Skimmer 离奇消失。

 

早在去年 Windows11 推出了 24H2 版本过后,Silent 时不时就会收到水上飞机消失的 BUG 报告。 

他原本以为可能是自己的修复补丁与新的系统版本无法兼容,但在邀请了其他玩家测试过后,他发现未安装任何 MOD 的纯净版游戏在更新到了 24H2 版本后也可能遇到同样的问题。

为了验证类似的问题是否会在自己的电脑上复现,Silent 搭建了 Windows11 24H2 虚拟机,并使用脚本生成了水上飞机 Skimmer。结果在他执行完命令的瞬间,主角 CJ 突然原地起飞至 10.3 千万亿米的高度,游戏画面直接卡死。

 

经过一番排查,Silent 发现问题的根源在于水上飞机 Skimmer 模型的边界框 Z 轴坐标被设定为了一个极其不正常的数字,而这个错误源于游戏配置文件缺少了定义轮子尺寸的参数,导致在初始化悬挂系统时,错误地更新了 Z 轴的上限。 

 

至于为何会出现这样的问题,Silent 认为可能是在前作《侠盗猎车手:罪恶都市》里并不存在 ” 飞机 ” 这一类别,Skimmer 是游戏中唯二能被玩家操控的飞机,因此在设计上并没有定义这些值。 

到了《圣安地列斯》中,Skimmer 的载具类型被改为飞机 ,但开发人员却忘记了添加额外的参数。

在旧版操作系统中,内存堆栈的分配和管理方式与新版系统不同。游戏代码在处理完一辆载具的轮子尺寸后,存储这些尺寸的栈内存并没有被立即覆盖。简单来说就是,水上飞机的数据缺少轮子尺寸信息,代码错误地沿用了上一辆载具的轮子尺寸,意外地让 Skimmer 得以勉强正常运行。

Windows 11 24H2 更新改变了内存堆栈使用方式,使用了更多的栈空间,从而覆盖了残留值,最终导致 Skimmer 的 Z 轴数值出错,并由此引发了后续的一系列 BUG。

 

当然,水上飞机消失的 BUG 与 Windows 11 的 24H2 版本更新无关,因为 WinAPI 函数使用堆栈的方式之类的内容不受约束,随时可能修改。真正的问题在于游戏代码本身存在编写失误,以及官方对游戏后续更新的支持力度不足。 

借此机会,Silent 还检查了《GTA:圣安地列斯》其他版本的二进制文件。他发现,早在最初的 Xbox 版中,官方其实就已经修复了这个 BUG,并且这一修复沿用到了后来发布的 Android、Xbox 360、PS3 乃至最终版等多个版本。

 

不过,在 2005 年发售的 PC 原版当中,官方始终没有推送修复补丁解决这一问题,这个 BUG 便也潜伏了近 20 年之久。 

如果换做是别的游戏,这类离奇的 BUG 或许永远不会得到解决,并就此成为玩家们口口相传的都市传说。值得庆幸的是,哪怕是 20 年前的 GTA,时至今日仍有大批 MOD 作者在尽力优化游戏体验,排查各种潜在的 BUG。

这个案例对于那些喜欢钻研老游戏的玩家们来说,也算是又提了个醒:升级 Windows 系统,还是谨慎为妙。

 

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

007主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
007卡盟- » Win11 的更新,给 20 年前的 GTA 带来了新 BUG

常见问题FAQ

购买下载地址
007卡盟题上新啦!!

发表回复

提供最优质的资源集合

立即查看 了解详情
© 2023 Theme by - 007卡盟 & WordPress Theme. All rights reserved 京ICP备18888888号
购买地址 享更多特权,建议使用QQ登录