2

物理エンジンを使ってマルチプレイヤー ゲームを書きたいと思っていました。クライアントは計算に物理エンジンを使用し、ジャスト イン タイムで結果を表示しますが、もちろん、サーバーもすべてをシミュレートする必要があります。

私の知る限り、クライアントは通常、速度と位置をサーバーに送信します。私の考えは、代わりにキーの押下をサーバーに送信することでした。

送信位置/速度:

  • サーバーは動きを補間する必要があります。
  • このデータを物理エンジンに供給する方法がわかりません。
  • 内挿では、結果が正確でない場合があります。

キープレスの送信

  • クライアントとまったく同じように (キーを押すことで)、サーバーの物理特性をフィードできます。これは、コードが少ないことを意味します。
  • 補間は必要ありません。

では、私の考えのどこが悪いのでしょうか? なぜゲームで使われていないのですか?

4

2 に答える 2

1

これは主に 2 つの理由で使用されていません。

レイテンシの計算 - インターネットでは、サーバーとクライアントの間に 20 ミリ秒から 500 ミリ秒の遅延があるため、クライアント側とサーバー側の両方で計算する必要があります。通常起こることは、両側が物理を計算し、アクション (実際にはキーを押すことではない) がネットワーク経由で送信され、クライアントの時間でタイムスタンプが付けられることです。次に、サーバーは再び計算を行い、クライアント間の相互作用を計算し、軌跡の修正をクライアントに送り返します。

このようにして、クライアントはサーバーからのフィードバックなしにリアルタイムでゲームの展開を計算できます。サーバーがクライアントに他のプレイヤーのアクティビティ (通常はアクションとアクションの結果 (より一般的) の組み合わせ) を通知すると、修正されます。

これは、さまざまな種類の不正行為を思いとどまらせるために行われます。たとえば、クライアントが相手のエンジン推力について知ることが少なければ少ないほど、無許可の改造やチートを追加することが難しくなります。このようにして、クライアントは自身のエンジン推力、および位置/速度について知ることができます。 /対戦相手の加速ですが、それがどのように実現したかはわかりません。

于 2012-09-01T18:45:11.430 に答える
1

サーバー上で物理学を計算すると、サーバーに負荷がかかりすぎると確信しています。特により多くの人々と。これによりクライアントが高速化される可能性がありますが、サーバーがボトルネックになります。

于 2012-09-01T06:49:52.637 に答える