開発が音バグが発生した経緯を説明
本日海外コミュニティのRedditにて開発者が最新情報を投稿しました。
投稿では、シーズン16で発生した音バグの原因と対処までの経緯が言及されています。
【重要】本解説については、ゲーム全体の音バグの話ではなく、シーズン16開始時から発生した特定の音バグについての説明となります。
・シーズン16の開始以来サウンド効果の欠落が確認された
・(例)グレが敵にダメージを与えたにも関わらず爆発しない
・サーバーが様々なエフェクトを送信するために使用しているシステムが第一の原因であることが判明した
・何かがこのエンジンの制限に殺到し、毎秒何千もの効果を要求しているのではないかという仮説を立てた
・検証を進めると、APEXのシステムがこれまで直面したことのない、ユニークで新しい状況で手がかりが見つからなかった
・それは干し草の山から針を探すような作業だった
・高レベルのプレイでより多く発生しているようだと指摘があり、焦点を絞りながら調査を続けた
・シーズン16で追加された新武器「ネメシス」における1行のコードが根本的な原因だった
・チャージ機能が実行されていない間もサーバーにデータを送り続けていた
・ネメシスが180fps以上の環境で動作しているクライアントが14台あれば音声などの効果が欠落し始めるのに十分なデータ量だった
・先週の水曜日アップデートを実施し、本事象は解決した
・その後もコミュニティの反応を注視し検証を続けている
・音バグのすべての懸念が解消された訳では無いが、いい方向には向かいつつある
音バグについての解説
やあ、レジェンドたち。
先日、シーズン16の開始以来、いくつかのサウンドとビジュアルエフェクトの低下に対処するためのアップデートが配信されたとツイートしましたが、より詳細な情報と背景を提供したいと思います。
コミュニティから提起されたすべてのオーディオとビジュアルの懸念を解決するものではありませんが、私たちは戦場での認識を改善することに専念しています。ご報告をありがとうございました。
詳細や舞台裏を覗くのが好きですか?開発チームの調査と最終的な修正の詳細については、このまま読み進めてください。長すぎて読めないという方は”原因と結果 “まで読み飛ばしてください。
—
ディスカバリー&インベスティゲーション
Season16-Revelryのリリース直後から、パーティクルと一緒にサウンドエフェクトが落ちるという問題が発生していました。
例えば、手榴弾がプレイヤーにダメージを与えたにもかかわらず、爆発しないことがありました。
この現象はSeason16のプレイテストでは発生しておらず、最初の報告後も社内で再現できず、ゲームプレイのライブ映像で原因を特定するのは非常に困難でした。
消えるグレの初期の調査では、それ自体が「消える」ものではなかったため、無関係な道を歩むことになりました。
その後、銃のSFXやVFXが消えたという報告があって初めて、その原因が何なのかがわかってきました。
予備調査の結果、サーバーが様々なエフェクト(特定の音、パーティクルシステム、物理的衝撃、弾痕、爆発など)の「開始」「停止」コマンドを送信するために使用しているシステムが第一の原因であることが判明しました。
サーバーはエンティティ(プレイヤー、武器、能力、戦利品など)をシミュレートするため、サウンド/ビジュアルエフェクトを発します。各サーバーフレームは、最大128項目のエフェクトリストを作成し、制限を超えるエフェクトは削除されます。
このリストは、特定のサーバーフレームでエフェクトを必要とするプレイヤーに送信されます。
フォーカスを絞る
そこから、何かがこのエンジンの制限に殺到し、毎秒何千もの効果を要求しているのではないかという仮説が生まれました!
しかし、これはシステム的な問題なのでしょうか、それとも、ある1つのエンティティに問題があるのでしょうか?
シーズンごとのアップデートでは、アセット、コード、スクリプト、レベルなど、何千もの変更が行われます。つまり、干し草の山から針を見つけるようなものです。
そこで登場するのが、メトリックスです。
ゲーム・サーバーから遠隔測定が送られてくるので、パフォーマンスやクラッシュなど、典型的でない、あるいは一般的に起こるさまざまなことをモニターすることができます。
この場合、現在の遠隔測定データは、システム内のフラグや問題を示していなかったので、役に立ちませんでした。
これは、私たちのシステムがこれまで直面したことのない、ユニークで新しい状況である可能性が高いことを示していました。
このため、私たちのコミュニティに影響を及ぼしていることは分かっていましたが、詳細なレポートがあっても再現が難しく、社内での手がかりもほとんどなく、この制限に違反していることを明確に証明する指標もない、複雑な問題が残りました。
次のステップは、このシステムのさまざまな制限を調査することでした。
最終的には、人工的な状況下で問題を再現することができました。
例えば、50人のレジェンドが同じ武器を同時に撃つスクワッドや、無敵のプレイヤーを大量に生み出し、アビリティや武器を可能な限り使いながらオートランし、すぐにリチャージさせるなどです!
これによって、FXが落ちることは証明されましたが、それは完全に非現実的なテストケースでしかありませんでした。
サーバーのパフォーマンスについて様々な角度から調査を行いましたが、決定的なものは見つかりませんでした。
調査中、この問題に関して寄せられる報告を注視していたところ、高レベルのプレイでより多く発生しているようだと指摘されました。
そこで、サーバーアップデートを実施し、必要なメトリクスを追加して、サーバーのネットワーク効果に関するより多くのデータを取得し、さらに焦点を絞って、干し草の山から針を見つけることができるようにすることを検討し始めた。
そして、サーバーアップデートが完了したとき、私たちはそれを発見しました。
原因と結果
シーズン16の新武器における1行のコードが根本的な原因であることが確認されました。
ネメシスには、加熱時に上昇するパーティクルエフェクトがありますが、充電されていないときは、エフェクトが武器の内部に隠されているため、それを再生するためにリソースを浪費する必要はないのです。
ですから、武器がアップデートされたとき、武器が充電されていなければ、このパーティクル効果を止めるだけでいいのです。
サーバーが武器の所有者からの入力をシミュレートするたびに、この特定のコード行が実行されます。
プレイヤーは、クライアントで実行されるすべてのフレームに対して入力を送信します。
そして、これらの入力をすべてシミュレートするのがサーバーの仕事なのです。
つまり、充電されていないネメシスを持っているすべてのプレイヤーが、毎フレーム、サーバーに「ストップパーティクル」の「効果」を作り出し、このコードラインは武器がホルスターされているときにも呼び出されていたことになります。
この問題は、ネメシスを持つ各クライアントのフレームレートと直接相関しており、高レベルのプレイでより頻繁に発生することがすぐに説明されました。
ネメシスが180fpsで動作しているクライアントが14台あれば、FXがドロップし始めるのに十分なのです。
このことは、社内テストでは見られなかったことの説明にもなります。
テストに使用したビルドは、ネメシスが十分に保持されていなかったか、FXの欠落との相関関係が希薄であったか、またはそのfpsのクライアントが十分でなかったのかもしれません。
テストと「レア」なバグを特定する機会について余談ですが、Apexをプレイしているプレイヤーの1分間は、10人のテスターが1年間このゲームをプレイするのと同じです!
修正プログラムの導入
この修正はメトリックスサーバーのアップデートに組み込まれ、先週の火曜日に配備されました。
それ以来、私たちはソーシャルと新しいメトリックスを注視しています。
この修正によってFXの懸念がすべて解消されたわけではありませんが、この特殊なバグのすべてが再び良い方向に向かいつつあります!
今後のアップデートについては、RespawnのTwitterアカウントをフォローして最新情報を入手するか、Apex Tracker Trelloで調査を続けているバグや懸念事項を確認してください。