2011-11-13 7 views
1

私は現在、自分のゲームにJavaネットワーキングライブラリKryonetを使用する予定です。 TCPよりも速いので、私はUDPプロトコルを使用します。しかし私は私が唯一のUDP上で実行しているサーバーが必要な場合にのみ、 TCPとUDPの両方で、サーバの実行を許可するように見える、KryonetのAPI、その非常にクリーンなコードが好きです。Kryonetサーバーは1つのプロトコルでのみ実行できますか?

答えて

1

私は、UDPがTCPよりも "高速"であると仮定するべきではないと思います。 TCP SACKNACKパケットは、古いTCPスライディング・ウィンドウのみのシステムよりも高速再送要求を可能にし、Explicit Congestion Notification強化はそれがはるかに容易ピアネットワークが扱うことができる最高に近づい速度で通信できるようになります。 (UDPはドロップされたパケットにつながる渋滞を忘れたデータを送信し続けることになる)

テストいくつかの意図したピア間の帯域幅、遅延、およびパケット損失

とパフォーマンスが向上している1参照します。私はそれがほぼ同じになると確信しています。 FPSと同様のリアルタイムゲームの

+1

、あなたはそれが比較的同じ速度で実行されます言っていますか? – liamzebedee

+0

ああ、すべてのクライアントがこれをサポートしていますが、これをKryonet/networkingコードにどのように統合すればよいでしょうか? – liamzebedee

+0

クライアントのバインディングも両方の環境で動作するので、私はTCPとUDPの両方を実行しているKryonetでサポートされているサーバーを想定していました。そして、両方のFPSを実行するFPSはどちらのタイプのクライアント接続でもほぼ同じ速度で動作するはずです。実際には、各UDPパケットが失われたり、順不同で配信されたりする可能性があるため、クライアントがパケットを失った後にクライアントが「追いつく」ことができるように、パケットはパケットごとにより多くの冗長データを含める必要があります。 TCPストリームは、冗長データを送信する必要はありません。クライアントがすべてのデータを順番に取得するためですが、再送信によっては時々100msが追加される可能性があります。 – sarnold

関連する問題