コンピュータにおいて、ラグとは、ユーザーの操作(入力)と、タスクをサポートするサーバーの反応(クライアントに返送される必要がある)との間の遅延(レイテンシ)のことです。
プレイヤーがラグを許容できるかどうかは、プレイしているゲームの種類によって異なります。例えば、戦略ゲームやターン制ゲームなど、テンポの遅いゲームでは、ラグに対する許容度が高く、ラグの影響をほとんど受けない場合もあります。一方、ファーストパーソン・シューティングゲームや格闘ゲームなど、反応速度が求められるテンポの速いゲームでは、満足のいくプレイ体験を得るためには、ラグを大幅に低減する必要があるでしょう。
ラグは主にミリ秒(ms)で測定され、ゲーム内に表示されることがあります (ラグメーターと呼ばれることもあります)。[ 1 ]ラグの最も一般的な原因は、ピング時間(または単にピング) とフレームレート(fps) で表されます。一般的に、プレイアビリティのためには 100 ms (10 Hzまたは fps)未満のラグが必要であると考えられています。地球の半分を横断する地球上の反対側の地点間の接続で物理的に可能な最小のピングは133 ms です。ラグの他の原因は、一般的にプレイ可能な 20 ms (50 Hz または fps) 未満のラグ 、またはゲームの損失、破損、またはジッターを引き起こします。
シングルプレイヤーゲームではメインのゲーム状態はローカルマシン上に保持されますが、オンラインゲームでは個々のクライアント間の不整合を避けるために中央サーバー上に保持する必要があります。そのため、クライアントは中央のゲーム状態を直接制御できず、サーバーに変更要求を送信することしかできず、サーバーからの更新を受信することによってのみローカルのゲーム状態を更新できます。この通信の必要性により、クライアントとサーバー間で遅延が発生し、これがラグの根本的な原因となります。プレイヤーがラグを経験する根本的な理由は数多く考えられますが、最も一般的な原因は、クライアントとサーバー間の接続不良、またはクライアントもしくはサーバーのいずれかでの処理能力不足です。[ 2 ]
おそらく最も一般的な遅延の種類は、ネットワークのパフォーマンスの問題によって引き起こされます。パケットの損失、破損、ジッター(古いパケットは事実上損失です)はすべて問題を引き起こす可能性がありますが、十分な帯域幅があり、輻輳がほとんどない、またはまったくないネットワークでは、これらの問題は比較的まれです。代わりに、クライアントとサーバー間でデータを送信する際の遅延が重要な役割を果たします。遅延は、エンドシステム間の物理的な距離など、多くの要因によって変化します。距離が長いほど、追加の伝送長とルーティングが必要になり、したがって遅延が高くなります。インターネット経由のルーティングは非常に間接的になる可能性があり、直接ルートよりもはるかに長い伝送長(およびそれに伴う遅延)をもたらしますが、クラウドゲーミングサービスのOnLiveは、複数のTier 1ネットワークインターネットサービスプロバイダーとのピアリング関係を確立し、サーバーとユーザー間の最適なルートを選択することで、この問題に対するソリューションを開発しました。[ 3 ]
ピング時間、または単にピングは、接続遅延の主な尺度です。ピング時間は、pingユーティリティまたは同等のツールで測定した、プレイヤーのクライアントとゲームサーバー間の往復のネットワーク遅延です。ピング時間は、ミリ秒(ms)で測定される平均時間です。ピング値が低いほど、レイテンシが低くなり、プレイヤーが経験するラグが少なくなります。高ピングと低ピングは、オンラインゲームでよく使われる用語で、高ピングは、深刻なラグを引き起こすピングを指します。どのレベルのピングでもラグを引き起こす可能性がありますが、深刻なラグは通常、100 msを超えるピングで示されます。[ 4 ]この用法はゲーム文化の口語表現であり、プロのコンピュータ ネットワークのサークルでは一般的に見られたり使用されたりしません。
ping に特に影響を与える可能性のある要因には、使用される通信プロトコル、インターネットのスループット(接続速度)、ユーザーのインターネット サービス プロバイダの品質、ファイアウォールの構成などがあります。ping は地理的な場所にも影響されます。たとえば、インドにいる人が米国のサーバーでプレイしている場合、両者間の距離は米国内にいるプレイヤーの場合よりも長くなるため、データの送信に時間がかかり、20,000 km (地球の半周) で ping が 133 ms になります。[ 5 ]ただし、2 台のコンピュータ間のパケット スイッチングとネットワーク ハードウェアの量の方が、多くの場合より重要です。たとえば、無線ネットワーク インターフェイス カードはデジタル信号を無線信号に変調する必要がありますが、これは電気信号が一般的なケーブルを通過するのにかかる時間よりもコストがかかることがよくあります。そのため、ping が低いと、インターネットのダウンロードとアップロードの速度が速くなります。
入力遅延または入力レイテンシーとは、マウス、キーボード、その他のコントローラーなどの入力デバイスとその接続によって発生する遅延のことです。ワイヤレスデバイスは、この種の遅延の影響を特に受けます。 [ 6 ]ワイヤレスコントローラーを使用すると遅延が大きくなると主張する人もいれば、4~8ミリ秒の遅延は無視できると主張する人もいます。[ 7 ]リフレッシュレートは、入力遅延の一種または一部であり、ディスプレイが鮮明な画像を生成する速度で、Hzで測定されます(たとえば、60、240、または360、つまりそれぞれ16.7、4.2、または2.8ミリ秒)。[ 8 ]
これはテレビやモニターによって発生する遅延(出力遅延とも呼ばれる)です。画面のピクセル応答時間によって生じる遅延に加えて、アップスケーリング、モーションスムージング、エッジスムージングなどの画像処理には時間がかかるため、入力遅延がさらに増加します。30 ms未満の入力遅延は、一般的にテレビでは気にならないと考えられています。[ 9 ]フレームが処理されたら、最後のステップは、新しいフレームの正しい色を表示するようにピクセルを更新することです。これにかかる時間をピクセル応答時間と呼びます。
ラグの顕著な影響は、正確な原因だけでなく、ゲームが実装する可能性のあるラグ補正のすべての技術(下記参照)によっても異なります。すべてのクライアントで何らかの遅延が発生するため、プレイヤーへの影響を最小限に抑えるこれらの方法を実装することは、スムーズなゲームプレイのために重要です。ラグは、ゲーム状態の正確なレンダリングやヒット検出などの問題を引き起こします。[ 10 ]多くのゲームでは、ラグは通常のゲームプレイを妨げるため、好ましくないと考えられています。ラグの深刻さは、ゲームの種類とラグに対する固有の許容度によって異なります。ペースの遅いゲームの中には、補正を全く必要とせずにかなりの遅延を許容できるものもありますが、ペースの速いゲームははるかに敏感で、プレイ可能にするために広範囲にわたる補正が必要です(ファーストパーソンシュータージャンルなど)。ラグが引き起こすさまざまな問題のため、インターネット接続が十分速くないプレイヤーは、サーバーホストが遠い、またはレイテンシが高い他のプレイヤーやサーバーとのプレイを許可されないか、推奨されない場合があります。極端なラグの場合、ゲーム状態の大幅な同期ずれが発生する可能性があります。
クライアントとサーバー間の更新レートが不十分なためにラグが発生すると、いくつかの問題が発生する可能性がありますが、これらは通常クライアント自体に限定されます。他のプレイヤーは、影響を受けたクライアントに関連付けられたプレイヤーの動きがぎこちないことや同様の問題に気づくかもしれませんが、本当の問題はクライアント自体にあります。クライアントがゲームの状態を十分な速さで更新できない場合、プレイヤーには古いバージョンのゲームが表示される可能性があり、その結果、ヒットや衝突の検出にさまざまな問題が発生します。[ 11 ]
テストの結果、全体的な入力遅延(人間の入力から視覚的な反応までの時間)が約200 msだと、ユーザーの集中を妨げることが判明しました。また、(モニター/テレビの表示遅延を除く)平均応答時間は133 msであり、最も感度の高いゲーム(格闘ゲーム、ファーストパーソン シューティングゲーム、リズムゲーム)では、応答時間が67 ms(表示遅延を除く)であることが分かりました。[ 12 ]
遅延を軽減または隠蔽する方法はいくつかありますが、その多くには欠点があり、すべての場合に適用できるとは限りません。ゲーム自体で同期が不可能な場合、クライアントはレイテンシを減らすために地理的に近いサーバーでプレイすることを選択できます。または、サーバーは結果として生じる問題に対処する必要がないように、レイテンシの高いクライアントを単純に切断することを選択できます。しかし、これらは最適な解決策とは言えません。その代わりに、ゲームは多くの場合、ラグ補償を念頭に置いて設計されます。[ 13 ]
クライアントが自身の状態を追跡し、絶対状態をサーバーまたは他のクライアントに直接送信できるようにすることで、多くの問題を解決できます。[ 14 ]例えば、クライアントはプレイヤーのキャラクターがどの位置にいるか、またはキャラクターが誰を撃ったかを正確に伝えることができます。この解決策は機能し、ラグに関連するほとんどの問題をほぼ完全に解消します。残念ながら、これはクライアントが正直であるという前提にも依存しています。プレイヤーが、常にターゲットに命中するように、クライアントに直接またはプロキシを介して間接的に送信するデータを変更することを妨げるものはありません。オンラインゲームでは、チートのリスクによりこの解決策は実現不可能になる可能性があり、クライアントは相対状態(つまり、どのベクトルで移動したか、どのベクトルで撃ったか)を送信することに限定されます。
クライアントは通常、メインゲームの状態を定義することはできず、サーバーからそれを受け取るため、クライアント側の補償の主なタスクは、仮想世界をできるだけ正確にレンダリングすることです。更新には遅延があり、場合によっては破棄されることもあるため、クライアントがゲームの流れを予測する必要がある場合があります。状態は離散的なステップで更新されるため、クライアントは利用可能なサンプルに基づいて動きを推定できる必要があります。これを実現するために、外挿と内挿という2つの基本的な方法を使用できます。[ 14 ]
外挿とは、将来のゲーム状態を推定する試みです。サーバーからパケットを受信するとすぐに、オブジェクトの位置が新しい位置に更新されます。次の更新を待つ間、次の位置は更新時の現在位置と動きに基づいて外挿されます。基本的に、クライアントは移動中のオブジェクトが同じ方向に進み続けると想定します。新しいパケットを受信すると、位置がわずかに修正される場合があります。
補間処理は、ゲームの状態をバッファリングし、わずかな一定の遅延を伴ってプレイヤーにレンダリングすることで機能します。サーバーからパケットが到着すると、クライアントはオブジェクトの位置を即座に更新するのではなく、最後に認識された位置から位置の補間を開始します。補間間隔の間、オブジェクトは2つの位置の間を滑らかに移動するようにレンダリングされます。理想的には、この間隔はパケット間の遅延と完全に一致するはずですが、パケット損失や変動遅延のため、実際にはそうなることはほとんどありません。
どちらの方法にも長所と短所がある。
スムーズなゲームプレイを実現するために、クライアントはゲームの状態を微調整することが許可されている場合が多い。サーバーは最終的に弾薬、体力、位置などを追跡するが、クライアントはプレイヤーの行動に基づいてサーバー側の新しいゲーム状態を予測することが許可される場合がある。例えば、サーバーがコマンドに応答する前にプレイヤーが移動を開始できるようにするなどだ。これらの変更は通常の状況では受け入れられ、遅延はほとんど意識されない。問題が発生するのは、遅延や損失が大きかった場合のみで、その場合、クライアントの予測がサーバーによって著しく覆される。場合によっては、わずかな差異であれば、サーバーはクライアントからの更新に基づいて「誤った」状態変更を許可することさえある。
クライアントとは異なり、サーバーは現在のゲームの状態を正確に把握しているため、予測は不要です。サーバー側のラグ補正の主な目的は、クライアントのアクションの正確な効果を提供することです。これは、プレイヤーのコマンドが到着するまでに時間が経過し、プレイヤーがコマンドを発行したときに見ていた状態とは世界がもはや同じ状態ではなくなるため重要です。[ 15 ]この非常に明確な例として、一人称シューティングゲームで発射される武器のヒット検出があります。これはマージンが小さく、適切に処理しないと重大な問題を引き起こす可能性があります。
この問題に対処するもう 1 つの方法は、過去のゲームの状態を一定期間保存し、コマンドを処理するときにプレイヤーの位置を巻き戻すことです。[ 14 ]サーバーは、プレイヤーのレイテンシ (補間による固有の遅延を含む。上記参照) を使用して、適切な量だけ時間を巻き戻し、射撃クライアントが発射時に何を見ていたかを判断します。通常、これにより、サーバーはクライアントがターゲットの以前の位置で発射し、命中したと認識します。最悪の場合、プレイヤーがあまりにも遅れているため、サーバーは履歴データを使い果たし、プレイヤーはターゲットを先読みし始める必要があります。
これは、プレイヤーが見ているものに直接照準を合わせることができるWYSIWYGソリューションです。しかし、その代償として、プレイヤーが攻撃を受けているときにレイテンシの影響が悪化します。プレイヤー自身のレイテンシだけでなく、攻撃者のレイテンシも影響します。多くの場合、これは目立ちませんが、カバーに入ったばかりのプレイヤーは、自身のレイテンシでは説明できないほど長くサーバーからダメージ/死亡メッセージを受け取り続けることに気づくでしょう。これにより、カバー越しに撃たれたという (誤った) 印象や、「ヒットボックスがラグっている」という (全く不正確ではない) 印象がより頻繁に生じる可能性があります。[ 14 ]
巻き戻しによって生じる設計上の問題の一つは、サーバー上で死亡したプレイヤーの遅延したコマンドの巻き戻しを、プレイヤーが死亡した時点で直ちに停止するか、死亡時刻に追いつくまで実行し続けるかという点です。補償を即座に停止すれば、被害者が死後に殺人者を攻撃することを防ぐことができ、これは期待に応えますが、角を曲がってターゲットを捕捉し、静止している被害者のクライアントまで往復するよりも短い時間で殺害できる移動プレイヤーの自然な優位性は維持されます。
巻き戻し機能は、あるプレイヤーのレイテンシが高いことが、レイテンシの低いプレイヤーのゲーム体験に悪影響を与える可能性があるとして批判されることがある。ラグ補正機能を備えたサーバーでは、この問題を軽減するために、保存されるプレイヤー履歴の長さを短縮したり、ピング制限を設けたりすることがある。
クライアントがサーバーに何をしているかを伝え、サーバーが受信したデータを信頼することは可能です。この方法は不正行為に脆弱であるため、可能な限り避けられます。ネットワークデータを2台目のコンピュータ経由でルーティングし、偽のヒットメッセージを挿入したり、既存のメッセージを変更したりすることは容易であり、この手法は不正対策ツールでは検出できません。[ 14 ]
しかし、一部のゲームの規模が大きすぎるため、巻き戻しのような計算コストの高い解決策は不可能です。たとえば、 Battlefield 3では、「ハイブリッドヒット検出」システムが使用されており、クライアントはサーバーにヒットしたことを伝え、サーバーは主張を受け入れる前に漠然とした妥当性テストのみを実行します。[ 16 ]
それ以外の点では、クライアントの結果を信頼することには、巻き戻しと同じ利点と欠点がある。
あまり一般的ではないラグ対策としては、サーバー側で何もせず、各クライアントが(上記参照)遅延をカバーするように外挿する方法がある。[ 17 ]リモートプレイヤーが一定の速度を維持しない限り、この方法は誤った結果を生み出し、前後左右に回避したり、単に動き始めたり止めたりするプレイヤーに有利になる。
拡張外挿法では、本来表示されるべきではないリモートプレイヤーが(脆弱になるわけではないものの)表示されてしまうという問題も発生します。例えば、リモートプレイヤーがコーナーまで全力疾走して端で急停止した場合、他のクライアントは、自身の遅延時間の間、そのプレイヤーが開けた場所へ全力疾走しているようにレンダリングします。この問題のもう一方の側面として、クライアントは、動き始めたばかりのリモートプレイヤーを理論的に正確な予測位置へ押し込むために、追加の速度を与える必要があります。
ゲームデザインによってラグの知覚を軽減することは可能です。テクニックとしては、クライアント側のアニメーションをアクションが即座に行われたかのように再生したり、ホストマシンの組み込みタイマーを減らしたり削除したり、カメラの遷移を使用してワープを隠したりすることが挙げられます。[ 18 ]
クラウドゲーミングは、ゲーム全体がデータセンターのゲームサーバーでホストされ、ユーザーはゲームコントローラーのアクションをゲームサーバーに転送するシンクライアントをローカルで実行しているだけのオンラインゲームの一種です。ゲームサーバーは、低遅延ビデオ圧縮を使用して圧縮されたゲームビデオの次のフレームをレンダリングし、下流に送信してシンクライアントによって解凍します。クラウドゲーミングの体験が許容できるものとなるためには、クラウドゲーミングシステムのすべての要素(シンクライアント、ゲームサーバーへのインターネットおよび/またはLAN接続、ゲームサーバーでのゲーム実行、ビデオとオーディオの圧縮と解凍、およびディスプレイデバイスでのビデオの表示)の往復遅延が、ユーザーがゲームがローカルで実行されていると認識できるほど十分に低くなければなりません。[ 3 ] [ 19 ]このような厳しい遅延要件のため、光ファイバーを通る光の速度の距離に関する考慮事項が関係し、 OnLiveによると、現在、ユーザーとクラウドゲーミングゲームサーバー間の距離は約1000マイルに制限されています。[ 20 ] クラウドゲーミングに伴う遅延についても多くの議論があります。クライアント/サーバーネットワークアーキテクチャを使用するマルチプレイヤーゲームでは、プレイヤーのコンピュータがゲームのグラフィックをローカルでレンダリングし、プレイヤーのゲーム内アクションに関する情報のみがサーバーに送信されます。たとえば、プレイヤーがボタンを押すと、画面上のキャラクターはすぐに対応するアクションを実行します。しかし、敵が倒されるなどのアクションの結果は、アクションがサーバーに到達するまでの時間のために、短い遅延の後でしか表示されません。これは、プレイヤーの入力に対する応答が十分に速い場合にのみ許容されます。
クラウドゲーミングを使用する場合、プレイヤーの入力に対して、画面上で反応が確認できるまでに若干の遅延が生じることがあります。入力はまずリモートサーバーに送信され、次にサーバーは実行中のアクションのグラフィックのレンダリングを開始し、ネットワーク経由でプレイヤーにビデオをストリーミング配信するため、追加の時間がかかります。そのため、プレイヤーはボタンを押してから画面上で何かが起こるまでに、目立った遅延を感じます。プレイヤーのスキルや経験によっては、これは遅延聴覚フィードバックと同様の混乱や戸惑いを引き起こし、ゲーム世界でのナビゲーションや照準操作を妨げる可能性があります。長いコンボ動作を素早く入力すると、画面上のキャラクターがボタン操作と同期しません。これは通常、プレイヤーに深刻な混乱を引き起こし、コンボ動作の失敗につながります。
入力遅延が大きくなると、特定のシングルプレイヤーゲームをプレイするのが非常に難しくなる場合もあります。例えば、敵がプレイヤーに攻撃を仕掛け、プレイヤーが防御する必要がある場合、プレイヤーの画面上で敵が攻撃を開始したと表示される頃には、サーバー上では既に敵が攻撃を仕掛けてプレイヤーを倒している、といったことが起こり得ます。
Ka leまたはKale、/ ˈ k ɑː l ɜː /、[ 21 ]は、ラグを指すゲームスラングおよびインターネットフレーズです[ 22 ] 。 [ 21 ] [ 22 ]これは中国語のフレーズ卡了(ピンイン:Kǎle)[ 21 ] [ 22 ]に由来し、 2015 年の Dota 2 Asia Championshipsで初めて使用されました。中国のプレイヤーが、煩わしいゲームのラグについて不満を述べ、一時停止を要求するためにチャットに入力したのがきっかけです。[ 21 ]中国のDota 2シーンが人気になるにつれて、この表現も知られるようになりました。多くの西洋のプレイヤー、プロもアマチュアも同様に、ゲーム内チャットやTwitchで「lag」の代わりに「kale」と入力することがよくあります。[ 22 ] [ 21 ]
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)のヒット モデルは、ハイブリッド ヒット検出という、クライアント サーバー モデルを組み合わせたものを使用しています。クライアントはサーバーに「彼を撃ったよ!」と伝え、サーバーは 2 つのターゲットの位置をチェックして、プレイヤーがそのターゲットに合理的に命中できたかどうかを判断し、その後ダメージを適用します。