游戏如何在不影响db的情况下每小时增加x个金币?
How do games go about adding x gold per hour without straining the db?
我正在做一个学习Javascript的小项目,这有点像任何典型的基于浏览器的策略游戏。它使用php 5.3。
我能够成功地检查和更新每小时使用MySQL事件用户的王国黄金从他们的速度,每小时增加。例如,如果它是50 gold/Hour,而用户是0 gold/Hour,那么一小时后用户将拥有50 gold。
这样做的问题是,它每小时只更新一次,我想不出如何让它在用户每次获得新金币时更新(即:60秒/小时金币)。所以如果玩家每小时赚60个金币,那么每分钟,用户的金币就应该以每分钟+1的速度更新。如果他们每小时赚60000金币,那就+16/分钟(但实际上是16.6666…?)
这似乎很容易做到,使用一个简单的Javascript代码,假设你赚了多少钱,但如果你说,刷新,它不会知道你有黄金,因为在数据库中它会显示不同。此外,它也不允许用户购买农场升级之类的东西,因为这将无法通过验证。
关于如何使其工作,有什么有用的想法吗?每秒钟扫描/更新似乎不是一个好主意,这似乎不是正确的方法。
谢谢!
EDIT—RESOLVED—:好了,我花了一个小时左右的时间才让它工作起来。这很简单。这是我所做的感谢麦片的想法…
- 取消MySQL事件自动更新
- 用户有"最后一个事件"会话,所以如果他们刷新或去地图,它被视为一个事件。和打开购买/升级一样。
- 当一个事件被触发时,它检查最后一个事件和当前时间(服务器本地)。它进行数学运算,如果需要的话返回一个小数,并更新最后一个事件。所以基本上,如果你在上次"触发"事件后玩了10分钟,你每小时赚了60个Gold,它就会计算出你赚了10个Gold,并相应地更新数据库。如果是小数,它将四舍五入并更新。是有损失,但对我来说微不足道。
- Javascript负责其余的假设,你应该在视觉上。
我希望这对任何想做类似事情的人都有意义。:)
我相信您可以为这样的事情消除预定的事件,只需使用一些简单的数学。
例如,假设用户每分钟获得16个金币。在客户端,您显然可以实现它每分钟自动递增。至于他们休息回来的时候,你可以计算他们最后一次访问的时间(比如,6月16日上午8:02)。因此,下次他们/某人查看他们的黄金时,你可以使用上次访问时间和当前时间,并计算要添加的黄金数量。
示例:如果下次访问黄金的时间是6月16日上午8:10,则添加128黄金,并调整最后访问时间等。
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 每小时倒计时一次,但以30分钟为单位
- jQuery每6小时倒计时一次
- Highcharts tick每小时间隔一次
- 在nodeJS中每小时运行一次调度作业
- 如何每10分钟运行一次函数,在10分钟标记上,每小时运行6次
- 简单的javascript时间/金钱每小时计算器
- 设置javascript cookie每小时过期一次
- 每 3 小时显示一次对话框
- 如何每小时调用一次函数
- 从天气 API 获取每小时信息
- 每小时自动运行一次PHP页面 - 无需使用Cron作业
- 高图表区域:以小时为单位的 x 轴,但每小时显示多个点
- 为每小时天气预报制作滑块
- 比较前将时间增加一小时
- setInterval()是如何工作的?我可以用它每小时更换一次图像吗
- 需要使用此JSON文档并使用$.ajax()从API创建每小时一次的天气更新
- 如何每小时自动调用javascript函数
- 每8小时到达00:00:00时刷新页面并重新开始倒计时
- 游戏如何在不影响db的情况下每小时增加x个金币?