『GTAオンライン』今後のアップデートにてロード時間短縮へ。ファンが約7割短縮させることに成功し、正式に採用される

Pocket
reddit にシェア
LINEで送る

『グランド・セフト・オートV』のオンラインモードである『GTAオンライン』においては、ロード時間の長さがプレイヤーの悩みの種となっていたが、開発元Rockstar Gamesは今後配信予定のアップデートにて、ついに改善させるようだ。その改善策は、あるファンが発見した手法を元にしており、同スタジオが正式に採用したのだという。

『GTAオンライン』のロード時間短縮を実現したのは、リバースエンジニアリングを得意とするプログラマのt0st氏だ。同氏は今年2月、久しぶりに本作をプレイしたところ、約7年前の配信開始当時と変わらないロード時間の長さと、それに未だRockstar Gamesが対処していないことにショックを受けたという。PC版においてはプレイヤーのPC環境により多少変化するが、起動時に6分前後のロードを要していた。ちなみに『グランド・セフト・オートV』本編のロード時間はそれよりもはるかに短く、t0st氏の環境では1分程度だという。
 

Image Credit: t0st

 
調査を開始した同氏は、まずタスクマネージャーにて本作の起動時の挙動をチェック。すると、最初の1分間を超えたあたりからCPUのひとつのコアの使用率が急激に上昇し、その状態が4分以上続いていた。一方で、その間はストレージもネットワークもほぼ使用されておらず、データの読み出しやP2P接続を試みている様子はない。ただCPUだけがフル回転している状況に、t0st氏はバグを疑うこととなる。

t0st氏はコードプロファイラー「Luke Stackwalker」を使い、実行中のプロセスのスタックと命令ポインタの位置をダンプ。これを元に呼び出しツリーを構築・集計したところ、ふたつのボトルネックを発見できたという。そして、リバースエンジニアリングツール「Ghidra」なども活用しながらさらに調査を進めたところ、6万3000のエントリを持つ10MB相当のJSONファイルにたどり着く。これは「net shop catalog」のためのデータとされており、t0st氏は本作に収録されたすべてのアイテムのリストであると推測する。
 
 

Image Credit: t0st

 
 
先述したボトルネックのひとつは、このアイテムデータをひとつ読み込むたびに、JSONファイル全体を一文字ずつチェックするようプログラムされていたことにあるそうだ。そしてもうひとつは、そのチェック後に文字列を格納する際に、ここでも文字列ひとつひとつに対して、複製されていないかアイテムリストと照合するようチェックがおこなわれていたことにあるという。

t0st氏は、こうした処理には無駄が多いと指摘。そこでひとつ目のボトルネックについては、キャッシュを活用することで処理を簡略化。ふたつ目については、そもそもアイテムはすべて固有のものであるため、複製チェックを省略することを提案している。同氏は、実際にこれらの改善策を実行してみたところ、もともと6分程度かかっていた本作のロード時間は、1分50秒にまで短縮したという。実に約7割の削減に成功したのだ。
 

*YouTuberのGamingAbsolute氏の検証でも、t0st氏の手法によるロード時間短縮を確認。

 
t0st氏は、プレイヤーのPC環境によっては別のボトルネックが存在する可能性があるため、今回提示した手法ですべてのプレイヤーのロード時間が改善されるかどうかは分からないとコメント。ただ、この改善策はプログラマひとりが1日で実装できるものであるため、Rockstar Gamesに導入を検討するよう呼びかけた。

これを受けて、同スタジオは実際に精査をおこなったようだ。海外メディアPC Gamerに対し、調査の結果t0st氏の手法は確かに本作のロード時間を改善させられる可能性があることが分かったとし、今後のアップデートにて関連する変更をおこなうとした。なお、t0st氏は今回の貢献が認められ、Rockstar GamesのBug Bounty Programを通じて報奨金1万ドル(約109万円)が提供されるそうだ。このプログラムは、通常はセキュリティ面の脆弱性の通報に利用されているが、今回は例外的に適用して報奨金を支払うことにしたとのこと。

『GTAオンライン』は、『グランド・セフト・オートV』のオンラインモードとして、PC/PS4/Xbox One向けに配信中。なおPS3/Xbox 360版に関しては、現在もプレイ可能だがアップデートの配信は終了している。

Pocket
reddit にシェア
LINEで送る