Apex Legends:公式がサーバーとネットコードを解説!シーズン9以降に改善へ

Apex Legends      

エイペックス

Apex Legends(エーペックスレジェンズ)の公式サイトが更新され、スローモーションになる重いサーバー・ラグ・弾抜けなどについて説明されています。

パフォーマンスの指標で応答時間を改善

  • シーズン6では、パフォーマンス表示が導入されました。

    意味

  • 「イン」と「アウト」は、ゲームが消費する帯域幅(kB/s)です。レイテンシ(ミリ秒)も表示されています。パケットロスとパケットチョークは、秒ごとのパケットに対する割合として表示されます。
  • この情報はプレイヤーだけでなく、開発チームもサーバー状況を知るために役立つ情報となっています。
  • 誰かが問題を報告した場合、開発チームはその試合を分析し、参加していた全プレイヤーのデータ(ゲームをホストしている特定のサーバーに関する情報を含む)を見ることができます。
  • このアプローチはそれなりの成果を収めたのですが、長期的に考えると、これを続けていくのは難しいと考えています。まず最初にプレイヤーから報告を受け、それから問題の発生元を確認するためにエンジニアへと指示を出し、その後(問題の原因に応じて)修正を試みるという流れは、時間がかかり過ぎるのです。
  • 最近のシーズンでは、弊社の優秀なデータサイエンスチームの力を借りることにしました。一週間分のデータを収集してまとめて処理し、過剰なパケットロスやサーバーパフォーマンスの問題を検出します。このアプローチは既に成功を収めています。
  • 実際のところ、このアプローチであっても問題への対応がやや遅いのです。ほとんどのデータが確実に収集され、報告されるまでには一週間待たなければなりません。その後、完全な調査が行われるまでに、また一週間かかるということはよくあります。あなたが問題に気付いてから私たちが修正方法を発見するまでに、最大で二週間かかります。サーバーパッチが必要という場合であれば、その修正を導入するまでにもっと時間がかかります。
  • この状況を改善することは可能です。そして、実際に改善する予定です。
  • 週ごとの報告に加え、リアルタイムの通知機能を導入しました。これにより、現在と同等の情報をより素早く入手できるようになります。ハードウェアの問題の修正や、調査を開始してパッチの作成へと即座に取り組むことが可能になるでしょう。
  • 次に、パフォーマンス表示に新たなサーバー固有ID(SID)を導入します。これにより、プレイヤーがプレイしているサーバーをより早く見つけ出すことが可能になります。
  • 上記の解決策は、新シーズン「エーペックスレジェンズ:英雄の軌跡」の期間中に導入される予定です。サーバーに関する問題の解決がより速くなるということです。

一般的な問題についての解説

サーバーがスローモーションになる

  • Apex Legendsのサーバーは20Hzで実行されています。つまり、50msに1回、ワールド全体の状態をシミュレートしているのです。
  • ユーザーからの入力を受け取り、物理演算を実行し、新しいワールド界の状態をクライアントに送り返す、これを繰り返します。この処理に一貫して50ms以上かかると、サーバーがシミュレーションを終了できるようになり、ゲームがスローダウンします。このようにして、スローモーションのサーバーができあがります。
  • 速度低下を引き起こす原因は数多くありますが、データセンター内のマシンが本来の性能を発揮していないことと関連している場合もあります。例えば、CPUがアンダークロックしていたり、オーバーヒートを起こしているといったことが考えられます。
  • そういった機器を検知した場合、たいていは該当する機器を取り除きます。どういう意味かというと、サービスプロバイダに連絡して例の機器の問題を伝え、その機器をオフライン状態にするよう依頼するということです。
  • 次のシーズン中に導入予定の、先ほどお伝えしたリアルタイム検出を用いれば、この問題の発生を大幅に減らすことができるはずです。私たちはこの問題の解決するために多大な労力を費やしており、これからも状況を注視していく予定です。

レイテンシーが上下している

  • プレイヤーがWi-Fiでプレイしている場合はどうしようもありません。そうでないというのであれば、レイテンシーの急変動はサーバーのパフォーマンスに関連している場合があります。
  • ありがたいことに、私たちのオペレーションチームは「RPROF」ファイルと呼ぶものを取得するためのツールを作成してくれました。これは基本的に、各フレームでサーバーが何をしているのかを示すデータです(弾道シミュレーション、ネットワークのイン/アウト、プレイヤーの動きなど)。RPROFファイルのおかげで、速度低下の原因を発見し、エンジニアが最適化を始めることができるのです。たいていの場合、毎シーズン追加されていく新機能によりパフォーマンスの要求が増加したことが問題と関係しています。
  • シーズン7と8では、ゲーム開始時のチャンピオン画面で速度低下が起きていました。試合に参加している全プレイヤーが同じ場所にスポーンしたことで、プレイヤーが別のプレイヤーの真上に配置されたり、重なり合ったことが問題の原因でした。
  • 物理シミュレーションでは、オブジェクトが他のオブジェクトと重なり合うと問題が発生します。そして物理エンジンがプレイヤーの体をお互いから引き離そうとしたことで、サーバーのCPUに大きな負荷がかかったというわけです。
  • RPROFファイルの使用は、今後ゲームに追加する新機能を最適化し、より全般的にレイテンシを低減する役に立ってくれるであろうと見込んでいます。全プレイヤーのレイテンシーを下げることは私たちにとって大きな目標であり、今回例に挙げたような、より高性能のツールはその達成に不可欠です。

パケットロスやパケットチョークが多い

  • この問題は、インターネットを通じてお使いの機器からデータセンターへ、そしてまたお使いの機器へと情報が戻っていく過程と関係しています。
  • あなたのネットワークトラフィック(情報)はISPネットワーク上に存在しています。ISPに障害が起きた場合、他のお客様の情報と共にあなたの情報も消失/欠損する可能性があるということです。この場合はクライアント側で他のプレイヤーの状況が認識できなくなります。またゲームサーバー側でもあなたが射撃したいのか、それとも目的の方向に進むのかといったことが把握できなくなります。
  • ここで取り上げたようなネットワークトラフィックの問題に関して一ついい点があるとすれば、問題は特定の個人だけに関連しているのではなく、まとまって問題が発生する傾向があるということです。どういう意味かというと、一人のプレイヤーに影響している問題を解決すると、他の大勢のプレイヤーの障害も解決できるということです。

ラグについて

  • 「エーペックスレジェンズ」で遊ぶ二人のプレイヤー、HIGHLOWを例に使って、いくつかの状況を解説していきます。まず、HIGHには300msの高Pingを、LOWには50の低Pingを設定しましょう。Ping値の違いは250msです。
  • 現実世界の同じ時間に、お互いへ向けて射撃したらどうなるでしょうか?LOWの射撃は、HIGHの射撃よりもはるか先にサーバーへと到達するわけですから、LOWの方が有利です。
  • どちらかが角を曲がり、突然お互いの姿を見たという場合には?この例でもLOWが有利です。LOWの方が「過去にいる」度合いが低いので、LOWが先にHIGHの姿を見ることになります。繰り返しになりますが、LOWが優位に立っているのはPingのおかげです。そしてこれが、LOWの弾が先にサーバーへと到達するという優位性と組み合わさります。
  • では、LOWが姿を隠すために曲がり角の向こうへ行ったらどうなるでしょうか?HIGHはまだLOWが姿を隠していない過去にいるわけですから、LOWが身を隠す前にHIGHは銃弾を撃ち込むことができます。
  • ですが、最初の二つの例ではLOWに有利であったことを考えると、これはまさに対称の関係にあるのです!LOWがHIGHへと攻撃するために遮蔽物から身を乗り出した場合、HIGHの方ではまだLOWの姿が見えていない一方で、LOWはHIGHの姿を先に見て撃つことができます。
  • Pingが悪いせいで、遮蔽物に身を隠せていると思っている時に撃たれるのは気分が悪いでしょう。これはLOWに起こりうることです。Pingが悪いせいで、相手の姿が見える前に撃たれるというのも腹が立つでしょう。これはHIGHに起こりうることです。
  • 一つ断っておきたいことがあります。全てのオンラインゲームが「エーペックス」と同じ仕組みなわけではありません。Pingがより低い方のプレイヤーを常に有利にしているゲームもありますが、私たちのシステムでは、積極的にそうならないようにしています。

撃っているのに命中判定が発生しない(弾抜け)

  • 命中の判定がされていないということはつまり、あなたは標的に命中させたと思っているのですが、サーバーはそう思っていないということです。
  • この問題の原因は数多くあります。時として、高いレイテンシーやパケットロスが、あなたのローカルシミュレーションとサーバー間に同期ズレを引き起こすことがあります。誰かがいると思ってあなたが射撃した場所は、相手のプレイヤーが少し前にいた場所だったということです。
  • 時には、ゲームの物理シミュレーションの不具合であることもあります。皆様へと即座にフィードバックを返すために、私たちは予測というコンセプトに頼っています。あなたが射撃したとき、私たちは弾道を把握しているので、銃弾があなたのゲーム内でどこに向かっているのかが予測でき、サーバーからあなたへとその情報を送る必要がなくなるのです。これにより、ゲームの反応性が向上します。
  • 通常であれば、クライアントとサーバーは同じ結論に至り、銃弾は予測通りの場所に着弾します。以前は、弾道や弾の軌道を計算する方法にバグがありました。この種のバグは発見するのが非常に困難なので、問題をすぐ発見できるよう、プレイテストの際に視覚効果を導入しました。残念ながら、この診断コードは公開しているゲームで使用するには重すぎるため、社内でのテストに頼るしかありません。
  • この問題に関しては、命中検出の問題を引き起こす様々なバグの調査を絶えず行うことです。開発者が新しいバグを回避できるよう、私たちは自動検出ツールの開発も行っています。私たちはこれからもこの方法で継続的に取り組んでいく予定です。

「code:net」のような

  • 「Code:net」はゲームがサーバーからタイムアウトした時に表示される一般的なエラーメッセージです。
  • この問題の原因は数多くあり、私たちの側に問題があることもあれば、あなたの側に問題がある場合もあります。
  • 私たちはcode:netバグが起きる確率を減らすために数多くの対策を講じました。また、サポートチームへと連絡していただければ、多くの場合は問題を解決できます。ログインができず、コード:netメッセージが表示されているという場合は、EAヘルプを使ってご報告いただくようお願いいたします。

サーバーのチックレートについて

  • 他のオンラインシューティングゲームのように20Hzから上げてしまわないのは何故なのか、という質問を多くのプレイヤーから受け取っています。
  • サーバーのチックレートは、サーバーが一秒ごとに実行するシミュレーションの数を示しています。Apexはスナップショット・ベースのレプリケーション・モデルを使用しています。大まかに言うと、チックが終わるたびにサーバーはワールドステートを保存し、すべてのクライアント上で再現します。ここには、武器やマップ、レジェンドのデザインを最高の品質で再現するための多くの情報が含まれています。
  • 多くのゲームはチックのたびに完全なワールドステートを計算しないため、「20Hz」対「30Hz」のように一つの数字だけでゲーム同士を比較すると誤解を招くことになります。
  • 例えば20Hzから60Hzまで上げた場合の利益はどうでしょうか?私たちが調査した結果をもとにお話ししますと、上げてもゲームの体験は大きく変わりません。
  • 20Hzのサーバーでは約5フレームの遅延、60Hzのサーバーでは3フレームの遅延が発生します。つまり、最善の場合であっても、帯域幅とCPUコストを3倍にして削減できる遅延はたった2フレーム分だけだということです。

改善策の例

  • 問題の特定と対応をより迅速にする、リアルタイムの通知機能の使用
  • 問題があるサーバーを素早く排除して置き換えできるように、サーバーを特定するツールの導入
  • スローモーションのサーバーに注力 — 問題のあるサーバーを排除することも重要ではありますが、私たちの目標は、コードに変更を加えてこの問題が発生する頻度を大幅に減らすことです。
  • 新機能の最適化を行いレイテンシを低減
  • 命中判定のバグを修正し、新たなバグの導入を回避に役立つ自動検出ツールを作成
Apex Legends: Pathfinder's Quest (英語)
Apex Legends: Pathfinder's Quest (英語)
アートブック
Funko Pop! Games - Pathfinder
Funko Pop! Games - Pathfinder
フィギュア

おすすめページ Apex Legends 攻略・データ記事一覧

  • Feedly
  • B!