像agar.io和slither.io这样的游戏如何优化他们的多人/事件广播并确定向每个玩家发送的数据? 我们可以将来自玩家的事件/数据发送给其他所有玩家,但现在需要发送的数据服务器数量呈指数级增长。
我想到的第一件事是空间分区:按可见区划分地图。当玩家在区域之间移动时,他们在新区域中注册(添加到该区域中的玩家阵列)并接收该区域中其他玩家的位置。 当玩家进行动作(即移动)时,将向其区域内的玩家广播事件(每侧+1个区域)。
其他想法是可见度半径,但我无法确定最佳算法(对于每个玩家,确定其可见半径中的玩家 - 我们现在处于O(N ^ 2)复杂度。)
我也听说过四叉树,但我不知道如何应用它。
是否有任何现有算法可以解决这个问题?