關於遊戲開發中玩家默認數據的一些記錄

      博主最近的工作是開發遊戲的任務系統。領導看了我的代碼後,給我提出了一些意見。

      任務情況大概是這樣的,一個玩家登陸後,客戶端會顯示任務按鈕,玩家點擊後即可查看自己的任務。按照策劃的需求,玩家目前有十幾個任務。每個玩家的任務數據,都要記錄在DB(數據庫)中。

      我最開始的做法是:

      1.如果遊戲開啓了任務系統,當玩家登陸的時候,我會給每個任務都分配默認值。

      2.將這些默認值都記錄進db中。

      3.在玩家點開任務圖標時,客戶端請求玩家的任務數據,服務器返回。

      在偶然的情況下,雖然我得代碼也能實現功能,但領導發現了我的代碼會瞬間做很多的db操作,然後告訴我內容大概如下:“一般db操作就是我們服務器的瓶頸之一,可以不用一開始就給每個任務分配默認值,並記錄進db。客戶端請求的時候,直接返回一個默認值,當玩家參與了具體任務時,再對玩家的數據進行計算,並記錄入數據庫。”,

      我之後進行思考覺得太tm有道理了。

      1.可能有的玩家只登陸了一次,點開了任務圖標,但是並且不做任務,我會在他點開圖標時給他記錄全部任務數據(默認值)。

      2.可能有的玩家登陸了,只做了一個任務,之後便不玩了,但是我會在他點開圖標時給他記錄全部任務數據(默認值)。

      3.一瞬間,很多玩家首次點開任務圖標,會造成瞬間很多很多的db操作。

      。。。。

      太多的理由表明這是一個很糟糕的設計。

      我在思考後,將程序改動整理後表達大概如下:

     1.玩家點開任務圖標,客戶端請求任務數據時,如果數據庫中沒有記錄玩家的數據,直接返回一個默認的值。例如:任務爲殺1000只青蛙,直接則返回0只,並不用記錄到db中

     2.當玩家參與到具體的任務時,再記錄到db。例如:玩家現在殺了100只青蛙,則將100記錄到db中。等到玩家下次點開任務圖標時,返回存貯再db中的100。

     這樣修改後,一開始那些默認的各種任務的默認值都不會寫入db,即使有的玩家之登錄一次,也點開了任務系統,也不會記錄他的數據到db,一瞬間很多玩家首次點開任務系統,也不會有大量的數據瞬間要寫入db。

 

     做此紀錄,我可能還是有一些地方設計得不夠好,歡迎相互討論。

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