2

私は C# で比較的小さなシューティング ゲーム プロジェクトに取り組んでおり、ボクセルのチャンクでマップ データを、プレイヤーの動きのデータ、戦闘データ、および将来的にはおそらく他のものと共に送信する必要があります。サーバーとクライアント間のデータのシリアライゼーション/デシリアライゼーションに protobuf-net を使用することに決めましたが、パケット自体をどのように送信すればよいかわかりません。protobuf-netの例では TcpListener.BeginAcceptTcpClient を使用していますが、この例は決してベスト プラクティスではないことを警告しています。私は 1 つのサーバーで少なくとも 30 人のユーザーをサポートすることを目指していますが、もちろん、シューティング ゲームプレイがリモートで実用的であるほど遅くならないように、64 人まで増やしたいと考えています。TCP 接続をどのようにセットアップしてパケットを処理すればよいですか?

4

1 に答える 1

3

リアルタイムの高性能データ交換に TCP を使用するのは少し奇妙に思えます (ただし、状況によっては、またネットワーク スキルによっては、TCP を使用することもできます)。信頼性は重要な要件ではなく、リアルタイムの世界データを取得することであるため、特に LAN セットアップを使用している場合は、UDP 接続を使用する (例: Lidgrenを使用する) 方がはるかに理にかなっています。

最後に、ゲームの観点から見た TCP と UDP の違いに関する興味深い記事があります。

于 2013-05-28T20:53:33.833 に答える