网络工作者是否对HTML5游戏进行物理模拟?


12

有点与此问题有关

这个想法是要尽可能保证相同的物理行为。可以在网络工作者上运行固定时间步长的物理方法吗?用户界面将使用不同/可变的刷新率进行更新。

有人尝试过吗?


您假定通过使用网络工作者可以获得什么?到目前为止,我的回答是,那会起作用,但是为什么要打扰呢?
aaaaaaaaaaaa

Answers:



2

这可能有效,但是WebWorker遵循观察者模式document(拥有工作人员的html页面)只能侦听和向工作人员发布消息或从工作人员发布消息。我猜有很多选择。在所有情况下,我认为您都需要找到某种方法来确定用户代理的最佳FPS,以便优化信息。然后您可以:

  • 告诉工人在这些时间间隔发布消息
    • 缺点:您必须假设document响应准备就绪。
  • 告诉,document每隔一定时间间隔向工作人员发送一条消息,要求工作人员进行操作x,然后工作人员将在此后不久(希望)发布响应。
    • 缺点:由于所有帖子和响应都是异步的,因此工作人员的请求和响应之间可能会有延迟。在这种情况下,您还必须使该onmessage事件无效,以防止您document不希望听到的事件发生。

我确定还有其他事情我想念的,或者是处理通讯的方法。我将自己期待有关该主题的其他答案!


1
a)关于性能的警告!考虑requestAnimationFrame并向其发出“保持生命”的信号,这样,如果该选项卡放在后台(也许时间太长),就不会烧坏CPU
Vincent Scheib

b)IIRC来自工作程序的所有消息将在主线程上接收,它们将排队。考虑一下如果您有5个更新但只需要最新的更新会对您的主线程产生什么影响。您也不能说您还有更多机会。
文森特·舍布

c)所有消息都在复制数据。您必须在线程之间发送的数据越多,数据复制和垃圾回收工作就越多。因此,只有在高计算/消息数据比率的情况下,这里才会存在胜利。
文森特·舍布

@Vincent,关于B),这就是为什么我说您要么需要document一直通过寻找合理的fps来做好准备,要么选择第2种方法,即工作人员在document要求之前什么都不做。
凯文·佩诺

2

Physijs使用一名网络工作者。它将ammojs物理与Three.js对象粘合在一起,并根据需要对其进行更新。我相信,它具有固定和可变的时间步长

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.