2012-04-06 9 views
6

私は現在、Javaサーバー側とas3クライアント側で作業しています。彼らの間に時計を同期させるためにそこに銀の弾丸があるのだろうかと思っています。可変待ち時間と可変クロック速度の間には、各パケットにタイムスタンプが必要なようです。ゲーム(MMORPG)クライアントとサーバーの時間/イベントを同期させますか?

ありがとうございます!

+0

NTPまたはその変異体? – Thomas

+0

@Thomasこれはシステム時間に適していますが、これはイベント同期と待ち時間の問題であり、クライアントが不正確な情報を不正行為または不正確な情報にすることを避けるためです。 –

+0

サーバー側とクライアント側のモデリングを行います。クライアント入力をマウスとキーボードの入力に制限します。タイミングで100%の正確さを得ることは決してできず、推定を行い、段階的な是正措置を講じる必要があります。 – dqhendricks

答えて

0

いいえ、銀色の弾丸はありません。即刻する必要があります。タイムスタンプは良いアイデアです。 また、サーバー上で実行される計算を最小限に抑えてください。無関係なものをシミュレートしないでください。あなたのゲームロジックを分割すると思われるもの。クライアントが残りの部分を計算させて、 。

2

これは私の頭の上にあり、コードは一切ありません。

  1. pingを送受信するコードをサーバーとクライアントに入れてください。
  2. クライアントが接続するたびに、クライアントからサーバーにpingを送信します。
  3. 現在時刻を送信時刻として記録します。
  4. クライアントがpingを受信すると、受信時刻に現在時刻を記録します。
  5. 送信時刻から受信時刻を差し引いて2分周して時間遅延を取得します。
  6. サーバーにクライアントに現在時刻を送信させます。
  7. 送信されたタイムサーバーとの時差を減算します。ステップ6.

からの時間にクライアントの時間を設定し

  • 私は、これは正確に100%に動作するかどうかわからないんだけど、私はこのことができます願っています!

  • +1

    はい、これは正しい方法だと思います。概念的には、各クライアントとサーバーにタイムスタンプを格納する必要があります。時間オフセットを知ることで、それぞれの時間を調整します。 –

    関連する問題