PHP/MySQL游戏服务器

标签 php mysql algorithm

<分区>

这是我的游戏引擎背后的当前逻辑:

  1. 用户登录
  2. 用户想要开始新游戏并进入大厅
  3. 寻找有空位的游戏。 (最多 20 个用户,每场游戏 10 分钟。每 10 人开始倒计时,直到游戏开始)
  4. 当用户进入游戏时,游戏数据库条目会更新为用户的 ID。
  5. 向用户提供负载(游戏信息;例如,问题)
  6. 用户完成游戏并将结果发送到服务器
  7. 服务器检查结果,计算谁的第一、第二和第三高分。将积分添加到用户数据库条目,将结果发送回所有客户端(排行榜)
  8. 游戏室被毁。

这将通过 PHP/MySQL 完成,客户端通过 JSON 访问。我对如何使用这些技术执行第 2 步和第 3 步感到困惑。具体来说,我如何轮询一个房间是否满足要求,即最多 20 个,10 分钟的用户。如果超过 10 个用户持续 10 秒然后开始游戏,或者如果最多 20 个用户然后开始游戏?

我正在努力思考逻辑但很挣扎。

编辑:我认为结束这个问题有点不公平。我不是在要求人们为我编写代码,我是在征求有关所用逻辑的建议。

最佳答案

我会创建一个在服务器上独立运行的游戏逻辑循环(例如,由 cron 启动),它会监控您的游戏房间(因为这基本上就像一个玩家邀请其他玩家所看到的那样)。

如果房间已经足够(或完全充满)玩家,它会更新数据库中的相应行以指示游戏已经开始,并保存确切的时间。

现在客户端不断轮询一个脚本,比如说,每秒一次,以查看他房间里的游戏是否已经开始,以及前多少毫秒。如果它开始了,倒计时开始。您可能不得不跳过显示“10”,而是从“9”(甚至更低)开始显示,因为当客户端在游戏开始后一秒或更长时间后收到其投票的答案时,所有客户端将同步。

关于PHP/MySQL游戏服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706858/

相关文章:

php - 如何在 Phalcon 中正确初始化数据库连接

python - 找到具有以下属性的边,如果您跟随它们,您将必须回到刚刚离开的节点才能到达图形的其余部分

algorithm - 在 GA 中执行依赖项交叉的好方法是什么?

algorithm - 从 2 个数组中创建一个排序数组

php - MySQL删除重复的反向值

php - 如何使用 PHPUnit 测试调用同一类的其他方法但没有返回值的方法

php - Symfony2 Twig 注入(inject)额外的 block

php - 为什么我的数据不能用 mysql_real_escape_string 正确剥离?

即使 SELECT 数据来自相同的源表和列,MySql 表列也具有不同的 CHARSET 和 COLLATION?

mysql - 如何让 golang mysql 驱动程序在 2 秒内超时 ping?