0

マルチプレイヤーを XNA ゲームに組み込み、同時にサーバーを構築しようとしていますが、サーバーがどのような形式であると想定されているかわかりません。

プレイヤーがホスティングしているほとんどのゲームでは、サーバーは非表示で、独自のウィンドウはありません。ゲーム内にロビーを作成するだけで、バックグラウンドでサーバー スレッドが実行されます。

そのような説明が私が欲しいと思うものですが、これを開発するための最良の方法は何ですか? サーバーをコンソール アプリケーションとして起動し、コンソールを起動してプレーヤーがロビーを作成したときにコンソールを非表示にする方法を見つけるか、コードを xna ゲーム内のスレッドに移植する方法を見つける必要がありますか? Windows フォーム アプリケーション テンプレートを使用する必要がありますか? これについて最善の方法は何ですか?

4

2 に答える 2

5

概念的には、サーバーは次のもので構成されます。

  • サーバー側のゲームロジックとネットワークインフラストラクチャを実装するクラスのセット、および
  • ホストアプリケーション。
    • ゲームクライアント、または
    • 専用サーバープロセス

適切に設計されたコードを使用すると、これら2つの部分はほぼ直交します。ログやサーバー管理ツールなど、細部を除いてください。ソケットは、Windowsフォームアプリケーション内で実行されているかコンソールアプリケーション内で実行されているかを気にしません。質問は彼らとはまったく無関係です。

したがって、本当にやりたいことは、サーバークラスをクラスライブラリプロジェクトに配置し、サーバーをホストするために必要なアプリケーションからそのプロジェクトを参照することです。そして、そのホストアプリケーションはほとんど何でもかまいません。プレーヤーがクライアントを介してサーバーをホストする場合はXNAゲーム、専用サーバープロセスが必要な場合はWindowsサービス、またはその他の完全なものにすることができます。

その時点で、それは単にServer.Start()ホストアプリケーションの適切な場所(たとえば、バックグラウンドスレッド)から呼び出す(またはあなたの場合に当てはまるものは何でも)問題です。

于 2012-08-22T20:16:49.330 に答える
1

XNA である Terraria には、コンソール ウィンドウ サーバー アプリケーションとメイン ゲームがあります。ホスティングの種類は、ゲーム内ホスティングと専用サーバーです。どちらのホスティング タイプも実際には同じサーバー アプリケーションを使用しますが、専用サーバーは通常どおりプロセスを実行するだけですが、ゲーム クライアントはコンソール ウィンドウ アプリを非表示モードで実行するため、タスク バーに表示されたり、ウィンドウとして表示されたりしません。

思考の糧!

于 2012-08-22T23:41:47.327 に答える