我正在为多人 RPG 编写服务器,目前正在努力实现视线范围。由于有些地图相当大,我必须限制客户看到的内容。我的做法:
如果我从客户端获得新坐标,我会将它们保存为目的地,以及移动开始时间。每隔 x 毫秒,我会遍历世界上的所有生物,并在保存它们上次更新它们时的位置后更新它们的当前位置。基本上,我根据移动开始时间和速度计算新位置,并将它们写入当前位置变量,同时保存新的开始时间。更新完成后,我将检查所有移动的生物,也就是那些位置与上次更新不同的生物。在一个子循环中,我再次遍历所有生物/客户,以检查我是否必须通知他们有关(消失)出现的生物。目前,我每 100 毫秒运行一次此更新。
这种方法很有效,但我觉得这不是最好的方法。而且我不确定一旦世界上有几千个生物(玩家、怪物等)会发生什么,这些生物必须更新和检查。
由于我无法找到有关此特定问题的资源,因此我在这里询问。这种方法好吗?我会很快遇到问题吗?这样做的标准是什么?最好的方法是什么?