2

管理时间和实时事件的最佳方式是什么?

我正在使用 Node.js 实现一个小型多人 RPG 游戏。我有很多 NPC,每 3 或 4 秒移动一次,所以我需要更新它们。

解决方案 A:setTimeout每个 NPC 使用一个。如果我有数百个 NPC,我将创建为计时器。它更简单,但效率不低吗?

解决方案 B:setTimeout对所有 NPC 使用一个。每次,我们通过计算 NPC 移动之前的最小剩余时间来调用下一次超时。所以我们必须使用更复杂的代码,但我们只有一个setTimeout.

它有更好/其他方式吗?

4

1 回答 1

0

正如相关问题所说,setTimeout很便宜。但是,它不是免费的。

您可以以与 memcached 工作类似的方式使用单个setTimeout。它有一个大数组。每秒钟,它都会检查这个数组的第一项(或最后一项),看看是否有什么需要做的。如果有,它会这样做。然后,它会删除该项目。冲洗并重复。

这是实现背后的基本思想。通过考虑空桶或类似的东西,您可能会获得更好的性能,但是一个简单的实现应该已经非常高效了。

于 2012-10-16T16:06:59.327 回答