我正在为一个使用Unity5构建的开放世界游戏构建一个多玩家服务器,我选择了Socket.IO作为实时框架,因为我比任何其他实时框架都更了解它。
我如何存储每个活动玩家的插座,这样我就可以根据每个玩家离线的距离对他们进行排序。(例如,只将移动中的球员位置更新给附近的球员,而不是发送给服务器上的所有球员)?
发布于 2016-12-31 04:06:57
对我来说,这听起来更像是数据结构问题。脑海中浮现的一个简单方法是:
Zones -这是一个游戏中空间的区域分解
Player -这代表一个人在玩
Socket -与给定播放器进行通信的方式
播放器应该具有对套接字的引用以进行通信。player.SendMessage("hey there");
一个区域应该有一个玩家列表
zonePlayers = new List<Player> Players();如果要通过整个区域广播消息,只需迭代球员列表并将该消息发送给每个球员。
foreach (Player player in Players) {
  player.SendMessage(msg);
}弄清楚如何向玩家发送消息。弄清楚如何在逻辑上将玩家分组在一起。
我刚读到关于Socket.IO的报道,他们已经有房间了。如果你为每个区域定义了一个房间,并且只有一个玩家注册了该房间,并在他们整个/离开该区域时离开了该房间-你可以利用已经内置的功能来给群发消息。
https://stackoverflow.com/questions/41392781
复制相似问题