【发布时间】:2012-04-12 19:30:14
【问题描述】:
我正在使用 Node.js 和 Socket.io 构建一个大型多人游戏。所有玩家都将在同一张无限地图上移动(想想我的世界)。当玩家移动时,我会加载他们可见的图块。当玩家移动时,他们的动作应该发送给所有可以看到他们的玩家。
我的问题是;我应该如何构建我的套接字?为所有玩家提供一个插槽似乎不会扩展。我可以将世界分割成块,但我不确定如何管理块边界。由于大多数玩家大部分时间都无法看到彼此,我希望每个玩家的插槽只获得与他们相关的更新。
我读过 Socket.io 有一个“房间”的概念,它只是获取相同消息的套接字。是否可以为每个连接的玩家提供一个单独的房间,我可以在其中添加附近移动的任何其他玩家的插座?然后每次玩家移动时,我都可以向那个房间发送一条消息。那么当观众离开或加入房间时,我该如何管理呢?
显然这是一个模糊的问题,但我只是在寻找最佳实践建议。链接到有关该主题的文章将不胜感激。
【问题讨论】:
-
您有没有想过使用Quadtrees 来查找玩家位置? BrowserQuest source 是一个开始寻找解决方法的好地方。
标签: node.js websocket socket.io multiplayer