2016-08-31 5 views
1

NodeJSでHTML5ゲームを作成しています(ウェブソケットを使用しています)。私のゲームを更新し、すべてのプレーヤーにデータを送信するために、私は33msの間隔(毎秒30回更新する)でsetInterval()を使用します。Nodejs/Javascript動的区間

ゲームに10人以上のプレーヤーが接続すると、websocketsライブラリが大量のCPUを消費し、setIntervalが何らかの遅延(27-28フレーム/秒)になります。

私のコードをプロファイリングした後、私のCPUがアイドル状態になっていることがわかった。だから私はチクチクしていた。私の全プログラムは、ループごとに33ms間隔でアイドル状態になっていますか? 動的な間隔を設定すると機能しますか?多くのプレーヤーが接続され、1秒あたりのフレーム数が低下し始めると、33msから28msにリセットされます。これはうまくいきますか?誰もこのようなシステムを使用してもらえますか?

敬具、 ダニエル

+0

を@Bergiするために、この感謝を含めたい接続しているユーザーは33msとし、ユーザながら10その後、設定された間隔の下にありながら、接続が10以上の場合は、間隔を28msに設定します。 –

+0

なぜ増加した負荷に対する反応としてインターバル**周波数**を上げますか? –

+0

@JaromandaXクライアント側で同じ周波数を維持するために、サーバーの周波数を上げます。私のプログラムは、すべてのループの間の33msの間隔の間にほとんどがアイドルであると思うので、毎ミリ秒を最大にしたいと思っています。 –

答えて

1

私は今、多くのより明確にあなたの問題を理解しています。私はそれにどのように取り組むのか分かりません。私は同様の質問を見つけました。解決策はsetIntervalではなくsetTimeoutを使用することではありませんでした。ループを実行するのにかかる時間を計算すると、同じロジックを適用できます。

javascript while loop or set interval with dynamic delay

EDIT

もあなたが言うwhileループを作ることができHow to create an accurate timer in javascript?

関連する問題