在考虑制作网页游戏时,我遇到了一个令人不安的麻烦。许多游戏都有这样的“事件队列”。我有一支“军队”并将其发送给我的对手。我需要一些时间。当我的“军队”获得对手“军队”的位置时,就会计算出一场战斗,因此我的“军队”输了或赢了。当我或我的对手在比赛中时,一切都很好。某种 ajax 工作可以管理要调用的 php 脚本并计算战斗 - 然后将其结果保存到数据库。但是如果战斗发生时我和对手都没有登录,它怎么能工作呢?这种游戏的一个很好的例子是Ogame,当您将船只发送到另一个星球时,它可以在您注销时到达目的地,进行战斗,获取敌人的来源并卷土重来,
我一直认为我可以在数据库行中节省攻击者和他的对手的攻击时间,并在任何玩家登录游戏时计算战斗,但这种解决方案有很多缺点。例如,如果在我攻击我的对手之前有第三个玩家会攻击,这将改变他的军队统计数据(因为他可以杀死他的一部分军队)并且我有很多后果。此外,如果长时间没有玩家退出,他们就会出现在游戏中,因为他们没有在战斗,这不是真的。
你知道如何制作这样的事件队列吗?我想使用 cron 也不是一个好主意——它有时很少被使用,如果有成千上万的玩家,成千上万的 cron 实例可能会成为性能杀手。任何概念都将不胜感激-希望我能很好地描述我的问题:)