【发布时间】: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