LAN のような低遅延、高スループット環境だけでなく、インターネット上で動作するマルチプレイヤー ゲームを作成したいと考えています。
さまざまなプレイヤーの位置と速度に関する情報の送信など、UDP が明らかに適している私のゲームのネットワークの側面がいくつかあります。このデータはできるだけ早く受信する必要があり、ドロップされたパケットを再送信しても役に立ちません。そのデータは、クライアントに到達するまでには無関係であるためです。一部のパケットがドロップされてもまったく問題ありません。
ただし、私のゲームには、順序どおりの保証された配信を厳密に必要とする他の側面がいくつかあります。パケットの自動フラグメンテーション (大量のデータを分割して元に戻す) も非常に便利です。TCPがこれをすべて行うようです。厳密に順序が正しく、欠落パケットがない限り、データはまったく役に立ちません。場合によっては、このタイプのデータでは必然的に遅延が発生しますが、これは避けられません。
そのため、UDP の上に TCP のような機能を実装する代わりに (データ バッファー、順序を決定するための番号でパケットにラベルを付ける、パケット確認システムを使用)、それが正しく効率的に機能することを確認するには、膨大な作業が必要になります。 'TCP と UDP を同時に使用したい。
ただし、TCP と UDP を同時に使用すると、帯域幅をめぐって互いに競合する可能性があり、TCP を使用すると UDP ドロップ パケットの割合が増加すると聞いています。これは本当ですか?これら 2 つのプロトコルを混在させる場合に対処しなければならない問題は他にありますか?