Unity3d Socket.IO处理开放世界中的多玩家移动

Unity3d Socket.IO处理开放世界中的多玩家移动,unity3d,socket.io,multiplayer,Unity3d,Socket.io,Multiplayer,我正在为一个开放世界游戏构建一个多玩家服务器,我正在使用Unity 5构建。我选择Socket.IO作为实时框架,因为我对它的了解比任何其他实时框架都多 如何存储每个活动播放机的插座,使我能够根据每个播放机与电源线的距离对其进行分类。(例如,仅将移动玩家的位置更新为附近的玩家,而不是发送给服务器上的所有玩家)?这听起来更像是数据结构问题。我想到的一个简单方法是: 区域-这是游戏空间的区域细分 玩家-这表示一个人在玩 套接字-与给定玩家通信的方式 播放机应该有一个对套接字的引用来进行通信playe

我正在为一个开放世界游戏构建一个多玩家服务器,我正在使用Unity 5构建。我选择Socket.IO作为实时框架,因为我对它的了解比任何其他实时框架都多


如何存储每个活动播放机的插座,使我能够根据每个播放机与电源线的距离对其进行分类。(例如,仅将移动玩家的位置更新为附近的玩家,而不是发送给服务器上的所有玩家)?

这听起来更像是数据结构问题。我想到的一个简单方法是:

区域-这是游戏空间的区域细分
玩家-这表示一个人在玩
套接字-与给定玩家通信的方式

播放机应该有一个对套接字的引用来进行通信<代码>player.SendMessage(“你好”)

一个区域应该有一个玩家列表

zonePlayers = new List<Player> Players();
了解如何向玩家发送消息。 找出如何逻辑地将玩家分组在一起


我刚读到Socket.IO,他们已经有房间了。如果您为每个区域定义了一个房间,并且只有一个玩家注册该房间,然后在他们完成/离开该区域时离开该房间,那么您可以利用已经内置的功能向该组发送消息。

谢谢您的回复!我最终创建了一个方法,该方法对所有玩家进行排序,获取他们的X/Y/Z,并仅返回方法中参数指定的距离内的玩家。然后我可以向所有这些玩家发送更新。这可行吗?听起来是个合理的开始。如果它成为瓶颈,你将面临一个很好的问题要处理(玩家太多/世界太大),如果你每次发送一条听起来不必要的消息时都要遍历所有玩家。
foreach (Player player in Players) {
  player.SendMessage(msg);
}