IT之家 4 月 24 日消息,科技媒體 NeoWin 昨日(4 月 23 日)發(fā)布博文,報道稱在 Windows 11 24H2 系統(tǒng)設(shè)備上,運行《俠盜獵車手:圣安地列斯》游戲,Skimmer 水上飛機完全消失,無法在游戲世界中找到。
這一現(xiàn)象在玩家社區(qū)引發(fā)熱議,最終引起了 SilentPatch 開發(fā)者 Silent 的注意。SilentPatch 是一個致力于修復(fù)老游戲漏洞、提升兼容性的非官方項目。
游戲常規(guī)位置已不見 Skimmer
Silent 最初懷疑問題可能來自其他 MOD 或特定系統(tǒng)配置,但隨后在未安裝任何 MOD 的純凈版游戲上,只要在 Windows 11 24H2 上運行 Skimmer 就會消失。
Silent 在 Windows 11 24H2 環(huán)境下測試,發(fā)現(xiàn) Skimmer 確實從常規(guī)位置消失。更為詭異的是,當(dāng)他通過游戲內(nèi)命令強制生成飛機后,角色 CJ 會被彈射到天空中,距離高達(dá) 1.087 quadrillion light-years(約 1.087 千萬億光年),游戲畫面失控或直接卡死。
顯示高度 1.087 quadrillion light-years
Silent 進(jìn)一步分析代碼,發(fā)現(xiàn)問題源于 Skimmer 的物理邊界框(bounding box)計算錯誤,其 Z 值被設(shè)置為一個荒謬的數(shù)字(-4.30747210e+33),導(dǎo)致游戲誤判飛機位置。
深入追蹤后,Silent 發(fā)現(xiàn)問題根源在于游戲配置文件 vehicles.ide 中 Skimmer 的定義不完整,缺少輪子尺寸參數(shù)。
這源于《GTA: Vice City》時期 Skimmer 被歸類為船只,無需這些參數(shù),而在《San Andreas》中改為飛機后,Rockstar 未更新配置。游戲代碼在讀取數(shù)據(jù)時未初始化相關(guān)變量,導(dǎo)致其值依賴于內(nèi)存堆棧中的隨機數(shù)據(jù)。
過去 20 年,在 Windows 10 等版本中,Skimmer 前一個車輛 Topfun 的輪子尺寸值(0.7)恰好殘留在內(nèi)存中,意外讓 Skimmer 勉強正常運行。
Windows 10上并未調(diào)整堆棧值
但 Windows 11 24H2 更新改變了內(nèi)存堆棧使用方式(涉及 LeaveCriticalSection 函數(shù)),覆蓋了殘留值,導(dǎo)致 Skimmer 的物理計算徹底失控。
在 Windows 11 24H2 版本中,新的臨界區(qū)實現(xiàn)方式修改了更多的堆棧空間。
Silent 強調(diào),這并非 Windows 11 的問題,而是《GTA San Andreas》代碼本身的漏洞,長期依賴內(nèi)存布局的“僥幸”運行。他將在下一版 SilentPatch 中修復(fù)此問題。
玩家目前可手動編輯游戲目錄下的 data\vehicles.ide 文件,找到 Skimmer 行并添加輪子尺寸參數(shù)(0.7),即可恢復(fù)飛機。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.