实时多人游戏的技巧

时间:2013-05-28 20:26:58

标签: php javascript mysql database database-connection

我正在尝试创建一个实时的多人网页游戏,现在我正在使用数据库来保存客户端操作,每个客户端都会向数据库发送一个AJAX,以便每100个连续检查其他玩家的行动或者200毫秒,我想知道是否有更好的方法来解决这个问题。

如果数据库中的某些内容发生变化,服务器是否有实际联系客户端的方法?然后,如果一个客户端做出了一个动作,服务器可以联系另一个客户端告诉它已经做出了一个动作。或者还有另一种方法可以比为每个客户端检查数据库的常量循环更好地进行此操作吗?

2 个答案:

答案 0 :(得分:1)

有多个HTML5 WebSocket解决方案(基本上推送和发送数据到实现),这种解决方案越来越受欢迎。 Pusher是一个选项(也是我最喜欢的),但还有其他一些可以通过搜索轻松找到的选项。我还要看看What are Websockets?this question

答案 1 :(得分:1)

我建议您查看一个客户端 - 服务器(websocket)框架,例如socket.io或SignalR。

使用这样的框架,您可以保持与服务器之间的持久连接。您可以将其与pub-sub模型结合使用,以便在同一游戏中将事件提升/传递给其他客户端(在服务器端验证之后)。

如果你想登录数据库,那很好,但不会使用数据库(除非你绑定到redis + pub-sub作为例外)作为你的传输。

请参阅:

  • 的WebSockets
  • 彗星(长轮询,everscroll,iframe事件)
  • 发布 - 订阅