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

时间:2016-12-30 08:02:12

标签: unity3d socket.io multiplayer

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

如何以一种方式存储每个活动播放器的插槽,这样我就可以根据它们与电源线的距离来分类每个播放器。 (例如,仅向附近的玩家更新移动的玩家位置而不是发送给服务器上的所有玩家)?

1 个答案:

答案 0 :(得分:0)

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

区域 - 这是游戏中空间的区域细分 玩家 - 这表示个人玩耍 套接字 - 与指定玩家沟通的方式

播放器应该引用Socket进行通信。 player.SendMessage("hey there");

区域应该有一个玩家列表

zonePlayers = new List<Player> Players();

如果要通过整个区域广播消息,只需遍历播放器列表并将该消息发送给每个播放器。

foreach (Player player in Players) {
  player.SendMessage(msg);
}

了解如何向玩家发送消息。 弄清楚如何将玩家逻辑分组在一起。

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