首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在游戏中使用Web Workers有意义吗?

在游戏中使用Web Workers有意义吗?
EN

Stack Overflow用户
提问于 2010-08-08 23:31:54
回答 1查看 2.3K关注 0票数 7

我正在做一个游戏,有AI逻辑,运动等和绘图。使用Web Workers计算移动和AI逻辑有意义吗?但我该怎么做呢--因为工作线程需要知道太多关于主线程的信息,比如碰撞的某些物体的位置,子弹的数量等等。这感觉不太可能,因为工作线程完全独立于主线程,没有任何访问权限。我确实知道有一个postMessage()系统,但感觉很...嗯,很痛苦吗?

例如,我有一个步枪手对象,它代表一个拥有精灵的步枪手,位置,健康等。我想让他巡逻。那么,我该如何对工作人员执行巡逻代码呢?它几乎需要访问该对象的全部权限。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-09 00:05:48

我认为在游戏中使用webworkers确实是有意义的,但这意味着你必须保留一个游戏状态对象,该对象可以转换为有效的JSON,然后传递给WebWorkers。在好的方面,你也可以把大量的内部数据放入这些网络工作者中。

代码语言:javascript
运行
复制
var gameState = {
   sprites: {
      {
         type: 'rifleman',  // damage, accuracy, speed etc set inside appropriate webworker.
         owner: 'playerA', 
         x: 100,
         y: 100,
         z: 0,
         level: 1, // used to fetch modifiers to dmg, acc, speed etc.

      },
      {
         // each sprite it's own state obj.
      }
   }
}

然后设置一个webworker用于巡逻和可能的事件(您也可以呼叫webworker中的其他webworker并处理巡视事件)

代码语言:javascript
运行
复制
var patrolWorker = new WebWorker('patrolWorker');
patrolWorker.onmessage = function(e){
   render(e.data); // your render function, can ALSO be a webworker if you like ;)
}
patrolWorker.postMessage(gameState.sprites);

现在必须清楚的是,使用WebWorkers实际上在很大程度上是一个架构决策,如果你想使用它们,它将涉及到大量的重构。如果没有重构,我怀疑它对你有什么用处。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3434878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档