關於遊戲開發數據更新的一些記錄

      博主入職做遊戲到現在已經是7個月的時間,框架是skynet,這段時間內,我大多寫的都是遊戲的活動,任務。其中這些東西都是有有效期限制的。

      比如,活動是每日重新統計,每日任務是每天重新統計,每週任務是每週一的 00:00重新統計。那麼就需要一個特定時間來reset用戶的數據。

 

      我剛開始的做法是,每天的 00:00,reset玩家的每日活動數據,每日任務數據。有一次我向我的經理請教問題的時候,他看了我的代碼,對我的代碼的評價大概是:你這麼寫也沒什麼錯誤,也沒什麼問題,但是可能會多出很多沒必要的運算,比如一個玩家,他今天登陸了,之後三四天都沒有登陸,但是你在這三四天也會去reset他的數據,如果有一個玩家,登陸了一次之後,再也不登陸了,你也會去reset他的數據。這樣會多處很多沒必要的db操作,玩家數量一上來,處理量就大了。我一聽,覺得太tm的有道理了,經理果然不一樣 = =!,牛逼,之後他對我進行了一下指點,做以下記錄:

      1.lazy update(好像是這麼叫的),需要reset數據時,再去reset,這樣可以減少很多db操作。

      2.每日任務,每日活動則記錄玩家的參加活動時間(任務時間),當要更新活動或者任務時,再去判斷當前時間與活動時間(任務時間)是否爲同一天,如果是同一天,則不用reset,如果不是同一天,則reset玩家的活動與任務數據,並更新玩家的上次參加活動時間(任務時間)。

      3.同理別的也一樣,當玩家觸發事件的時間如果 大於或者等於 需要更新數據的時間,則reset玩家db中的數據。

    

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章