一些 MMO 实时策略游戏(例如 Travian 或 oGame)是用 PHP 编码的。
您能简单解释一下这样的游戏在幕后是如何运作的吗?游戏如何在没有玩家请求的情况下进行实时数据库更新?
另外,当运行 Travian 等拥有 1000 名活跃玩家的 RTS 游戏时,需要期望什么样的服务器负载/带宽?
尽管这个话题相当老了,但我确实认为我仍然对你的问题有一个“更好”(如果我自己可以这么说)的答案,然后是模糊的“更新是由 cronjobs 完成的”答案。
Travian 即通过使用 javascript 给你一种实时的错觉。后面实际发生的事情是这样的:
玩家 A 向玩家 B 发送攻击。在 MySQL 数据库中,这会记录有到达时间戳。每次玩家 A 更改或刷新页面时,都会启动一个脚本(通过使用包含)来检查与该玩家有关的任何活动(增援到达、攻击到达目标等)。该脚本显然会检查当前时间并查看时间戳小于当前时间的所有活动。这意味着该行动应该已经发生。就在那一刻,操作实际上得到了处理。
这也意味着,如果玩家 A 和玩家 B 都没有再次登录,则攻击将永远不会被计算,除非其他人也攻击玩家 B - 那么玩家 B 和攻击玩家的所有活动都将被处理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)