轮询MySQL数据库是否足以满足基于回合制的Flash游戏的需要?

时间:2012-08-28 05:51:02

标签: mysql actionscript-3 polling multiplayer

我想将我的游戏开发扩展到多人游戏领域,但是我没有足够的资金用于有适当的服务器有插座或时间来了解它们如何工作以及如何正确使用它们并且安全。

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

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

  1. 两位玩家通过全球开放游戏列表(非常标准的方法)找到对方。
  2. 在数据库中创建遭遇或类似行。
  3. 该行将以JSON或XML格式存储有关轮到谁的信息以及游戏的当前状态。该行还将包含来自每个玩家的时间戳,表示他们最后一次轮询数据库以获取游戏状态信息。当玩家完成转弯时,“转弯”字段将切换。
  4. 每个玩家轮询数据库以查看轮到他们了。如果是,则在他们结束最后一次转弯之前将游戏状态信息与游戏状态信息进行比较,并且将在屏幕上进行动作以反映差异。然后轮到他们开始,重复这个过程。
  5. 在轮询数据库时,如果对手未在120(任意)秒内轮询数据库,则玩家将收到另一位玩家已经离开/超时/无论如何的通知。
  6. 这会太慢还是不可靠?或者还有其他可以预见的问题,例如两个玩家同时轮询数据库的结果(不确定是否重要)?

1 个答案:

答案 0 :(得分:3)

我建议你研究一种允许将数据从服务器推送到Flash客户端的技术,而不是轮询。两个最常见的选项是套接字连接,或使用Real Time Messaging Protocolsee this question for more details。这是使用Flash构建实时游戏的默认方法。

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

  1. WebORB for PHP
  2. Zend Framework AMF Adob​​e Systems为Zend Framework提供了开放的二进制动作消息格式(AMF)协议。如果您已经使用Zend Framework,那将非常有用。
  3. amfPHP
  4. sabreamf
  5. 我个人使用Zend Framework AMF并取得了良好的效果,并且也听到了关于WebORB的好消息。我没有使用其他AMF库。

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

    这是一个short example showing you how to use Zend Framework AMF,可以让您了解它是如何运作的。