Travian 或 oGame 等一些 MMO 实时策略游戏是用 PHP 编码的。
您能否简要介绍一下此类游戏的幕后工作原理?游戏如何在没有玩家请求的情况下进行实时数据库更新?
此外,在运行 Travian 等具有 1000 名活跃玩家的 RTS 游戏时,人们需要什么样的服务器负载/带宽?
最佳答案
尽管这个话题相当陈旧,但我确实认为我对你的问题还有一个“更好”的答案(如果我自己可以这么说的话)然后是含糊的“更新由 cronjobs 完成”的答案。
Travian 即通过使用 javascript 让您产生实时的错觉。后面实际发生的事情如下:
玩家 A 向玩家 B 发送攻击。在 MySQL 数据库中,这被记录为到达时间戳。每当玩家 A 更改或刷新页面时,都会启动一个脚本(通过使用包含)来检查与该玩家有关的任何事件(增援到达、攻击到达目标等)。该脚本显然会检查当前时间并查看时间戳小于当前时间的所有事件。这意味着应该采取行动。就在那一刻,操作实际上得到了处理。
这也意味着如果玩家 A 和玩家 B 都没有再次登录,则永远不会计算攻击,除非其他人也攻击玩家 B - 然后玩家 B 和攻击玩家的所有事件都将被处理。
关于php - 实时战略游戏如何在 PHP 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469870/