6

私は現在、Javaサーバー側とas3クライアント側で作業しています。それらの間で時計を同期させるための銀の弾丸があるかどうか疑問に思います。可変遅延と可変クロック速度の間では、各パケットにタイムスタンプが必要になるようです。

ありがとう!

4

2 に答える 2

2

これは、コードなしで、頭のてっぺんから外れています。

  1. サーバーとクライアントにコードを配置して、ping を送受信します。
  2. クライアントが接続するたびに、クライアントからサーバーに ping を送信します。
  3. 現在の時刻を送信時刻として記録します。
  4. クライアントが ping を受信したら、受信時刻の現在時刻を記録します。
  5. 受信時間を送信時間で引き、2 で割り、時間遅延を取得します。
  6. サーバーが現在の時刻をクライアントに送信するようにします。
  7. サーバーが送信した時刻から時差を引きます。
  8. クライアント時刻を手順 6 の時刻に設定します。

これが 100% 正確に機能するかどうかはわかりませんが、これが役立つことを願っています!

于 2012-04-30T01:42:16.243 に答える
0

いいえ、特効薬はありません。即興で対応する必要があります。タイムスタンプは良いアイデアです。また、サーバーで行われる計算を最小限に抑えるようにしてください。無関係なものをシミュレートしないでください。ゲーム ロジックを壊すと思われるものだけをシミュレートしてください。残りはクライアントに計算させ、結果をサブスクライバーにブロードキャストするだけにします。

于 2012-04-07T16:03:47.217 に答える