GTA5線上模式加載速度緩慢的原因找到了

「看雲模擬器」或將成為歷史。

長久以來,GTA5玩家們深受遊戲異常緩慢的載入速度困擾。雖說遊戲已經發售七年有餘,玩家群體或多或少都提升了設備配置,讀取線下故事模式的速度也縮短至1-2分鍾。

但是線上模式的GTAOL似乎沒有受到玩家配置提升的影響,亦沒有在這七年里得到R星的任何優化。從進入遊戲看見R星的巨大LOGO,到成功進入線上模式獲得角色的操控權,這一過程仍然需要花上數分鍾。

在暢游洛聖都之前,停留在洛聖都的天上「看雲」,成了每位GTAOL玩家的日常。

GTA5線上模式加載速度緩慢的原因找到了人人都是雲玩家

根據Reddit上7個月前發起的某項271人參與的不記名投票,僅有少數坐擁高端配置PC或次世代主機的玩家能夠在3分鍾內進入GTAOL,享受不到這種體驗的玩家則占據了81.2%。

GTA5線上模式加載速度緩慢的原因找到了

玩家們也試過尋找GTAOL載入速度奇慢無比的原因。有人將加載慢的問題歸結於GTAOL的P2P戰局系統,系統強制擁有不同網絡環境的玩家互連,數據同步困難致使加載緩慢。也有人認為,硬盤的讀取速度會影響從遊戲文件中讀取模型的速度,進而影響加載速度。

GTA5線上模式加載速度緩慢的原因找到了

此外在玩家社群中還流行着一種玄學,即先進入故事模式再進入線上模式,比起從主菜單直接進入線上模式會快個幾秒。

然而這樣的玄學並沒有技術宅T0ST最近發佈的補丁來得實在。他只是破解並重寫了一下程序代碼,便把GTAOL的加載時間縮短了近70%。

T0ST上個月重新拾起GTAOL,他的老電腦配置不算高,讀取線上模式大概需要6分鍾左右。T0ST無法理解一部擁有七年歷史的在線遊戲讀取時間為何仍要如此之久,便結合網絡搜索結果與自用電腦的情況着手展開研究。

GTA5線上模式加載速度緩慢的原因找到了

T0ST首先同時打開了GTA5與Win10系統的任務管理器。任務管理器顯示,當GTAOL進入讀取畫面,電腦的硬盤占用率完全可以忽略不計;網絡占用率一開始很高,在兩分鍾後也降到了較低的水平。

值得注意的是,CPU的占用率在這幾分鍾里居高不下,始終保持在60%-70%左右,CPU的八個核心處理器中只有一個在持續運作。

GTA5線上模式加載速度緩慢的原因找到了

T0ST所使用的CPU單核性能並不優秀,因此讀取GTAOL的速度大幅落後於同等配置;但這無法解釋遊戲讀取時對CPU的異常高占用。由於他不可能從R星那里要到源代碼,他只好自己着手反匯編,找到那份耗盡CPU效能的文件,並破譯文件中一部分未經嚴格加密的代碼。

這份占用CPU的文件負責導入一份10MB大小的JSON文檔,文檔記錄了遊戲中玩家能夠買到的所有物品——載具、設施、武器,加起來大概有63000個條目。

T0ST發現,遊戲代碼導入文檔與物品的效率奇低無比。首先,代碼每次解析JSON文檔中的一項物品後,都會重新計算文檔中的字符數量,這就需要63000次計算。

其次,代碼解析一項物品後,需要讀取這項物品的相關數據。每樣物品都有與之鏈接的數據,例如物品售價、一輛車的時速、一把武器的屬性等等。物品與物品數據之間通過散列算法得出的特定值一一對應,這個特定值有如這一物品的身份證號,便於代碼查詢。

為了防止「身份證號」重復,導致文件沖突、遊戲報錯,每次遊戲導入一項物品及其數據之前,代碼都會例行檢查其他所有物品的算法值避免出現重復,這種檢查還要重復63000次。

GTA5線上模式加載速度緩慢的原因找到了

T0ST算了一下,GTAOL的讀取工作共計需要約1984531500次計算,這對CPU來說確實是很大的工作量。

然而對文檔字符的數萬次重復計算本身毫無意義,且物品與物品數據對應的算法值經T0ST驗證,都是獨一無二的,根本不會出現重復,因此在這近2億次的計算中,絕大部分的計算都在浪費用電。

GTA5線上模式加載速度緩慢的原因找到了

於是T0ST自己編寫了兩個補丁。針對第一個問題,T0ST創建了一個緩存,當R星的代碼嘗試計算文檔字符數量的時候,會讀取緩存里的數據,將計算次數從63000次減少到僅讀取緩存的1次。第二個問題就更好解決了,T0ST讓代碼跳過了檢查算法值的步驟,直接省去了上億次的計算。

有了這兩個補丁,GTAOL在T0ST電腦上的讀取速度一躍縮短為1分50秒,整整提升了69.4%。

GTA5線上模式加載速度緩慢的原因找到了

R星團隊七年都沒有解決的問題,T0ST一個人不到一天便搞定了。2月28日,T0ST發表了一篇博客記錄他的測試結果,並公開補丁及源代碼供玩家們下載。

不過他也指出,補丁對於不同電腦的優化效果必定存在差異。另外,使用補丁可能觸發遊戲的反作弊機制,進而導致賬戶封禁。

鑒於R星對於GTAOL修改與破解文件的行為一向毫不手軟,T0ST只能希望R星看到相關報導後放過自己,完善遊戲從未修改過的代碼,讓「看雲模擬器」成為歷史。

來源:遊研社