23

本当にシンプルなゲームを想像してみましょう...私たちは、インターネットを介してリアルタイムで出口を見つけようとしている迷宮と2人のプレーヤーがいます。

すべての移動で、ゲームクライアントはプレーヤーの座標をサーバーに送信し、別のクライアントの現在の座標を受け入れる必要があります。どうすればこの交換をこれほど速くすることができますか(すべての現代のゲームがそうであるように)。

わかりました。memcacheまたは同様のテクノロジーを使用して、サーバー側でのデータマイニング操作を減らすことができます。最速のWebサーバーなども使用できますが、タイミングに問題があります。

だから、質問は...

  1. サーバーと情報を交換するために通常使用しているプロトコルゲームクライアントは何ですか?
  2. この問題を解決するためにどのサーバーテクノロジーが登場しますか?
  3. ゲーム中の遅延などで戦うためにどのアルゴリズムが適用されるか。
4

3 に答える 3

8

通常、ネットワーク補間と予測を使用します。Gamedevは優れたリソースです:http ://www.gamedev.net/reference/list.asp?categoryid = 30

こちらもチェックしてください:http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

于 2010-05-17T09:39:19.943 に答える
7
  • TCPではなくUDPを使用する
  • カスタムプロトコルを使用します。通常、「コマンド」を定義する1バイトと、コマンド引数を含む後続のバイトをできるだけ少なくします。
  • 予測は、フレームごとに更新を取得しなくても、他のプレーヤーの動きをスムーズに見せるために使用されます

ヒント:実際のゲーム速度は通常遅い(〜25fps)ため、予測はとにかく高速画面更新(〜60fps)をスムーズにするために使用されます。

于 2010-05-17T09:37:40.890 に答える
6

他の回答は、元の投稿でいくつかの重要な誤解を説明していません。つまり、これらのゲームはWebサイトではなく、まったく異なる動作をします。特に:

  • 高速化する必要のある「データマイニング」はないか、ほとんどありません。最速のオンラインゲーム(ファーストパーソンシューティングゲームなど)は、通常、試合中にディスクに何も保存しません。MMOなどの低速のオンラインゲームは、主にプレーヤー情報を保存するためにデータベースを使用する場合がありますが、ほとんどの場合、プレーヤーとワールドのデータをディスクではなくメモリに保持します。
  • 彼らはウェブサーバーを使用しません。HTTPは比較的遅いプロトコルであり、TCPだけでも一部のゲームでは遅すぎる可能性があります。代わりに、その特定のゲーム専用に作成された特注のサーバーがあります。多くの場合、これらのサーバーはスループットではなく低遅延に調整されています。これは、通常、Webサーバーのように大きなドキュメントを提供するのではなく、多くの小さなメッセージ(たとえば、キロバイトではなくバイト単位で測定)を提供するためです。

これらの2つの問題がカバーされると、速度の問題はほとんどなくなります。サーバーにメッセージを送信し、100ミリ秒以内に応答を受け取ることができ、1秒間に数回それを行うことができます。

于 2010-05-23T10:04:15.190 に答える