我想在純JavaScript和html5中開發遊戲,而不使用任何第三方插件。我面臨的問題是我無法找到一種方法將遊戲的不同「模塊」分成獨立的線程,例如渲染作業,遊戲邏輯,資產加載等等。
Web Workers似乎能夠將代碼分離到不同的線程中,但問題在於它們之間傳遞的信息有限。例如,對於渲染作業,因爲工作線程無法共享內存,所以我需要爲整個「世界」傳遞所有實體,網格,紋理等等,以便每次更新遊戲。它可以進行優化,比如僅在初始化時發送靜態對象(網格,紋理),然後僅發送更新對象的狀態(它是世界變換),但它仍然不可取。
用於遊戲開發的JavaScript多線程
有沒有辦法在它們之間發送大數據或讓它們共享一些對象?或者是否有完全實現真正多線程的不同方法?我知道有更簡單的方法來實現這個使用插件/齒輪,但我只需要使用可用的方法在開放的網頁;
儘管沒有從JavaScript中尋求「真正的」並行性的有效性中拿走任何東西,但是您提出問題的方式讓我建議您閱讀基於事件的編程模型。作爲一個例子(對於使用* model的軟件,沒有用JS編寫),基於事件的nginx webserver遠遠超過基於線程的Apache *,特別是在負載較重的情況下。舉個例子,不使用那些更傳統的並行性手段在Javascript中是部分故意的,並解釋爲什麼「web工作者」還沒有被廣泛使用/使用。 – 2011-06-14 20:09:55