node.js - 使用nodejs进行多人游戏的最佳实践

标签 node.js nodes multiplayer

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

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

供您引用,我想做一个简单的双摇杆射击游戏,其中有一个小世界,我们必须在其中生存得尽可能长。我想做一个合作游戏。

感谢您的帮助。

最佳答案

你需要区分

  • 由其他玩家的操作触发的更新直接影响您的玩家
  • 以及由玩家的操作触发的更新

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

您可以随时通过 Web 套接字连接双向发送数据。完全没有限制,只要数据量适中即可。

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

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

关于node.js - 使用nodejs进行多人游戏的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49161269/

相关文章:

asp.net - IOS 上无服务器多人游戏

node.js - Nodejs Https 认证

algorithm - 可以选择 n-1 条边来形成具有 n 个节点的连通图的方式数

Swift 4 toRaw() 更新?

node.js - 查询发送错误 : read ECONNRESET 的 Sequelize 错误

javascript - 使用JavaScript反转链表,该功能不起作用

Android 实时多人游戏 - 房间创建失败

node.js - 无法加载 c++ bson 扩展,使用纯 JS 版本——没有 Mongoose ,没有 express ,只有 Node 驱动程序

mysql - 如何从 Node mysql返回结果

node.js - Docker Hub - Node 存储库 - 正在运行什么操作系统?