【问题标题】:Turn based web game in PHP - communication issuePHP中基于回合的网络游戏 - 通信问题
【发布时间】:2010-08-14 18:44:02
【问题描述】:

我正在开发一款 PHP5 回合制网页游戏。

这是一个非常简单的游戏,一种棋盘游戏:两个人加入一个“会话”,然后玩直到其中一个获胜。

简而言之我的问题:

  • 用户 A 和用户 B 玩游戏。

  • 用户 A 轮到他了

  • 请求将被发送到服务器以执行必要的操作。
  • 现在是用户 B 移动的时候了..

但是我如何通知用户 B?

我的意思是,现在服务器必须与其他用户进行通信,即非活动用户,而不是发起请求的用户。

我知道这可以使用某种周期性的 AJAX 调用来实现,该调用检查对手是否完成了他的回合等,但是这样的事情会产生大量的请求。

没有更好的方法来解决这个问题吗?

我在想这样的事情:

  • 用户A的回合结束
  • 服务器保存他的分数
  • 服务器联系用户 B
  • 开始轮到用户 B。

这是否可能以某种方式使用 PHP 和彗星式请求?或者有更好的方法吗?

任何帮助将不胜感激!

提前致谢!

【问题讨论】:

    标签: php communication


    【解决方案1】:

    当前正在运行的游戏/回合的内存数据库,以及用户 B 每 1.5 秒左右进行一次检查,不会真正产生 巨大 数量的请求或服务器负载。

    您甚至可以根据适合您的游戏的情况设置投票方案,例如 7s、5s、3s、2s、1s、1s 等。

    你甚至可以完全不使用 PHP,如果你只是在一个回合完成时 touch 一个会话文件,并检查最后修改的客户端。

    【讨论】:

      【解决方案2】:

      PHP 套接字!

      http://php.net/manual/en/book.sockets.php

      server listen
      client_a connect
      client_b connect
      client_a send start game to server
      client_a send move to server
      server send play client_b
      [...]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-28
        相关资源
        最近更新 更多