我有一個多人遊戲大廳,用戶可以創建私人聊天室並開始私人遊戲。每個用戶在遊戲中都有一個健康欄,它假設每秒緩慢重新生成x點。Node.js異步setInterval遊戲循環?
我想我需要在每場比賽開始的時候,這是類似的東西來啓動服務器端遊戲循環:
setInterval(update('gameID'),1000);
哪裏更新(「遊戲ID」)增加健康變量中的所有玩家1000 ms = 1秒的特定遊戲。
問題:我認爲這是異步嗎?我可能會有50個單獨的遊戲正在進行,其中有50個正在運行。主流程不會被阻止嗎?
是否有足夠的效率讓setInterval客戶端調用服務器端的「updateHealth()」函數?或者我應該按照修改健康點的所有可能行動(攻擊,治療等),並確保他們在使用時調用「updateHealth()」。然後,在同一個有效遊戲中,對所有玩家的所有健康值(最大值爲4)進行客戶端預測。 – Legendre
我認爲你應該觸發客戶端'setInterval',但不是太頻繁。您可以讓客戶端計算健康狀況,並且每調用一次5秒(或更短)的秒數,您就可以調用服務器端的'synchronize'函數來評估真正的健康狀況(和其他值),並將其發回給更新數據的客戶端。我就是這麼做的,但也許是其他更好的方法。 – freakish
同步功能必須在攻擊,治療其他玩家的行爲上被調用嗎?服務器需要更新健康狀況,然後應用更改。 我想,當我在它時,我應該將更新間隔更改爲5秒,以幫助減少服務器負載。 :p – Legendre