Win11更新竟让老游戏GTA遭遇新挑战?

   时间:2025-04-29 00:32 来源:ITBEAR作者:朱天宇

在游戏MOD制作界,Silent是一位备受尊敬的名字,他不仅以创作各类MOD著称,还擅长逆向工程,为经典游戏注入新生。Silent的日常乐趣在于为那些承载着无数玩家回忆的老游戏打造修复补丁和MOD,帮助玩家解决游戏中遇到的各类棘手问题。

最近,Silent遇到了一起令人困惑的BUG报告。一位玩家反馈,在使用Silent为《GTA:圣安地列斯》制作的修复补丁后,随着Windows 11更新至24H2版本,游戏中的水上飞机Skimmer竟然神秘消失了。这一反馈引起了Silent的注意。

自Windows 11 24H2版本发布以来,Silent陆续收到了多起关于水上飞机消失的BUG报告。起初,他怀疑是自己的修复补丁与新版系统不兼容,但经过与其他玩家的测试,Silent发现即使是没有安装任何MOD的纯净版游戏,在更新至24H2版本后也会遇到同样的问题。

为了深入探究,Silent在虚拟机上搭建了Windows 11 24H2系统,并尝试通过脚本生成水上飞机Skimmer。然而,令人惊讶的是,在执行命令后,游戏主角CJ竟然瞬间飞升至10.3千万亿米的高空,游戏画面随即卡死。这一发现让Silent意识到,问题的根源可能远比想象中复杂。

经过仔细排查,Silent终于找到了问题的症结所在。水上飞机Skimmer模型的边界框Z轴坐标被设定为一个异常值,这是由于游戏配置文件缺少了定义轮子尺寸的参数。在初始化悬挂系统时,由于缺少这一参数,游戏错误地更新了Z轴的上限,导致Skimmer的行为异常。

Silent推测,这一问题的根源可能在于《圣安地列斯》的前作《侠盗猎车手:罪恶都市》中并不存在“飞机”类别,而Skimmer是游戏中仅有的两款可操控飞机之一。因此,在设计上并未定义这些参数。到了《圣安地列斯》中,虽然Skimmer的载具类型被改为飞机,但开发人员却遗漏了添加必要的参数。

在旧版操作系统中,由于内存堆栈的分配和管理方式与新版系统不同,游戏代码在处理完一辆载具的轮子尺寸后,存储这些尺寸的栈内存并未被立即覆盖。因此,水上飞机的数据虽然缺少轮子尺寸信息,但代码却错误地沿用了上一辆载具的轮子尺寸,使得Skimmer得以勉强正常运行。然而,Windows 11 24H2版本的更新改变了内存堆栈的使用方式,使用了更多的栈空间,从而覆盖了这些残留值,最终导致Skimmer的Z轴数值出错。

Silent进一步发现,这一BUG其实早在Xbox版的《GTA:圣安地列斯》中就已经被官方修复,并且这一修复也被沿用到了后续的Android、Xbox 360、PS3以及最终版等多个版本中。然而,在2005年发售的PC原版中,官方却始终没有推送修复补丁来解决这一问题,导致这一BUG潜伏了近20年之久。

对于喜欢钻研老游戏的玩家来说,Silent的这一发现无疑是一个提醒。在升级Windows系统时,需要格外谨慎,因为即使是像《GTA:圣安地列斯》这样的经典游戏,也可能因为系统更新而暴露出潜在的BUG。幸运的是,仍有像Silent这样的MOD作者在默默努力,为这些老游戏注入新的生命,让玩家们的游戏体验更加完美。

 
 
更多>同类内容
全站最新
热门内容