User类有一个Energy列,一个上限为30的数字。每10分钟,每个User对象应该重新生成1个能量。什么是实现此功能的最佳方式?
作为奖励,有没有办法让每个用户都有自己独特的计时器,这样一旦他使用了他的第一个能量后,它会开始倒计时10分钟?
目前有兴趣使用Parse.com,我假设需要使用Cloud Code。谢谢!
答案 0 :(得分:1)
除非有充分的理由,否则不要试图将游戏逻辑放在数据库中。特别是不要尝试构建一个解决方案,您必须在服务器上运行数千个计时器。
计时器代码属于客户端。
我实现它的方式是存储他们获得能量的最后日期/时间以及应用程序在应用程序中触发的时间与“现在”比较,并根据需要添加尽可能多的能量,存储新的日期/时间。最近的10分钟边界。
此逻辑还可以处理应用程序在此期间处于睡眠/关闭状态,只需在应用程序启动时调用相同的代码即可。
如果安全性是一个问题,那么存储数据以安全地计算这个并将此逻辑放在云函数中,但仍然有在客户端中调用它的计时器。
使用此方法触发计时器的频率取决于您。如果你真的想要,你可以每秒开火一次,它仍然只能每10分钟增加一次能量。
答案 1 :(得分:0)
如果您编写的作业可以每10分钟运行一次,那么Cloud Code可以提供帮助,但是您可以执行的操作有限。首先,作业最多只能执行4秒,这意味着无法使用Cloud Code更新大量用户。
最好的解决方案是编写一个脚本,您可以每隔10分钟在服务器上调用一次,例如一个cronjob。
使用Parse,您可以检查类中的时间戳,并检索需要更新其能量的任何用户。然后脚本将循环遍历该列表并更新其能量1.将脚本安排为每分钟运行一次,以便能量在使用后更新到最近的分钟。