关于游戏开发数据更新的一些记录

      博主入职做游戏到现在已经是7个月的时间,框架是skynet,这段时间内,我大多写的都是游戏的活动,任务。其中这些东西都是有有效期限制的。

      比如,活动是每日重新统计,每日任务是每天重新统计,每周任务是每周一的 00:00重新统计。那么就需要一个特定时间来reset用户的数据。

      我刚开始的做法是,每天的 00:00,reset玩家的每日活动数据,每日任务数据。有一次我向我的经理请教问题的时候,他看了我的代码,对我的代码的评价大概是:你这么写也没什么错误,也没什么问题,但是可能会多出很多没必要的运算,比如一个玩家,他今天登陆了,之后三四天都没有登陆,但是你在这三四天也会去reset他的数据,如果有一个玩家,登陆了一次之后,再也不登陆了,你也会去reset他的数据。这样会多处很多没必要的db操作,玩家数量一上来,处理量就大了。我一听,觉得太tm的有道理了,经理果然不一样 = =!,牛逼,之后他对我进行了一下指点,做以下记录:

      1.lazy update(好像是这么叫的),需要reset数据时,再去reset,这样可以减少很多db操作。

      2.每日任务,每日活动则记录玩家的参加活动时间(任务时间),当要更新活动或者任务时,再去判断当前时间与活动时间(任务时间)是否为同一天,如果是同一天,则不用reset,如果不是同一天,则reset玩家的活动与任务数据,并更新玩家的上次参加活动时间(任务时间)。

      3.同理别的也一样,当玩家触发事件的时间如果 大于或者等于 需要更新数据的时间,则reset玩家db中的数据。

    

   

猜你喜欢

转载自blog.csdn.net/banfushen007/article/details/103107858
今日推荐