2011-10-31 9 views
-1

ゲームルーム、一般チャットなどのロビービューに基づいてチェスのマッチメイキングシステムを作成しています。これまではプロトタイプがありましたが、私はいくつかのことについて大きな疑問を抱いています。サーバーでやった。ゲーム用ロビーサーバーを書くことは私にとっては新しいプログラミング体験であるため、明確で正確なプログラミングモデルはありません。どのように動くべきかを記述した論文を見つけることもできませんでした。私はAmazonから「Java Network Programming 3rd edition」を注文し、まだ出荷を待っています。この本で有用な例や情報を見つけてください。Java-ロビーゲームサーバーの作成方法

一方、私はあなたの意見を集め、いくつかのことをどう扱うかを見て、サーバーを正しく書く方法を学ぶことができます。私の頭の上からいくつかの質問があります:(もっと来るかもしれません)

まず、サーバーが何をするかを定義しましょう。主な機能は、クライアントとのTCP接続を保持し、生成したイベントをリスンして他のプレーヤーにディスパッチすることです。しかし、それ以上のことはありますか?

クライアントごとに1つのスレッドを使用する必要がありますか?その場合、300クライアント= 300スレッド。あまりにもそれほどですか?それをサポートするためにはどんなハードウェアが必要ですか?ロビーはどれくらいの帯域幅を消費しますか?

クライアントのソケットを保持するには、どのようなデータ構造を使用する必要がありますか?スループットを損なうことなくイベントをディスパッチするために反復処理を行う際に、それを同時に変更することからどのように保護しますか(たとえば、プレーヤーがロビーに入るか存在するか) ConcurrentHashMapはここで正しい答えですか、あるいは私が知るべきいくつかのテクニックがありますか?

ユーザーがロビーに入ると、ロビーの状態を彼に転送するためにどのようなメカニズムを使用しますか?そして、これが起こっている間に、他の出来事はどこで泡立ちますか?

入力が大変ありがとうございます。ありがとう!

スクリーンショット:http://goo.gl/pYqM3

答えて

-1

注意すべき最初の事は単一正解がないことです。このようなものを巻き上げるには、100万種類の異なる完全に有効な方法があります。

それはあなたがアップフロントデザインのさまざまな側面を考えていることは良いですが、アップフロントデザインについてあまりにも多くのことを決定しようとすると、下にあなたを遅くし、おそらくない最高の設計につながることを注意してください。その理由は、もはやあなたが最初にどのくらい長くそして難しいと思うことでもなく、あなたがあなたがそれらをヒットするまでどんな問題になるか分からないからです。

あなたは最初からこれをやっている場合は、私は強くソフトウェアを設計するには、このアプローチをとる、test-driven developmentの適用をお勧めします:

  1. 失敗テストケースを書く実装するための小さな機能を選択してください機能が正しく実装されている場合にのみ合格となります。
  2. テストパスを可能にする最小限のコードを書きます。
  3. 手順1に進みます。

新しいコードをすべて強制的に実行するように強制すると、できるだけ早く問題が発生するようになります。また、自動化された一連のテストが終わると、いつでもどこでも稼動しているシステムを確実に使用できます。

これを数回適用すると、デザインが現れ始めます。短期間でそれを行うことで、あまり重要ではない機能の詳細をウサギの後ろにとらえずに、次に重要な機能が何であるかを頻繁に評価する機会が与えられます。

TDDについては、多くの文献があります。私はこれらのいくつかをチェックアウトをお勧めします:あなたの応答のための

+0

おかげで私は、あまりにもすぐに質問をしていませんよ。私はすでに実用的なプロトタイプを持っています。試験に行く限り、私はそれらを行うことができます。問題は、私は実際の同時接続とさまざまなことをやっているユーザーが必要だということです。どうやってやるの..? – user1021269

関連する問題