关于nodejs的多人游戏的最佳实践

时间:2018-03-07 21:12:02

标签: node.js nodes multiplayer

我搜索“最佳实践”来创建一个简单的多人浏览器游戏。我为后端选择了nodejs,也为前端选择了Phaser。但我有一个关于算法的问题。 在每个教程中,服务器在客户端事件之后响应。但是很多通用文章都谈到了一个循环,它会定期向所有客户端发送世界数据(例如valve article)。

那是真的吗?什么是正确的程序?这取决于游戏类型?

为了您的信息,我想做一个简单的双棒射击游戏,有一个小小的世界,我们必须尽可能长久地生存。我想做一个合作游戏。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你需要区分

  • 直接影响您的播放器的更新,这些更新由其他玩家的操作触发
  • 以及由播放器操作触发的更新

如果您使用Node.js构建应用程序,我假设您将使用每个客户端连接一个Web套接字。

您可以随时通过Web套接字连接发送数据。只要数据量适中,就没有任何限制。

服务器主动发送循环中的世界数据(在JavaScript中使用setInterval实现)绝对是告知玩家是否受到其他玩家行为影响的良好选择。您还可以使用循环让服务器响应播放器的操作。

如果您假设循环始终以相同的顺序通知客户端(例如客户端#1,客户端#2,客户端#3,客户端#1,...等等),您可以通过优先选择客户端来优化性能现在是活跃的,并且正在进行繁重的活动(即“服务器在客户端事件之后响应”)。特别是如果游戏中有很多玩家,这可以改善用户体验。