我搜索“最佳实践”来创建一个简单的多人浏览器游戏。我选择了nodejs作为后端,也许Phaser作为前端。但我对算法有疑问。 在每个教程中,服务器都会在客户端事件后做出响应。但是很多通用文章都谈到一个循环,该循环定期向所有客户端发送世界数据(例如 valve article )。
那么什么是真的呢?正确的程序是什么?这取决于游戏类型?
供您引用,我想做一个简单的双摇杆射击游戏,其中有一个小世界,我们必须在其中生存得尽可能长。我想做一个合作游戏。
感谢您的帮助。
最佳答案
你需要区分
- 由其他玩家的操作触发的更新直接影响您的玩家
- 以及由玩家的操作触发的更新
如果您使用 Node.js 构建应用程序,我假设您将为每个客户端使用一个 Web 套接字连接。
您可以随时通过 Web 套接字连接双向发送数据。完全没有限制,只要数据量适中即可。
服务器主动循环发送世界数据(使用JavaScript中的setInterval
实现)绝对是通知玩家是否受到其他玩家行为影响的不错选择。您还可以使用循环让服务器响应玩家的操作。
如果您假设循环始终以相同的顺序通知客户端(例如客户端#1、客户端#2、客户端#3、客户端#1,...等),则可以通过优先选择以下客户端来优化性能现在处于事件状态,并且正在进行大量事件(即“服务器在客户端事件后响应”)。特别是如果游戏中有很多玩家,这可以改善用户体验。
关于node.js - 使用nodejs进行多人游戏的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49161269/