.NETターンベースのゲームで使用するネットワークエンジン/ライブラリ/システムはどれですか?[閉まっている]


7

C#で抽象的な戦略ターンベースゲームを開発しています。

そのため、高いネットワーク負荷は予想されません。プレイヤーは常に接続している必要はありません。ホストは、現在のプレーヤーが接続して移動するのを待つことができます。それを実行するWebサイトを作成できることはわかっていますが、自分のゲームをホストできるようにしてほしいです。

信頼できるものが必要で、それによって生産性を高めることができます。

私はすでにWCFを進めています。それは良い選択でしたか?他にどのネットワークフレームワークを検討する必要がありますか?


1
WCFは二重接続をサポートします(接続が開いた後、クライアントまたはサーバーは相互にメッセージを送信できます)。また、余計な手間をかけることなく、さまざまなプロトコル(TCP + HTTP)を同時に処理することもできます。
jpbochi

回答:


2

私は自分のターンベースの戦略ゲームにWCFを使用してきましたが、非常にうまくいきました。耐久性のあるセッションは優れており、クライアントコールバックを備えた二重チャネルは、サーバーから自由にクライアントにメッセージをプッシュするのに理想的です。WCFは複数のエンドポイントバインディングもサポートしているため、ローカルプレーヤーを名前付きパイプバインディング経由で接続し、リモートプレーヤーをTCPバインディング経由で接続できます。

各ターンで大量のデータを送信する場合は、バイナリ形式のTCPバインディングをお勧めします。


3

WCFで快適かつ生産的に感じる場合は、他に何かを使用する強い理由はないかもしれません。WCFは、その契約パターンに従うと、必要に応じて他のシステムで動作するように変換するのが簡単なパターンになるため、開始するのに適していると思います。

私自身のプロジェクトの1つとして、WCFプロトタイプから始めました。「ラストマイル」を開始したとき、私は多くの場合、物事を成し遂げるためにWCFと戦っていました。特に、WCFのピアツーピアスタックでのゲームマッチメイキングに問題があり、必要なツールが十分に提供されませんでした。そのプロジェクトで、結局XNAのネットワークライブラリに切り替えました。これにより、探していたXboxのようなマッチメイキング(およびゲーマータグなど)が得られ、WCFで(ひどく)エミュレートしようとしました。(もちろん、XNAのネットワークライブラリは、XNAゲームで作業していることを前提としていますが、残念ながら、GfWライブコントラクトのないWindowsでのゲームの公開はサポートしていません。)

WCFからXNA Netへの切り替えでは、コントラクト自体(インターフェイスクラス)はそれほど(WCF属性を削除する以外)変更しなかったので、ネットワークコードの多くには触れませんでした。私の契約を実装または消費するリーダー/ライタークラスを書くことは、かなり簡単でした。おそらく両方のサポートを少し変更することで維持できたかもしれませんが#if WINDOWS、その時点でWCFのサポートをやめることにしました。これは、そのプロジェクトの処理が簡略化されたためです。おそらく興味深いのは、XNAネットワーキングで他のプロジェクトを直接開始する際に、WCFのインターフェイス/プロキシ主導の「契約」パターンを使用していることです。私はそれをフォローするのは良いパターンだと思うので、その件についてブログ投稿を書くつもりでした。


1

単に「ターン」の変更をやり取りしているだけなら、あなたは最良の道を進んでいます。WCFを使用すると、特に.NETをすでに知っている場合は特に、開発作業をそれほど増やすことなく最大の柔軟性を得ることができます。

レイテンシはゲームの問題ではないようですので、WCFはあなたからのメッセージエンコーディングのすべてを抽象化し、パフォーマンスの最後のすべてのビットを調べる必要がないため、この抽象化は素晴らしい選択です。害を及ぼすよりもあなたにとって有益であるべきです。


1

Neutronを検討してください:http : //www.exitgames.com/Neutron

ターンベースのゲーム、アカウント管理、その他すべてをネイティブでサポートしています。

代替テキスト

ただし、月額少なくとも100ドルかかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.