XNAフレームワークはサーバー側プログラミングに適していますか?


11

テキストベースのMUDを作成しようとしているので、XNAフレームワークの要素の多くは、必要なものに適しているように見えます。特に一般的なゲームループ、ネットワーキングなどのようなものです。XNAはUIとオーディオを備えたインタラクティブな環境に密接に結合されているようです。そのため、適切な方法かどうかはわかりません。

これらの種類の側面を自分で再作成する方が簡単ですか、XNAフレームワークを必要なものに曲げようとするのですか、それともこのタイプの作業に適したフレームワークはありますか?

回答:


5

XNAフレームワークが、テキストベースのゲームのサーバー側で多くの使用を提供することはないと思います。そのユースケースの標準.NETフレームワーククラスライブラリを確認する必要があります。

しかし、質問を少し広げると、XNAフレームワークは実際にはクライアント側の2Dおよび3Dゲーム開発を対象としていますが、2Dまたは3Dゲームのサーバー側でそれらの一部を使用する原因がある可能性があります。サーバーはクライアントと同じように可視性や衝突テストなどを行う必要があるため、サーバーでグラフィックエンジンの一部を再利用するのが一般的です。そのシナリオで、エンジンがXNAの数学ライブラリを使用している場合は、サーバーコードでもリンクする必要があります。


3

C#を使用している場合は、WCFを使用してネットワーク層を抽象化することを検討する必要があります。相対的に言えば、MUDにはネットワークトラフィックがそれほど多くないので、このルートを使用すると、処理が非常に簡単になります。私はターンベースの戦略ゲームにWCFを使用してきましたが、それはかなりうまくいきました。


1
一般的には同意しますが、WCFはストレートtelnet接続をサポートしていません。通常のテキストベースのMUDの場合、ユーザーがtelnetサーバーにアクセスできるようにすることは当然です。
Agent_9191 2010

@ Agent_9191目標によってtelnetは、より堅牢なAPI(WCF上に構築されたものなど)の上にインターフェイスをレイヤーにすることが理にかなっています。
Cody Brocious

WCFはレイテンシを導入しないのでしょうか、それともrawソケットと通信するカスタムバインディングを使用しますか?
ネイト

まあ、もし彼がtelnetインターフェイスを必要とするなら、とにかくWCFはおそらく良い選択ではないでしょう。それはやり過ぎだと思います。しかし、送受信される情報が比較的単純であること、つまり多くのWebサービスのペイロードよりもかなり単純であることを考えると、待ち時間が問題になるとは思わないでしょう。私はかなり複雑なターンベースの戦略ゲームにWCFを使用しており、パフォーマンスの問題は発生していません。カスタムシリアライゼーションを使用してペイロードを小さくしています。メッセージが頻繁に送受信されないため、レイテンシは問題になりません(私のプロジェクトでは、ほとんどのメッセージングは​​各ターンの終わりに行われます)。
Mike Strobel、2010

1

XNAルートにアクセスして、必要な特定の要素(オーディオ、ネットワークなど)を使用できます。しかし、それはプロジェクトの複雑さを増し、コードベースの「即時の理解」を減少させます。

基本的に、ミドルウェアを追加すると、ミドルウェアの実装を詳しく調べない限り、コードが実際に動作する方法に関する知識が減少します。距離を置くと、効率、能力、理解が失われます。

したがって、上記のように、C#と適切な非XNAライブラリーを使用する方がはるかに有益です。

あなた自身の啓発のためにこれをしているなら、あなたはその地域に興味があるところにあなた自身を転がすこともできます-あなたはこの方法でより多くを学ぶでしょう。

頑張れ!楽しんで!


1

それはあなたの要件に大きく依存します。

オーディオ、友人の招待などのサポートに興味がある場合は、XNAが適していると思います。

ネットワーキングにXNAを使用する際に直面する主な制限は、ゲームあたり32プレイヤーというプレイヤー制限です。

XNAフレームワークを使用してゲームを開発する場合、すべてのさまざまなAPIに結合する必要はありません。多くの人々はXNAフレームワークを使用していますが、ネットワーキングは他のフレームワークに依存しています。

私の提案は、物理的に(メモ帳などでそれらを書き留めて)ネットワークの側面についてのニーズと要望をリストすることです。次に、さまざまなフレームワークを比較対照します。


-1

私は「ゼロから作成する」と言いがちですが、それはC#とMUDのコードを別々に処理したことに基づいた単なる直感です。とにかく、XNAから使用できる可能性のあるものの独自のバージョンをロールすることで、より多くの制御が可能になり、より多くを学ぶことができます。

少なくとも参考までに、既存のMUDエンジンを使用しない理由はありますか?


参考までに既存のエンジンを使用しています。既存のCベースからSMAUGコードベースをC#に移植しようとしています。つまり、機能セットはほとんど定義されており、C#で機能するだけです。
Agent_9191 2010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.