2

MMOゲームを作っています。TCP クライアント/サーバー通信を使用します。最初の私のアプローチは、クライアントとサーバーの両方を C++ で作成することでしたが、今では C# でサーバーを作成する方が簡単ではないかと考え始めています。

クライアントはクロスプラットフォームである必要があるため C++ で記述されますが、サーバーは常に Windows システム上にあります。C# を選択することを検討しています。これは、スレッドの処理が簡単で、XML パーサーが組み込まれているなどの理由からです。

私の質問は、それが良い解決策になるかどうかです。パフォーマンスは私にとって依然として重要なので、C++ よりも C# を選択するとパフォーマンスに大きな影響がある場合は、C++ を使い続けるでしょう。

また、C# サーバーと C++ クライアント間の通信を示すチュートリアルがあるかどうか知っていますか?

回答ありがとうございます。

4

2 に答える 2

2

C++ と C# のパフォーマンスの違いは、思ったほど大きくありません。

通信については、パフォーマンスが気になる場合は、ソケットとGoogle Protocol BuffersThriftなどを使用してください。パフォーマンスがあまり気にならない場合は、HTTP と JSON または XML を使用してください。

于 2012-11-29T09:35:00.577 に答える
1

クライアントとサーバーで異なる言語を使用すると、個人的には同期させたい別の言語でかなりの量を書き直す必要があります。

  • もちろん、そのためにライブラリを使用することもできますが、シリアライゼーションとデシリアライゼーション。Google Protocol Buffers は、帯域幅を節約し、「クロスランゲージ」で機能するように明示的に設計されているため、頭に浮かびます。
  • ゲームのほぼすべてのエンティティには、多かれ少なかれ共通のプロパティ セットがあります。異なる言語を使用する場合、これらを手動で同期させ、おそらく 2 回記述する必要があります。これは、より複雑なセッターでは特に厄介です;)
  • クライアントでサーバーの回答を「エミュレート」するための共有ロジックが必要になる場合があります。サーバーが「機敏な」動作を得るために何をするかをクライアント側で予測することが重要です。そして、サーバーとクライアントに同じコードベースを使用するよりも、その動作をより適切にエミュレートできるものは何ですか?

ただし、サーバーで C# を使用する場合、パフォーマンスに大きな問題は見られません。それはあなたの決定に強く影響する側面であってはなりません.

于 2012-11-29T09:35:37.403 に答える