2017-11-19 6 views
0

私は、人々がさまざまなゲームに参加できるロビーを持つマルチプレイヤーゲームを開発しています。Javaサーバーの各ゲームルームのスレッド?

ゲームルームごとにスレッドを開始するかどうか不思議です。

私は既に各プレーヤーのためのスレッドを持っているので、私はjava.ioを使用しています。

各スレッドに負荷がかからないにもかかわらず、多くのスレッドがサーバーを減速させることはありますか?

私は100人のプレイヤーと30の部屋のためにサーバーをホストすれば、avarage仮想サーバーは一度に150スレッドを処理できますか?それともゲームプレイに影響を与えますか?

各位置更新(UDP)のインスタントメッセージ配信が必要なリアルタイムゲームですか?

+0

一般に、スレッドより多くのスレッドを使用すると、同時にパフォーマンスを低下させることができます。しかし、この数字が小さいほど、パフォーマンスのわずかな差はおそらく複雑さを増すほどの価値はありません。 (スレッドを130回程度切り替えることなく、100クライアントと30ルームのそれぞれの作業を少しでも行うことができないという事実から、パフォーマンスのコストがかかります)より効率的な設計では、これらのコンテキストスイッチはすべて回避できます。 ) –

+0

@DavidSchwartzはい、各プレイヤーと接続ごとに別々のオブジェクトを持つことで、デザインがずっと楽になります。助けてくれてありがとう、それは他のものについてあまり心配するよりも、私のデザインに集中するのが良いです:) –

答えて

0

スレッドは(すでに知っているように)タスクを同時に実行することができます。スレッドの負荷があると、サーバーの速度が常に低下するというわけではありません。これは、インターネット速度やコンピュータの処理能力などの他の要素によって制限されます。反対側の人々のゲームプレイは、コンピュータがすべての要求を処理できるように高速で実行されます.10000スレッドを持っていても、すべてインターネットを介して処理能力と接続が必要です。

要するに、サーバーとクライアントの速度は、サーバーを使用している他のユーザーの影響を受けます。速度は、インターネット接続の速度および/またはCPUの電力によって制限されます。

これはあなたの質問に答えていない場合は、多くの一般的な質問をするのではなく、実際の質問をより明確に定義してください。

EDIT: あなたのコメントを読んだ後で私のアドバイスをしてください:あなたの考えはサーバーに最適だと思いますか?ストランドの負荷があっても、サーバーは良いか悪いかに影響しません。 :)

+0

十分に私を慰めてくれてありがとう。私はちょうどそれがサーバーのための最良のオプションではないにもかかわらず、それが本当に悪くはならないかどうかを知りたがっていました。 –

関連する問題