2013-05-28 38 views
0

我在Meteor做了一個簡單的射擊遊戲。我還是很喜歡Javascript,所以我很確定我的代碼不是最高效的。我在流星中的遊戲有時會變得遲緩,有時候不是。

無論如何,一切工作在本地主機(當然)很好,而且我部署時大部分似乎沒問題。然而,有些時候會出現大量的滯後,而客戶將無法趕上長達30秒。畫布在客戶端每10ms更新一次,在服務器上每100ms更新一次。

這裏的遊戲: http://yujiangtham.com/jfleet/

來源: https://github.com/ytham/jfleet

我不知道從哪裏開始調試這一點。可能是因爲:

a)Mongodb不是爲這麼多快速讀/寫而構建的?

b)某處某處滯後,導致某種級聯滯後?

c)在畫布上更新很多HTML元素會導致客戶端滯後?

我真的很難過。任何指向正確方向的指針都會很棒。謝謝!

+0

此外,澄清...遊戲使用流星,所以它可以同時支持儘可能多的玩家在頁面上合作,因此根據我的理解,所有事情都需要數據庫寫入,以便遊戲的狀態在真實(ish)時間同步給所有玩家。讓我知道是否有更好的方法來做到這一點。 –

+0

在提出問題並針對每個問題提出一個問題之前,先解決您的問題。 – vinipsmaker

+0

@vinipsmaker這不是3個單獨的問題。我正在尋求幫助,從哪裏開始挖掘。謝謝。 –

回答

1

所以,我和一位以前經歷過某些事情的朋友聊過。基本上,解決這個問題的方法是不要頻繁地寫入數據庫。它在如此短的時間內無法處理這麼多的寫作。

基本上,他告訴我這樣做的方式是讓客戶端和服務器分別計算所有移動向量。從那裏,客戶端和服務器都應該預測每個精靈應該在哪裏,然後讓他們每200毫秒左右進行一次比較。任何差異都應該被服務器覆蓋並寫入數據庫。該數據然後被髮送回客戶端並覆蓋任何差異。我還沒有實際執行這個,因爲它需要一點花式的數學,但希望我會盡快得到它......

相關問題