运行 NPC AI 脚本是否适合网络工作者?
Would running NPC AI scripts be a good use case for web workers?
我目前有一款游戏包含大约 1500 个非玩家角色,目前所有这些角色都是 运行 AI 脚本的一些变体。现在这个人工智能真的很简单。 NPC 只是随机地从一个位置走到另一个位置。这一切都发生在当前计时为 3 秒的游戏循环中,因为游戏以 3 秒为间隔进行。
现在我的 AI 似乎没有锁定 UI,但我想如果有更多的复杂性或更多的 NPC,它可能会开始在 UI 中引起问题。这对网络工作者来说是一个很好的用例吗?我的初步研究告诉我,我不应该创建太多网络工作者,这样类似的 AI 可能会汇集到自己的网络工作者中。
对于任何有兴趣实际查看代码的人来说,这段代码会让您对我正在做的事情有一个很好的了解,尽管此时已经重写了其中的大部分内容。 https://github.com/caimen/subfaction
所以我做了一些测试,网络工作者看起来确实是大量 NPC AI 的一个很好的用例。您确实可以通过网络工作者在后台进行大量处理来对 DOM 进行更改。不仅如此,它们确实是线程,并且至少在 Chrome 中确实利用了处理器内核。还有其他考虑因素,例如实际产生多少网络工作者,为此我找到了一个漂亮的核心估计器 https://github.com/oftn-oswg/core-estimator
有一个优秀的工具可能有点过时但仍然有效。它可以衡量有多少 web worker 最适合您的计算机,并给出有关其功能的有趣想法。
http://pmav.eu/stuff/javascript-webworkers/
当然,如果您的 AI 相当简单,并且您在 DOM 中没有遇到滞后,那么真的没有必要为此矫枉过正。
我目前有一款游戏包含大约 1500 个非玩家角色,目前所有这些角色都是 运行 AI 脚本的一些变体。现在这个人工智能真的很简单。 NPC 只是随机地从一个位置走到另一个位置。这一切都发生在当前计时为 3 秒的游戏循环中,因为游戏以 3 秒为间隔进行。
现在我的 AI 似乎没有锁定 UI,但我想如果有更多的复杂性或更多的 NPC,它可能会开始在 UI 中引起问题。这对网络工作者来说是一个很好的用例吗?我的初步研究告诉我,我不应该创建太多网络工作者,这样类似的 AI 可能会汇集到自己的网络工作者中。
对于任何有兴趣实际查看代码的人来说,这段代码会让您对我正在做的事情有一个很好的了解,尽管此时已经重写了其中的大部分内容。 https://github.com/caimen/subfaction
所以我做了一些测试,网络工作者看起来确实是大量 NPC AI 的一个很好的用例。您确实可以通过网络工作者在后台进行大量处理来对 DOM 进行更改。不仅如此,它们确实是线程,并且至少在 Chrome 中确实利用了处理器内核。还有其他考虑因素,例如实际产生多少网络工作者,为此我找到了一个漂亮的核心估计器 https://github.com/oftn-oswg/core-estimator
有一个优秀的工具可能有点过时但仍然有效。它可以衡量有多少 web worker 最适合您的计算机,并给出有关其功能的有趣想法。
http://pmav.eu/stuff/javascript-webworkers/
当然,如果您的 AI 相当简单,并且您在 DOM 中没有遇到滞后,那么真的没有必要为此矫枉过正。