【发布时间】:2016-12-31 04:06:56
【问题描述】:
我正在为使用 Unity 5 构建的开放世界游戏构建多人服务器。我选择 Socket.IO 作为实时框架,因为我比任何其他实时框架都了解它.
如何存储每个活跃玩家的插座,以便我可以根据他们与电线的距离来分类每个玩家。 (例如,仅将移动的玩家位置更新给附近的玩家,而不是发送给服务器上的所有玩家)?
【问题讨论】:
标签: unity3d socket.io multiplayer
我正在为使用 Unity 5 构建的开放世界游戏构建多人服务器。我选择 Socket.IO 作为实时框架,因为我比任何其他实时框架都了解它.
如何存储每个活跃玩家的插座,以便我可以根据他们与电线的距离来分类每个玩家。 (例如,仅将移动的玩家位置更新给附近的玩家,而不是发送给服务器上的所有玩家)?
【问题讨论】:
标签: unity3d socket.io multiplayer
对我来说,这听起来更像是一个数据结构问题。想到的一个简单方法是:
区域 - 这是游戏中空间的区域细分
玩家 - 这代表个人玩
插槽 - 与给定玩家交流的方式
播放器应该有一个对 Socket 的引用来进行通信。 player.SendMessage("hey there");
一个区域应该有一个玩家列表
zonePlayers = new List<Player> Players();
如果要在整个区域广播消息,只需遍历玩家列表并将该消息发送给每个玩家。
foreach (Player player in Players) {
player.SendMessage(msg);
}
弄清楚如何向玩家发送消息。 弄清楚如何在逻辑上将玩家分组在一起。
我刚刚阅读了有关 Socket.IO 的信息,他们已经有了房间。如果您为每个区域定义一个房间,并让玩家注册该房间并在他们完成/离开该区域时离开该房间 - 您可以利用已经内置的功能向群组发送消息。
【讨论】: