7

友人と私は、FPSサーバーが接続されているクライアントを更新する方法について話し合っていました。バトルフィールドバッドカンパニー2で浮気をしている男のビデオを見て、画面上の敵の位置がどのように強調されているかを見て、考えさせられました。

彼の主張は、サーバーはクライアントに直接関連する情報でのみクライアントを更新するというものでした。つまり、サーバーは、敵のプレーヤーがクライアントから離れすぎている場合、または効率上の理由でクライアントの視界から外れている場合、敵のプレーヤーに関する情報を送信しません。しかし、彼は確信が持てませんでした。彼は、誰かが岩の後ろに隠れていて、誰も見ることができないという例を挙げました。プレーヤーが視線に3人のプレーヤーがいる場所で突然ポップアップした場合、サーバーが必要な情報を送信している間、プレーヤーが画面に表示されるまでに50ミリ秒の遅延が発生します。

私の主張は反対でした。サーバーがクライアントにすべてのプレーヤーに関するすべての情報を送信し、クライアントに許可されているものと許可されていないものを分類させるというものでした。サーバーがすべてをクライアントに送信し、いわばクライアントに手間のかかる作業を行わせる方が、実際には計算コストが低くなると思いました。また、これがチートプログラムの仕組みであると考えました。サーバーパケットを傍受し、敵の位置を取得して、クライアントのビューに表示します。

だから質問:現代のファーストパーソンシューティングサーバーがクライアントを最新の状態に保つために採用している一般的なポリシーや戦略は何ですか?

4

2 に答える 2

11

それはあなたの立場とあなたの友人の立場の間の妥協であり、各ゲームは彼らの望ましいトレードオフを達成するためにこれに関してわずかに異なる決定をします。サーバーは、必要以上の情報を送信しないようにする場合があります。距離チェックを実行しますが、サーバーが毎回正確な視線を計算するにはコストがかかりすぎるため、岩の後ろにある敵の位置を送信するなど、悪用される可能性のある情報を送信する必要があります。あなたが言及したレイテンシーの問題についても。

通常、FPSゲームは、より高速で定期的な更新レートを必要とするスムーズなゲームエクスペリエンスに関心があるため、他のゲームよりも多くの情報を「リーク」する傾向があります。さらに、MMOとは異なり、FPSプレーヤーは通常、チートによってゲームが台無しになっていることに気付いた場合、自由に別のサーバーに移動できます。

いくつかの追加の読書:

于 2010-05-17T11:08:08.823 に答える
3

開発者は誰でもクライアントを最初から書き直すことができると想定する必要があるという意味で、一般的なポリシーはクライアントを信頼しないことです。

そうは言っても、この種の情報をクライアントに送信することを避ける(そしてこの種の不正行為を防ぐ)のは難しいと思います。視線がない場合でも、クライアントは音源の3D位置などを必要とするサラウンドサウンドシステムを利用したい場合があるため、位置を(間接的に)送信する必要がある場合があります。

于 2010-05-16T20:59:45.613 に答える