クライアント側予測は、高遅延接続の悪影響を隠すためにビデオ ゲームで使用されるネットワーク プログラミング手法です。この手法は、リモートサーバーでのプレーヤーのアクションを制御しながら、プレーヤーの入力をより瞬時に感じさせようとします。
クライアント側予測のプロセスとは、サーバーが入力を確認してゲーム状態を更新する前に、クライアントがユーザー入力にローカルで反応することを指します。 [1]そのため、クライアントはサーバーに制御入力を送信して更新されたゲーム状態を待つだけでなく、これと並行してゲーム状態をローカルで予測し、サーバーから更新されたゲーム状態を待たずにユーザーにフィードバックを提供します。
クライアント側予測により、ネットワークの ping 時間による入力とクライアント側の視覚的フィードバックの間の遅延がなくなるため、レイテンシの問題が軽減されます。ただし、クライアントとサーバーのゲーム状態の非同期も発生するため、ゲームをプレイ可能な状態に保つにはこれを処理する必要があります。[1]通常、非同期はクライアントが更新されたゲーム状態を受け取ったときに修正されますが、瞬間的な修正は「スナップ」につながるため、通常は何らかの「スムージング」アルゴリズムが関与します。たとえば、一般的なスムージング アルゴリズムの 1 つは、各可視オブジェクトのクライアント側の位置をチェックして、サーバー側の位置のエラー イプシロン内にあるかどうかを確認することです。そうでない場合、クライアント側の情報がサーバー側に直接更新されます (非同期が多すぎるためにスナップされます)。ただし、クライアント側の位置がそれほど離れていない場合は、クライアント側とサーバー側の間の新しい位置が補間されます。この位置は、クライアント側の場所から小さなステップ デルタ内に設定され、これは通常、ユーザーにとって邪魔にならないほど「十分に小さい」と判断されます。
非同期化の問題に対するもう 1 つの解決策は、クライアント側予測と組み合わせて一般的に使用されるもので、サーバー調整と呼ばれます。[2]クライアントは、サーバーに送信するすべての入力にシーケンス番号を含め、ローカル コピーを保持します。サーバーがクライアントに正式な更新を送信すると、そのクライアントの最後に処理された入力のシーケンス番号が含まれます。クライアントは新しい状態を受け入れ、サーバーでまだ処理されていない入力を再適用し、ほとんどの場合、目に見える非同期化の問題を完全に排除します。
クライアント側予測を使用した最も古い一人称視点シューティングゲームはDuke Nukem 3Dで、1996年1月29日のシェアウェアリリース以来、この機能が組み込まれていました。[3] [4]この技術は、 Quakeの人気アドオンであるQuakeWorldでも目立つ機能でした。 ネットワークプレイはオリジナルのQuakeゲームに含まれていましたが、主にLANプレイに最適化されていました。高速な家庭用接続があったため (当時としては珍しかった)、Quakeの設計者は、高帯域幅と低 ping 時間の想定を見落としていました。そのため、ダイヤルアップユーザーにとってオンラインプレイはフラストレーションがたまるものでした。 [5]長いプライベートベータ版での一連の実験の後、id Software は新しい予測モデルを搭載したQuakeWorld をリリースしました。このモデルは、高レイテンシと低レイテンシの両方のプレイヤーに好評でした。
参照
参考文献
- ^ ab Bernier, Yahn W. (2001). 「クライアント/サーバー型ゲーム内プロトコルの設計と最適化における遅延補正方法」(PDF) 。2008 年 12 月 19 日閲覧。
- ^ Gabriel Gambetta、クライアント側予測とサーバー調整
- ^ Dransfield, Ian (2018-07-14). 「The Engine Room: Build」. Retro Gamer (182). イギリス: Future plc : 62–67. ISSN 1742-3155 . 2018年11月24日閲覧。
- ^ Duke Nukem 3D (v1.5 CD バージョン) ソース コード リリース - 2003 年 4 月 1 日、domovethings()、fakedomovethings()、fakedomovethingscorrect() を参照、Video Game Preservation、2019 年 5 月 15 日、 2019 年 5 月 15 日に取得
{{citation}}: CS1 メンテナンス: その他 (リンク) - ^ ジョン・カーマック、QuakeWorld .plan
