cocos-js,时间相关的处理

本文探讨了在cocos-js游戏中处理时间的两种方法:全局定时器和服务器时间差对比。全局定时器在后台切换时可能导致时间不准确,而服务器时间对比可能因玩家篡改本地时间引发问题。最终选择通过服务器实时发送时间进行校验,以解决时间准确性问题,但可能增加服务器负担。
摘要由CSDN通过智能技术生成

1.原因


客户端在成功登陆后会从服务器收到一个登陆时间,然后开始让时间走起来,现在有两种走法:

1.单起一个全局定时器,每一次update后让秒数+1,但是这种走法在游戏切换到后台后,定时器被挂起,时间就停止了,当游戏再从后台切换到前台后,就会不准,还有当定时器加速或者减速的时候,时间也会不准
2.用服务器时间和本地时间对比,获取时间差,以后再需要用时间的时候,获取到本地时间+时间差,就是正确的服务器时间,这种走法会出现一种问题,就是有的玩家在登陆游戏后,主动修改本地时间,导致时间不准,和时间相关的数据出现混乱

2.选择


方法1会普遍遇到,因为每个人在玩游戏的时候,因为一个电话或者别的事情就会经常切换到后台,而方法2只有不正常玩游戏的玩家故意修改时间的时候才会遇到,而这种玩家也会经常使用游戏修改器之类的工具来修改客户端数据,应该从广义上属于一种作弊行为。

所以,我们会选择方法2

3.实现


1.时间初始化

initTime:function(_server_time){
    this.server_login_time    = _server_time
    this.server_login_time   *= 1000
    this.cur_time             = new Date().getTime()
    this.dis_time             = this.cur_time - t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值