我正在使用Node.js和Socket.io构建一个大型多人在线游戏。所有玩家都将在同一无限地图上移动(类似于Minecraft)。当玩家移动时,我会加载他们可见的瓦片。当玩家移动时,应该将其移动发送给所有可以看到他们的玩家。
我的问题是:我应该如何构建我的sockets?拥有一个socket来处理所有玩家似乎不太可扩展。我可以将世界划分为块,但我不确定如何管理块边界。由于大多数玩家大部分时间都看不到彼此,因此我希望每个玩家的socket仅获得与他们相关的更新。
我已经了解到Socket.io有一个“房间”的概念,即接收相同消息的socket。为每个连接的玩家创建一个单独的房间是否可行?然后,每当其他玩家移动附近时,我会将其socket添加到该房间中。然后,每次玩家移动时,我可以向该房间发送消息。那么,当观众离开或加入房间时,我该如何管理?
显然,这是一个模糊的问题,但我只是寻求最佳实践建议。如果有关于此主题的文章链接,将不胜感激。
我的问题是:我应该如何构建我的sockets?拥有一个socket来处理所有玩家似乎不太可扩展。我可以将世界划分为块,但我不确定如何管理块边界。由于大多数玩家大部分时间都看不到彼此,因此我希望每个玩家的socket仅获得与他们相关的更新。
我已经了解到Socket.io有一个“房间”的概念,即接收相同消息的socket。为每个连接的玩家创建一个单独的房间是否可行?然后,每当其他玩家移动附近时,我会将其socket添加到该房间中。然后,每次玩家移动时,我可以向该房间发送消息。那么,当观众离开或加入房间时,我该如何管理?
显然,这是一个模糊的问题,但我只是寻求最佳实践建议。如果有关于此主题的文章链接,将不胜感激。