在多人Socket.io游戏中管理套接字

我正在用Node.js和Socket.io构建一个大型多人游戏。 所有玩家都会在同一张无限地图上移动(想想Minecraft)。 随着玩家的移动,我加载他们看得见的瓷砖。 当玩家移动他们的动作时应该发送给所有可以看到他们的玩家。

我的问题是; 我应该如何去构建我的套接字? 对于所有玩家来说只有一个插座看起来好像不会缩放。 我可以将世界分成块,但我不知道如何管理块边界。 由于大多数玩家在大部分时间都无法看到对方,所以我更希望每个玩家的套接字只能获得与他们相关的更新。

我读过Socket.io有一个“房间”的概念,它只是插座可以获得相同的信息。 为每个连接的玩家设置一个单独的房间,我可以添加任何其他在附近移动的玩家的插槽,这是否可行? 然后,每次玩家移动时,我都可以向该房间发送消息。 当观众离开或加入房间时,我该如何管理?

显然这是一个模糊的问题,但我只是在寻找最佳实践建议。 有关该主题的文章的链接将不胜感激。


这是设计MMO服务器的基本问题之一。 通常,您希望每个客户端都有一个套接字,并且实现了将客户端订阅到特定区域的逻辑。

地区是设置“渠道”来控制数据订阅的好方法。 您可以为每个地区分配不同的名称,并使用Socket.io房间将玩家订阅到某个地区。

在所有这一切都完成之后,事情变得更加容易处理。 因此,如果玩家在特定区域内移动,则服务器所要做的就是将“玩家移动”事件发送给事件X米内所有地区的所有用户。

链接地址: http://www.djcxy.com/p/44731.html

上一篇: Managing Sockets in a Multiplayer Socket.io Game

下一篇: Socket.IO not working properly