私はActionScript 3で記述しているゲームエンジン用のC#サーバーアプリケーションで作業しています。私は不正行為を防止し、確実に公正なゲーム。これまではすべてがうまくいきます:C#でサーバーとクライアントの間の待ち時間を取得するには
クライアントが移動を開始すると、サーバーに通知され、ローカルでレンダリングが開始されます。サーバは次に、クライアントXが移動を開始したことを他の人に知らせ、細部の中でレンダリングを開始することもできます。クライアントが移動を停止すると、サーバーはクライアントに移動開始時刻とクライアントがチック遅延を表示して全員に返信するため、正しい値で更新できるように計算を行います。
サーバーの計算でデフォルトの20msのチック遅延を使用すると、クライアントがかなり遠くに移動すると、停止時に目立つチルトフォワードがあります。遅延を22msにわずかに増やすと、私のローカルネットワーク上ではすべてが非常にスムーズに実行されますが、他の場所ではまだ傾きがあります。少し実験したところ、余分な遅延はクライアントとサーバーの間の待ち時間に結びついていることに気付きました。私はそれを非常にうまく動作する式に煮詰めました:遅延= 20 +(レイテンシ/ 10)。
したがって、特定のクライアントとサーバー(私は非同期ソケットを使用しています)との間のレイテンシを取得するにはどうすればよいでしょうか。 CPUの負荷をあまり大きくすることはできません。また、これは本当に最善の方法ですか、これを行うにはより効率的で簡単な方法がありますか?
+1 "責任アインシュタイン"。 –