2

我想将我的游戏开发扩展到多人游戏领域,但是我没有资金购买具有套接字的适当服务器,也没有时间了解它们的工作原理以及如何正确和安全地使用它们。

然而,我完全有能力通过 PHP 在 Flash 和 MySQL 之间以各种格式发送和接收数据。

如果我要创建一个回合制游戏,以这种方式(通过 PHP)轮询 MySQL 数据库是否合适?目前我正在考虑这些方面:

  1. 两个玩家通过开放游戏的全球列表(相当标准的方法)等方式找到对方。
  2. 在数据库中创建遭遇或类似行。
  3. 该行将以 JSON 或 XML 格式存储有关轮到谁以及游戏当前状态的信息。该行还将包含来自每个玩家的时间戳,表示他们最后一次轮询数据库以获取游戏状态信息。当玩家完成他们的回合时,“回合”字段将切换。
  4. 每个玩家都会轮询数据库,看看是否轮到他们了。如果是,则游戏状态信息将与他们结束最后一轮之前的游戏状态信息进行比较,并且将在屏幕上发生动作以反映差异。然后轮到他们开始并重复该过程。
  5. 在轮询数据库时,如果对手没有在 120(任意)秒内轮询数据库,玩家将收到另一个玩家离开/超时/其他任何情况的通知。

这会太慢或不可靠吗?或者是否还有其他可以预见的问题,例如两个玩家同时轮询数据库的结果(不确定这是否重要)?

4

1 回答 1

3

而不是轮询,我建议您研究一种允许将数据从服务器推送到 Flash 客户端的技术。最常见的两个选项是套接字连接或使用实时消息传递协议有关更多详细信息,请参阅此问题。这是使用 Flash 构建实时游戏的默认方法。

对于 PHP,有许多开源产品或框架支持基于 RTMP 的AMF协议:

  1. 用于 PHP 的 WebORB
  2. Zend Framework AMF Adob​​e Systems 为 Zend Framework 提供了对其开放的二进制操作消息格式 (AMF) 协议的支持。如果您已经使用 Zend Framework,这将非常有用。
  3. amfPHP
  4. 剑鱼

我个人使用 Zend Framework AMF 效果很好,也听说过关于 WebORB 的好消息。我没有使用过其他 AMF 库。

关于您的具体问题:我不会将信息作为 JSON 或 XML 存储在数据库中,因为您想查询数据。将数据存储为本机 SQL 数据的效率要高得多。

这是一个简短的示例,向您展示如何使用 Zend Framework AMF让您了解它的工作原理。

于 2012-08-28T08:08:27.183 回答