我正在用Node.js和Socket.io构建一个大型多人游戏。所有玩家都会在同一张无限地图上移动(想想Minecraft)。随着玩家的移动,我加载他们看得见的瓷砖。当玩家移动他们的动作时应该发送给所有可以看到他们的玩家。在多人Socket.io游戏中管理套接字
我的问题是;我应该如何去构建我的套接字?对于所有玩家来说只有一个插座看起来好像不会缩放。我可以将世界分成块,但我不知道如何管理块边界。由于大多数玩家在大部分时间都无法看到对方,所以我更希望每个玩家的套接字只能获得与他们相关的更新。
我读过,Socket.io有一个“房间”的概念,它们只是能够得到相同消息的套接字。为每个连接的玩家设置一个单独的房间,我可以添加任何其他在附近移动的玩家的插槽,这是否可行?然后,每次玩家移动时,我都可以向该房间发送消息。当观众离开或加入房间时,我该如何管理?
显然这是一个模糊的问题,但我只是寻找最佳实践建议。有关该主题的文章的链接将不胜感激。
您是否想过使用[Quadtrees](http://en.wikipedia.org/wiki/Quadtree)查找玩家位置?开始寻找如何解决这个问题的好地方是[BrowserQuest源代码](https://github.com/mozilla/BrowserQuest)。 – hughsk 2012-03-30 00:16:23