2011-10-04 10 views
7

Javaで単純なツアークライアント/サーバーゲームを実装する必要があります。残念ながら、私はちょうどネットワークプログラミングから始まり、適切な解決法を選択することにいくつかの問題があります。Javaのクライアント/サーバーゲーム(アプレットあり)

2人のクライアントがサーバーに接続し、ユーザー名とパスワードで認証して再生できるチェスゲームを作成しているとしましょう。クライアントはアプレット(シンクライアント)としてプログラムする必要がありますが、私は何をサーバーとして使用すべきか分かりません。

私は、RMI、ソケット、サーブレットのようないくつかの異なる可能性について読んだことがありますが、どちらが自分のニーズに合っているかまだ分かりません。私はコミュニケーションがどのように行われるのか完全に理解していないので、少し混乱しています。

サーバ上で常時実行され、プレーヤを待つ実行可能なサーバを作成する必要がありますか?これは私にとって奇妙な方法のようです。または、これを行う簡単な方法がありますか?私はサーブレットを作ってTomcatサーバーに置くことができますので、サーバーがある場合にのみサーバーが実行されます。そのサーブレットはアプレット(クライアント)と通信できますか?その逆も可能ですか?*

私はいくつかのヒントに本当に感謝しています。

答えて

3

私はそれ以外のプレイヤーが接続できなかった、とにかく実行しますサーブレットを作成し、サーバが実行されますように、すべてのプレイヤーが存在する場合にのみ

にTomcatサーバ上のTomcatインスタンスを置くことができますそれ。

プレイヤーが接続するときに新しいゲームインスタンスを開始するサーバーを提供することができます。サーバー自体は常に実行する必要があります。

技術面では、あなたが気分が良いものを使用することをお勧めします。まだパフォーマンスは気にしないで、試してみてください。

すでに通信技術に関する知識がある場合は、それを試してみてください。制限を認識し、それらを考慮に入れてください(メッセージフォーマット、プッシュ/プル通信など)。

0

JavaでNetwrokアプリケーションフレームワークをお探しの場合は、Apache MINAについて読むことを検討してください。ドキュメントは、「ユーザーが高性能でスケーラビリティの高いネットワークアプリケーションを簡単に開発できるようにする」と主張しています。 Java NIOを介してTCP/IPやUDP/IPなどのさまざまなトランスポートをサポートしています。機能の要約はhereで見ることができます。

MINAの私の個人的な経験は、これまでのところ、さまざまなプロジェクトでよく使用されています。 1つの実装はあなたのケースに似ています。マルチプレイヤーゲームではありませんが、サーバーに接続する複数のアプレットが必要です。私はMINAが複数のセッションを処理するのに非常に良いと感じました。それは非常にきちんとしています。さらに、コードのスケーリングと保守が非常に簡単です。簡単にフィルタを追加し、プロトコルを定義できます。

ありません。良いtutorial available to jump startの初期設定はとても簡単です。

しかし、新興オープンソースプロジェクトのように、それにも問題があります。つまり、オンラインコミュニティは小さく、文書化は急速に進んでいますが、非常に限られています。

公式は、ほとんどの基本をカバーしています。詳細を知りたい場合は、適切な出発点です。

0

それはあなたが後になったゲームの種類によって異なります。アプレットは通常、アニメーションを(完全にJavaで)提示し、ブラウザからアクセスするのに適しています。実際の例は、クライアントのプレゼンテーションのためにFlashに向かうでしょう。

あなたのゲームがターンタイプのゲーム(チェス、カードなど)の場合、サーバ側でライブセッションを保存するためにハッシュテーブルまたはデータベースを適切に使用して、サーブレットまたはWebサービスまたはajaxの形式でロジックを実装できます。ゲームがユーザーエクスペリエンスの面でより関与している場合(Need For Speedの例)、カスタムサーバーの作成が理にかなっています。

関連する問題