首頁>科技>

近日一位駭客T0st表示,他已經解決了多年來導致“Grand Theft Auto Online”的載入時間過於冗長的問題。目前他已經發布了DLL修復檔案,可將那些冗長的啟動時間縮短大約70%。

七年來,GTA Online(Grand Theft Auto Online)的電腦載入時間一直未得到有效解決。儘管對於發行商Take Take來說,GTA Online是可觀收入的來源,也對硬體進行了總體改進,但它的啟動速度仍然十分緩慢。去年的一項匿名Reddit民意調查發現,大約有一半的玩家在等待3到6分鐘才能載入遊戲,約有35%的玩家等待更長時間才能開始遊戲。

並且當玩家在開啟單人GTA 5時,載入速度較Online版快許多倍時,這個問題就更難理解了。

剝絲抽繭,查詢問題

T0st表示,為了弄清楚問題,他們首先對自己的CPU進行了效能分析,以試圖弄清為什麼遊戲在載入過程中將單個CPU執行緒佔用了超過四分鐘的時間。使用工具轉儲程序堆疊並在記憶體中執行時分解了GTA程式碼後,T0st發現了一組函式似乎正在解析一個10MB JSON檔案,其條目總數超過63,000。

該JSON檔案似乎是“網店目錄”,該目錄描述了GTA Online玩家可以使用遊戲內貨幣購買的每一項。而解析一個10MB的檔案不應該出現這樣的問題,但在當前環境下卻導致大規模減速發生。

一方面,用於解析JSON字串的特定函式(在本例中為sscanf)顯然在讀取每條資料後反覆執行耗時的strlen檢查函式。T0st表示,僅快取該字串長度值以加快檢查速度,就可以單獨減少50%以上的載入時間。

解析完所有這些JSON資料後,GTA Online似乎以一種極其低效的方式將其載入到陣列中,隨著整個陣列的增長從頭開始檢查整個陣列是否存在重複項。T0st寫道,用可以快速檢查重複項的雜湊表代替該過程可單獨減少大約25%的載入時間。

結合這兩個修復程式,T0st表示, GTA Online的載入時間從測試機器上的六分鐘減少到了不到兩分鐘。那些對結果感興趣的人可以從T0st的原始碼構建類似的DLL。但是,這樣做很容易引起了遊戲的反作弊檢測,因此玩家需要自己承擔風險。

最後T0st表示,“一個開發人員最多可以花一天的時間來解決它”。希望此問題引起新的關注,使開發商Rockstar能夠早日解決類似問題。

10
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 極兔J&T,背後是新電商和步步高系