グラフィックなしでXNAゲームを実行する


11

何も表示せずにXNAゲームを実行する方法があるかどうか疑問に思います。

私は、1人のプレーヤーがホストであり、他の人が彼のゲームに接続できるクライアントサーバーセットアップで実行される動作中のゲームを持っています。

グラフィックカードのない専用サーバーでホストとしてゲームを実行できるようになりました。基本的に、Draw()ロジックはまったく実行したくありません。

ゲーム全体を実行し、XNAへの参照をすべて削除する必要がありますか?

人々はこれをどのように行いましたか?

編集:私がこれをしたい理由は、ゲームにクライアントサーバーセットアップが機能していて、別個の「ヘッドレス」サーバープログラムを作成したくないためです。


なぜあなただけでコードを書くことができないDrawようなif (headless) { return; }
ashes999

1
@ asher999それがすべての描画およびグラフィックロジックをゲームから完全に削除するかどうかはわかりません。仮想サーバーには、実際のグラフィックアダプターがまったくない場合があります。
JensB 2013

出力タイプを変更したり、描画をスキップしたりしても、グラフィックスデバイスに対するXNAの依存関係が魔法のように削除されるわけではありません。グラフィックデバイス(特にテクスチャ)を必要とするコンテンツをロードする場合、提案されたソリューションのいずれかを使用してロードできない可能性が非常に高くなります。
dadoo Games

回答:


10

通常のC#プロジェクトを作成し、XNAバイナリを含めるだけです。これにより、XNAデータ型とフレームワークメソッドにアクセスできます。私のゲームはこれを行い、完璧に動作します。


1
XNAがUpdateなどの必要なメソッドを呼び出すように機能するラッパーを書いたと思いますか?これをやってみます、ありがとう。
JensB 2013

2

答えは、これを行わないことです。ゲームを作る必要がない場合-つまり; XNAが提供する機能を利用するつもりはないのに、なぜそれを行うのですか?あなたは本当にあなたがプレイしたいゲームをうまくシミュレートすることができるカスタムソフトウェアの開発を検討する必要があります-通常、ある種のコンソールシステムです。詳細を教えていただければ、より一般的でない回答で回答を更新します。


1
1つの理由を挙げましょう。単体テストです。多くの場合、グラフィックスをロードしたり描画したりすることなく、コードの一部またはセクションをテストする必要があります。
スティーブンティアニー2013

3
@StephenTierneyもう1つの理由を挙げましょう。彼は(専用マシンで)ゲームサーバーを実行しようとしているのではありません。質問をもう一度読んで、反対票を取り戻すことを検討してください。
Vaughan Hilts、2013


1

無題の提案に基づいて構築するには、DLLへの参照を含めるだけで、デフォルトのゲームループを使用せずにそれらを使用できます。この例については、クリエイタークラブのwinformsチュートリアルシリーズをご覧ください。http: //xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

さらに豪華にしたい場合は、XNAゲームループ全体を独自のカスタムループに置き換えて、プロセス全体を制御できます。この詳細については、 https://stackoverflow.com/questions/6361691/custom-xna-game-loop-in-windowsをご覧ください。


1

XNAプロジェクトの出力タイプを「コンソールアプリケーション」に変更すると、アプリケーションは実際のゲームのウィンドウを開かずに、起動時に空のコンソールを開くだけです。これは、テストを実行したいので、達成しようとしている作業に役立ち、コンソールをデバッグウィンドウとして非常に簡単に使用できます。


1

また、更新と描画の呼び出しをオーバーライドして、単純に戻ることもできます。

また、メインゲームクラスでグラフィックスデバイスを呼び出さないでください。これにより、サーバーとして機能するゲームでxnaウィンドウがインスタンス化されなくなります。

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