mysql - 对于回合制 Flash 游戏来说,轮询 MySQL 数据库是否足够?

标签 mysql actionscript-3 polling multiplayer

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

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

如果我要创建一款回合制游戏,以这种方式(通过 PHP)轮询 MySQL 数据库是否合适?目前我的想法是这样的:

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

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

最佳答案

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

对于PHP来说,有很多开源产品或框架支持基于RTMP的AMF协议(protocol):

  1. WebORB for PHP
  2. Zend Framework AMF Adobe Systems 向 Zend Framework 贡献了对其开放式二进制操作消息格式 (AMF) 协议(protocol)的支持。如果您已经使用 Zend Framework,这非常有用。
  3. amfPHP
  4. sabreamf

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

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

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

关于mysql - 对于回合制 Flash 游戏来说,轮询 MySQL 数据库是否足够?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153439/

相关文章:

php - mySQL 脚本获取给定日期的结果并将其插入表中

java.lang.ClassNotFoundException : com. mysql.jdbc.Driver 错误,即使在导入库之后

java - 图像未从数据库中显示

Javascript + ActionScript : How to convert bytearray returned from Actionscript to image in Javascript

php - 如何通过使用 MYSQL 和 Codeigniter 来获取删除表时的返回值?

actionscript-3 - 停在最后一帧(闪光)

ios - 直到文本字段失去焦点(使用 Flex)后,才会出现在 iOS 上更改文本样式

c - 处理/定义 poll 系统调用的 struct pollfd 数组的有效方法

c# - 查看线程是否已启动?

c - 带有 TCP 流的 TLS/SSL 中的 ssl_read() 不返回由 BIO_write() 写入的整个缓冲区