2017-06-08 11 views
-1

私は小さなマルチプレイヤーゲームを構築しており、覚えにくい時間があります。setIntervalの設定です。私は、クールダウン時に実行する能力を与えたり、実際の時間間隔(5秒ごとや2秒間のクールダウン)で特定のオブジェクトをスポーンする能力をプレイヤーに与えたいとします。問題は、サーバsetIntervalをリアルタイムコンセプトと同期できないことです。例えばnodejs setintervalリアルタイムに変換する

私はcooldownsを実行し、このループがあります。

setInterval(function() { 
    game.mechanics.buffered.cooldowns.run(); 
}, 10); 

を私は高い数値にそれを置く場合、私は、彼らは私がこの10値を下げた場合、cooldownsを高速に実行することを通知遅くなるが、私していますどのようにリアルタイムで同期させるのか分かりません。私は最初の場所でサーバのループにどのような値を入れておくべきか知っていませんが、今のところは10msで満足していますが、リアルタイムのクールダウンは現時点ではうまくいきません。

ロジックポイントはsetTimeoutですが、setIntervalは、setTimeoutの間はプログレスバーを提供する可能性があります。

このループを正しく設定するにはどうすればいいのでしょうか?それで、2秒間持続して2秒後に実行されるクールダウンオブジェクトで言うことができます。

+0

'問題は、サーバのsetIntervalループとリアルタイムコンセプトを同期できないことです。 ' - ハァッですか? 'Date.now()'は常にあります。 –

答えて

0

これは完璧な解決策ではありませんが、それはあなたを始めます。

var last = 0, 
    current = 0, 
    tick = 10, 
    seconds = 3; 

setInterval(function() { 
    current += tick; 
    if(current - last >= seconds * 1000) { 
     last = current; 
     console.log(new Date().getSeconds()); 
    } 
}, tick); 
+0

コンソールログには、時々スキップする(misses 1秒)のように気付くことがありますが、実際にどのように動くか考えています。 –

関連する問題