『Apex Legends』開発者、描写・音バグは“ネメシス”が原因だったと報告。1行のコードが巻き起こした大問題


Respawn Entertainmentは4月27日、『Apex Legends』において修正パッチを配信した。この修正パッチは、たびたび報告が挙げられていた音声や描写に関するバグの数々を一部を除き修正するものだ。発生していたバグは消えるグレネード、発砲描写のない武器やダメージ元が分からない見えない攻撃など多岐にわたった。そして5月3日、海外掲示板Redditにて開発者がバグの原因究明の裏側を解説。今年2月のシーズン16開幕から開発者を苦しめ続けてきたバグは、ネメシスのとある仕様にまつわるコードが原因であったことを明かしたのだ。


海外掲示板Redditに5月3日付で投稿されたスレッドは、『Apex Legends』のコミュニティマネージャーであるAmy Thiessen氏が前述のバグの発覚とその解決までの道のりを解説するといった内容だ。本投稿の内容は注目を集めており、同掲示板のコメント欄には「開発の裏側を知れて、とても興味深かった」といった感想が見受けられる。投稿を見てみると、開発チームが修正パッチを配信するまでに費やした多様なアプローチやプロセスを見ることができる。

Amy氏によると、ことの発端は今年2月に配信開始されたシーズン16のアップデートであったという。シーズン16以降、「グレネードが消える」「見えない攻撃を受ける」といった描写バグから、「武器の音が断続的に途切れる」といった音声バグなどが報告として挙げられるようになったのだ。開発チームはバグの原因究明に乗り出したものの、発生条件が不明なうえ、プレイテストでの再現が認められなかったことから、原因究明の糸口を見つけることは困難を極めたという。

一方で、銃のサウンドエフェクトやビジュアルエフェクトが消えたという報告が上がったことをきっかけに原因が判明。開発チームは前述のバグの数々が、ゲーム内エフェクトの効果を発生・停止させるための「開始・停止コマンド」の送信に使用しているシステムに起因していることを突き止めたそうだ。本作では各サーバー内で起きるさまざまな事象(プレイヤーの動き、武器、能力、戦利品など)をシミュレートして、サウンド・ビジュアルエフェクトが発生しているとのこと。その際に各サーバーでフレームにつき最大128項目のエフェクトの開始・停止コマンドリストが作成され、上限を超えたコマンドは削除されるという。なお上限を超えるためには、毎秒2000以上のコマンドが送信される必要があるとのこと。

開発チームは、何かがエフェクトを管理するシステムに殺到し、毎秒何千ものエフェクトの発生を要求しているのではないかとの仮説を立てたそうだ。一方でその原因特定にあたっては、アップデート時におこなわれた多数の変更から探し出すことになり、干し草の山から針を見つけるような作業であったとのこと。また、開発チームがサーバーから収集していた従来のデータには、エフェクトの発生にまつわるデータが含まれず、今回のバグの原因究明に用いることができなかったそうだ。さらに社内でのテストプレイでもさまざまな角度から調査をおこなったものの、原因の特定はできなかったという。


そうした中で開発チームは、バグの発生報告が「ハイレベルなプレイ」に集中していることに注目。これをもとに、サーバーアップデートを実施してサーバーから必要なデータを新たに収集し始めた。その結果、高レベルなマッチングで使用されていた武器“ネメシス”に原因があることが判明したのだ。

シーズン16より登場した新たな武器のネメシスは発砲を繰り返すとエネルギーをチャージして、発射レートが上昇するという性質をもった武器だ。ネメシスはチャージ段階の上昇でバレルが光り輝くという特殊なビジュアルエフェクトを発生させる。一方でチャージされていない状態ではこのエフェクトを停止させる処理がおこなわれるそうだ。

そして、このエフェクトを停止させるコードに問題があったという。あるコードによって、ネメシスのビジュアルエフェクトの停止コマンドが、サーバーに毎フレーム送られる状態になっていたのだ。これにより、すべての非チャージ状態のネメシスを所有するプレイヤーたちから、それぞれのクライアントでのフレームごとの停止コマンドを送りつけられることに。さらに、武器を収めているときでも停止コマンドはサーバーに送られ続けたという。その結果、先述のサーバーが処理できるビジュアル・サウンドエフェクトの開始・停止コマンド数の上限に達し、今回のバグが発生していたとのこと。特に、フレームレートの高い環境でプレイするユーザーが集うハイレベルなマッチでは、このバグが発生しやすくなっていたわけだ。


なおAmy氏は社内でのテストプレイ時にバグの原因を究明できなかった理由について、フレームレートの高いプレイヤーやネメシスを所持するプレイヤーを十分に確保できなかったためではないかと推察。さらに同氏は、バグの原因調査においては「プレイヤーの1分間は、テスター10人の1年間と同じ」と綴っている。それぞれ異なる環境下でプレイしているユーザーの声を一つ一つ聞き入れることで得られる情報をもとに、今後も数多くのバグが調査されていくことだろう。最新のバグ修正や調査中の内容は『Apex Legends』のTrelloであるApex Trackerでも確認することができる。

なお4月27日のアップデートではエフェクトに関する問題がすべて解消されたわけではないものの、バグ修正に向けた取り組みは順調に進んでいるそうだ。本作では、5月10日よりシーズン17「アーセナル」が開幕予定。新シーズンの開幕に向けて、そして開幕後も課題への対応は進められていくことだろう。