C# 视距,球员位置更新

C# 视距,球员位置更新,c#,synchronization,multiplayer,C#,Synchronization,Multiplayer,我正在为多玩家RPG编写一个服务器,目前我正在努力实现一个视距。由于有些地图相当大,我必须限制客户看到的内容。我的做法: 如果我从客户端获得新坐标,我会将它们与移动开始时间一起保存为目标。每x毫秒,我会检查世界上所有的生物,并在保存它们上次更新时的位置后,更新它们当前的位置。基本上,我根据移动开始时间和速度计算新位置,并将其写入当前位置变量,同时保存新的开始时间。一旦这个更新完成,我将浏览所有移动的生物,也就是那些与上次更新位置不同的生物。在一个子循环中,我再次检查所有生物/客户机,检查是否必须

我正在为多玩家RPG编写一个服务器,目前我正在努力实现一个视距。由于有些地图相当大,我必须限制客户看到的内容。我的做法:

如果我从客户端获得新坐标,我会将它们与移动开始时间一起保存为目标。每x毫秒,我会检查世界上所有的生物,并在保存它们上次更新时的位置后,更新它们当前的位置。基本上,我根据移动开始时间和速度计算新位置,并将其写入当前位置变量,同时保存新的开始时间。一旦这个更新完成,我将浏览所有移动的生物,也就是那些与上次更新位置不同的生物。在一个子循环中,我再次检查所有生物/客户机,检查是否必须通知他们(dis)出现的生物。目前,我每100毫秒运行一次更新

这种方法是有效的,但我觉得这不是最好的方法。而且我不确定一旦我有了世界上几千种生物(玩家、怪物等),将会发生什么,它们必须被更新和检查

因为我找不到关于这个特殊问题的资源,所以我在这里提问。
这个方法行吗?我会很快遇到问题吗?这样做的标准是什么?最好的方法是什么?

< P>这可能有助于解决/解决这个问题。

< P>你可能想考虑将游戏世界分割成基于玩家角色可以看到的区域的部分。这样你就不需要一直在游戏中循环每个生物;你只需要在玩家角色所在的区域内循环,如果有东西越过了边界,你只需要在任何相邻的区域上循环

我个人还没有做过这种编码,但我确实在一个太空战斗游戏中和一个这样做的人合作过,我正在为这个游戏开发GUI