ゲームルーム、一般チャットなどのロビービューに基づいてチェスのマッチメイキングシステムを作成しています。これまではプロトタイプがありましたが、私はいくつかのことについて大きな疑問を抱いています。サーバーでやった。ゲーム用ロビーサーバーを書くことは私にとっては新しいプログラミング体験であるため、明確で正確なプログラミングモデルはありません。どのように動くべきかを記述した論文を見つけることもできませんでした。私はAmazonから「Java Network Programming 3rd edition」を注文し、まだ出荷を待っています。この本で有用な例や情報を見つけてください。Java-ロビーゲームサーバーの作成方法
一方、私はあなたの意見を集め、いくつかのことをどう扱うかを見て、サーバーを正しく書く方法を学ぶことができます。私の頭の上からいくつかの質問があります:(もっと来るかもしれません)
まず、サーバーが何をするかを定義しましょう。主な機能は、クライアントとのTCP接続を保持し、生成したイベントをリスンして他のプレーヤーにディスパッチすることです。しかし、それ以上のことはありますか?
クライアントごとに1つのスレッドを使用する必要がありますか?その場合、300クライアント= 300スレッド。あまりにもそれほどですか?それをサポートするためにはどんなハードウェアが必要ですか?ロビーはどれくらいの帯域幅を消費しますか?
クライアントのソケットを保持するには、どのようなデータ構造を使用する必要がありますか?スループットを損なうことなくイベントをディスパッチするために反復処理を行う際に、それを同時に変更することからどのように保護しますか(たとえば、プレーヤーがロビーに入るか存在するか) ConcurrentHashMapはここで正しい答えですか、あるいは私が知るべきいくつかのテクニックがありますか?
ユーザーがロビーに入ると、ロビーの状態を彼に転送するためにどのようなメカニズムを使用しますか?そして、これが起こっている間に、他の出来事はどこで泡立ちますか?
入力が大変ありがとうございます。ありがとう!
スクリーンショット:http://goo.gl/pYqM3
おかげで私は、あまりにもすぐに質問をしていませんよ。私はすでに実用的なプロトタイプを持っています。試験に行く限り、私はそれらを行うことができます。問題は、私は実際の同時接続とさまざまなことをやっているユーザーが必要だということです。どうやってやるの..? – user1021269