2021年03月02日 17時00分00秒

ハッカーが「グランド・セフト・オート:オンライン」のロード時間を70%も削減することに成功

by downloadsource.fr

車両を盗んだり通行者を撃ち殺したりといった暴力的内容が特徴の超人気ゲーム「グランド・セフト・オート 5」のオンラインモードである「グランド・セフト・オート:オンライン(GTAオンライン)」は、最大30人が同時に街中で大暴れするというハチャメチャな内容に加えて「ロード時間の長さ」も有名でした。そんな悪名高いローディング問題について、あるハッカーが独力でロード時間を70%も削減することに成功。自身のブログでその方法を公開しています。

How I cut GTA Online loading times by 70%
https://nee.lv/2021/02/28/How-I-cut-GTA-Online-loading-times-by-70/

Hacker reduces GTA Online load times by roughly 70 percent | Ars Technica
https://arstechnica.com/gaming/2021/03/hacker-reduces-gta-online-load-times-by-over-70-percent/

GTAオンラインのロード時間を70%も削減することに成功したのは、ハッカーのT0ST氏。T0ST氏は7年ぶりに起動したGTAオンラインのロード時間が何一つ改善していないと気づいたことをきっかけに、「なぜこんなにもロード時間が長いのか?」について独力で分析してみることにしたとのこと。

タスクマネージャを使ってどのリソースがボトルネックになっているのかを調べたT0ST氏は、CPUこそが原因だと当たりを付けます。GTAオンラインは読み込みに際して、シングルモードと共通のリソースをロードした後にCPUのコアを1つだけ占有するという不可思議な挙動をしており、その間はディスクの読み書きもネットワークの通信もGPUの処理もメモリの使用もほとんど行っていませんでした。

T0ST氏はCPUプロファイラであるLuke Stackwalkerを使って実行中のプロセスのスタックと現在の命令ポインタの位置を出力し、メモリ内で処理されているGTAコードの逆アセンブルを実行。その結果、合計6万3000個のエントリを持つ10MB超のJSONファイルを解析する関数を発見しました。

この関数は難読化されていましたが、T0ST氏はリバースエンジニアリングツールのProcess Dumpで難読化を突破。そして、問題のJSONファイルが「GTAオンライン上のゲーム通貨で購入できる全アイテムのリスト」だと気づきました。

現代のPCの処理速度をもってすれば10MB程度のJSONファイルの解析にそれほど時間はかかりません。しかし、T0ST氏によると、JSONファイルを解析する際の実装に2つ問題があったため、悪名高いロード時間の問題が生み出されていたとのこと。

問題その1は、データを1つ1つ読み込んだ後に時間のかかるチェックを実行していたというもの。T0ST氏は文字列の長さをキャッシュするというシンプルな実装に置き換えるだけでロード時間を50%以上も削減することに成功。問題その2は、データをロードした配列が大きくなるといちいち重複をチェックし出すというもの。T0ST氏は重複を素早くチェックできるハッシュテーブルに置き換えるだけで、ロード時間をさらに25%も短縮しました。

上記の改善を加えたDLLによって、T0ST氏は6分もかかっていたロード時間を2分弱にまで短縮したと記しています。T0ST氏は改善版のDLLをGitHub上で公開していますが、不正行為防止機能などによって問題が生じる可能性があるため、「使用は自己責任で」と明記されています。

GitHub - tostercx/GTAO_Booster_PoC
https://github.com/tostercx/GTAO_Booster_PoC

T0ST氏は今回の問題について、「たった1人のエンジニアでも1日以内に処理できるレベル」と言及。開発元のRockstar Gamesに早急に問題を修正するように促しています。

・つづき
ハッカーが独自開発した「GTAオンラインのロード速度改善DLL」を開発元が採用、夢の「ロード時間70%短縮」が公式化へ - GIGAZINE

by strelkin

・関連記事

激烈な効果を出す記事広告をGIGAZINEに載せるにはどうすればいいのか編集長に聞いてみた
開発したサービスやアプリを最小の手間で拡散して最大限の効果を得られるGIGAZINEの「完全おまかせコース」発注プロセスまとめ
製品やサービスの認知度を上げユーザーを増やすためにGIGAZINEで記事広告「ベーシックコース」を発注する方法まとめ
2024年04月25日 14時08分43秒 in ゲーム Posted by darkhorse_log

人気記事リスト

最新記事リスト

カレンダー

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930    

カテゴリ