用于游戏开发的JavaScript多线程

Col*_*tru 6 javascript html5 multithreading web-worker

我正在考虑用纯JavaScript和html5开发游戏,而不使用任何第三方插件.我面临的问题是我找不到将游戏的不同"模块"分成单独线程的方法,如渲染作业,游戏逻辑,资产加载等.

Web Workers似乎能够将代码分成不同的线程,但它们的问题是我可以在它们之间传递有限的信息.例如,对于渲染作业,我需要传递整个"世界",包含所有实体,网格,纹理等等,以便每次更新游戏,因为工作线程无法共享内存.它可以被优化,比如仅在初始化(网格,纹理)上发送静态对象,然后仅在更新时发送对象的状态(它的世界变换),但它仍然是不可取的.

有没有办法在它们之间发送大数据或让它们共享一些对象?或者是否有完全不同的方法来实现真正的多线程?我知道使用插件/齿轮有更简单的方法来实现这一点,但我只需要使用开放式网络中可用的方法;

Cat*_*hen 6

JavaScript 的 Web Worker 在某种程度上是一种更好的并发编程模型。例如,它是事件驱动的并且没有共享对象。这意味着您不能进入网格锁(因为根本没有锁)并且对象不能通过同时被两个线程修改而进入无效状态。

问题是你不能轻易地将传统的游戏系统堆叠在这个模型之上。所以你需要以一种新的方式设计游戏系统来采用这种编程模型,我认为这可能是昂贵的。