2017-04-19 16 views
1

私はユーザー間のリアルタイム同期が必要なゲームを構築していますが、現在はtcpを使用しています。リアルタイムゲームのピアツーピア対サーバクライアント

ゲームは15人の同時ユーザーをサポートしています。送信するデータがある場合は20ミリ秒ごとにサーバーにデータを送信し、1ユーザーの場合は最大400バイト、ユーザーは50ミリ秒ごとにサーバーにデータを送信します。

私はなぜ各ユーザーの接続データをサーバーに送信しないと思っていたのだろうと思っていましたが、彼は "他の"接続データを返信し、各ユーザーを実行しているゲームは他のすべてのユーザーに現在の情報udpを使用してください。

第2のアプローチは、現在のサーバークライアントの道を保ち、

何速くなります UDP TCPから変化していますか?それは現在のTCPクライアントサーバーの速度と何らかの違いがありますか?

+0

この質問はあまりにも広い答えです。 IPネットワーク上での2者間の直接通信は、仲介による通信よりも遅くなくてはならないと考えるかもしれませんが、メッセージルーティングとローカルネットワークの条件が異なると、直接通信が遅くなることがあります。また、15人のプレーヤーすべてが互いに直接通信するためには、14人の同時接続を管理する必要があり、何らかの同期信号が必要な場合もあります。 –

+1

NATを監視する!あなたはUDPを送信する場合uが[パンチ](https://en.wikipedia.org/wiki/UDP_hole_punching) –

答えて

-1

これは、ゲームの種類によって異なります。 クライアントが信頼できない(不正な変更が可能)ため、通常はサーバクライアント(UDP)が使用されます。

UDPは、クライアントまたはサーバがパケットを廃棄する不正なインターネット接続を持つ場合にのみ速くなります。これは、TCPの再試行のためです。データが失われることにご注意ください。

+0

を検討する必要があるさらに、中央サーバーを介して通信すること(「私はDDOS攻撃を開始しますmetagamingから多少の選手を保護私のゲーム内攻撃を開始するのと同じように、プレイヤー2の上で)、より良いプライバシー/匿名を維持する。 –

+0

@John Bollinger IPアドレスはリークされません。しかし、サーバはレート制限を必要とします – anonman

+0

OPが提案するようにプレイヤが互いに直接通信する場合、どのようにIPアドレス*が失敗する*ことができますか? –

0

UDPは必ずしも意味では速くなりません...それはスピード物事を助けるでしょうが。 UDPは、パケットが宛先に到達するかどうかは考慮しません。パケットがより多くのデータを送信する前に宛先に到達するのを待つ代わりに、できるだけ早く送信を続けます。ターンベースではないリアルタイムゲームが必要な場合は、UDPを試してください。

+0

...そして、あなたがデータ損失を許容できるかどうか。 –

+0

すべてのリアルタイムゲームは、ある程度のデータ損失を許容する必要があります。 – Anonymous