哪种方式可以管理时间和实时事件?
我正在用Node.js实现一个小型多人RPG游戏。 我有很多NPC,每隔3或4秒移动一次,所以我需要更新它们。
解决方案A:
每个NPC使用一个setTimeout
。如果我有数百个NPC,我会创建定时器。
它更简单但效率不高?
解决方案B:
为所有NPC使用一个setTimeout
。每次,我们通过计算NPC移动前最小的剩余时间来调用下一个超时。
所以我们必须使用更复杂的代码,但我们只有一个setTimeout
。
它有更好的/其他方式吗?
答案 0 :(得分:0)
正如相关问题所说,setTimeout
便宜。但是,它不是免费的。
您可以使用与memcached类似的方式使用单个setTimeout
。它有一个大阵列。每秒,它会检查此数组的第一项(或最后一项),并查看是否需要执行某些操作。如果有的话,那就是它。然后,它删除该项目。冲洗并重复。
这是实施背后的基本思想。通过考虑空桶或类似的东西,你可能会获得更好的性能,但是一个简单的实现应该已经非常高效。