沃资讯
科技 财经 汽车 游戏 数码 资讯 商业

Win11 24H2让《GTA:圣安地列斯》20年老飞机“消失”,真相揭晓

2025-04-24来源:ITBEAR编辑:瑞雪

近期,科技圈和游戏玩家社群中流传着一则关于《侠盗猎车手:圣安地列斯》在Windows 11最新系统版本24H2上的奇异事件。据报道,在这款经典游戏中,Skimmer水上飞机竟然神秘消失了,玩家无法在游戏世界的常规位置找到它。

这一不寻常的现象迅速引起了玩家们的广泛讨论,并最终吸引了SilentPatch项目的开发者Silent的关注。SilentPatch是一个专注于修复老旧游戏漏洞并提升其在现代系统上兼容性的非官方补丁。

Silent最初推测,这个问题可能是由其他游戏MOD或特定的系统配置引起的。然而,经过一系列测试后,他发现即使在未安装任何MOD的纯净版游戏中,只要在Windows 11 24H2系统上运行,Skimmer飞机就会消失无踪。

更令人惊奇的是,当Silent尝试通过游戏内的命令强制生成Skimmer飞机时,游戏角色CJ竟被弹射到了天空中,距离之远达到了惊人的1.087千万亿光年,游戏画面也随之失控或直接崩溃。

经过深入的代码分析,Silent揭示了问题的根源。原来,Skimmer飞机的物理边界框计算出现了错误,其Z值被设置成了一个不合理的天文数字(-4.30747210e+33),导致游戏误判了飞机的位置。进一步追踪发现,这个问题是由于游戏配置文件vehicles.ide中Skimmer的定义不完整,缺少了轮子尺寸参数。

据Silent解释,在《GTA: Vice City》时期,Skimmer被归类为船只,因此无需这些参数。然而,在《圣安地列斯》中,Skimmer被改为了飞机,但Rockstar Games并未更新其配置文件。游戏代码在读取这些数据时未能正确初始化相关变量,导致其值依赖于内存堆栈中的随机数据。

在过去的20年里,在包括Windows 10在内的旧版系统中,Skimmer前一个车辆Topfun的轮子尺寸值(0.7)恰好残留在内存中,这使得Skimmer能够勉强正常运行。然而,在Windows 11 24H2更新中,内存堆栈的使用方式发生了变化,特别是涉及LeaveCriticalSection函数的实现,这覆盖了之前的残留值,导致Skimmer的物理计算完全失控。

Silent强调,这个问题并非Windows 11系统的错误,而是《GTA San Andreas》游戏代码本身的漏洞。长期以来,游戏依赖内存布局的“侥幸”运行。为了解决这个问题,Silent计划在下一版本的SilentPatch中加入相应的修复措施。

对于急于恢复Skimmer飞机的玩家来说,目前有一个临时的解决方案。他们可以手动编辑游戏目录下的datavehicles.ide文件,找到Skimmer的相关行并添加轮子尺寸参数(0.7),这样就可以让飞机重新出现在游戏中。