【问题标题】:Socket.io vs WebRTC DataChannel for multiplayer game用于多人游戏的 Socket.io 与 WebRTC DataChannel
【发布时间】:2020-04-23 21:01:46
【问题描述】:

我正在尝试创建一个实时 3D 多人游戏,该游戏应每帧更新所有连接玩家的动作。

到目前为止,我使用 socket.io 在玩家之间共享数据,但其他玩家在移动时看起来有点跳跃和不流畅。

我基本上使用socket.emit() 将我的移动(位置、旋转)数据发送到服务器,然后服务器使用client.emit() 将所有其他玩家的移动数据发送回。

如果我使用 WebRTC 的 RTCDataChannel 代替它允许玩家之间的 P2P 通信,性能会提高吗?

【问题讨论】:

  • 不,不会的,我的游戏有这个问题,如果在本地托管它时发生这种情况,那么服务器逻辑很慢(即你可能嵌套了 for 循环或其他事情减少表现)。另一方面,如果在生产过程中发生这种情况,则可能是需要插值的延迟问题。这是一篇关于游戏中插值的文章。我发现这个网站对这些情况很有帮助gabrielgambetta.com/client-server-game-architecture.html
  • @Ameer 谢谢你的回答。但是 WebRTC 可以更快,因为它是 P2P 并且我可以使用 UDP 发送数据?
  • 可能会更快,但你必须考虑p2p通信涉及的安全风险,用户可能会更改正在发送的数据或发送恶意数据

标签: javascript websocket socket.io webrtc


【解决方案1】:

用于不可靠通信 (UDP) 的 RTCDataChannel 设置将比 socket.io (TCP) 更快,因为不需要等待丢弃的数据包。没有额外的安全风险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2013-05-22
    • 2016-11-09
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    相关资源
    最近更新 更多