友人と私は、FPSサーバーが接続されているクライアントを更新する方法について話し合っていました。バトルフィールドバッドカンパニー2で浮気をしている男のビデオを見て、画面上の敵の位置がどのように強調されているかを見て、考えさせられました。
彼の主張は、サーバーはクライアントに直接関連する情報でのみクライアントを更新するというものでした。つまり、サーバーは、敵のプレーヤーがクライアントから離れすぎている場合、または効率上の理由でクライアントの視界から外れている場合、敵のプレーヤーに関する情報を送信しません。しかし、彼は確信が持てませんでした。彼は、誰かが岩の後ろに隠れていて、誰も見ることができないという例を挙げました。プレーヤーが視線に3人のプレーヤーがいる場所で突然ポップアップした場合、サーバーが必要な情報を送信している間、プレーヤーが画面に表示されるまでに50ミリ秒の遅延が発生します。
私の主張は反対でした。サーバーがクライアントにすべてのプレーヤーに関するすべての情報を送信し、クライアントに許可されているものと許可されていないものを分類させるというものでした。サーバーがすべてをクライアントに送信し、いわばクライアントに手間のかかる作業を行わせる方が、実際には計算コストが低くなると思いました。また、これがチートプログラムの仕組みであると考えました。サーバーパケットを傍受し、敵の位置を取得して、クライアントのビューに表示します。
だから質問:現代のファーストパーソンシューティングサーバーがクライアントを最新の状態に保つために採用している一般的なポリシーや戦略は何ですか?