2011-10-09 81 views
2

这背后是我的游戏引擎目前的逻辑:PHP/MySQL的游戏服务器

  1. 用户用户登录要开始一个新的游戏,并进入大厅
  2. 寻找一个游戏空间自由。 (每场比赛最多20人,10分钟用户,每10分钟一次,开始倒计时直到比赛开始)
  3. 当用户进入游戏时,游戏数据库条目将更新为用户的ID。
  4. 交付的有效载荷,以用户(游戏信息;例如,题)
  5. 用户完成游戏,并将结果发送给服务器
  6. Server检查结果,工作了谁拥有第一,第二和第三高的得分。为用户数据库条目添加点数,将结果发送回所有客户端(排行榜)
  7. 游戏室被毁坏。

这将通过PHP/MySQL与客户端通过JSON访问完成。我很困惑如何用这些技术来做第2步和第3步。具体而言,我如何投票满足要求的房间,即最多20位用户,10分钟用户。如果超过10个用户说10秒,然后开始启动或如果20最大,然后开始游戏?

我想要考虑的逻辑,但挣扎。

编辑:我认为这是一个有点不公平的关闭这个问题。我并不是要求人们为我编写代码,我要求提供关于所用逻辑的建议。

+1

对不起,但你不能指望任何人为你想一些代码。如果您的代码存在问题,我们可以提供帮助。从头开始创建代码不会。 –

+0

@Topener:我不认为他们要求某人为他们编写代码,而只是为了实现他们遇到的问题而采取的一般步骤。 – icktoofay

+0

正确,我不是在代码之后。只是想法的逻辑。 – Nathan

回答

0

我会创建一个在服务器上独立运行的游戏逻辑循环(例如由cron开始),监视您的游戏室(因为这基本上就是玩家邀请其他玩家可以看到的东西)。

如果房间足够满(或完全填满)玩家,它会更新数据库中相应的行以表明游戏已经开始,并保存在哪个时间。

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

+0

每一秒都是太多而且没有必要。在最常见的情况下,我会说5秒,但实际上是10. –

+0

我需要使这个尽可能可扩展。我开始考虑PHP/MySQL是否适合这一点。 – Nathan

+0

不要过早优化。 PHP和MySQL的可扩展性如何,但取决于实现它的可扩展性。 – CodeCaster