关于游戏开发中玩家默认数据的一些记录

      博主最近的工作是开发游戏的任务系统。领导看了我的代码后,给我提出了一些意见。

      任务情况大概是这样的,一个玩家登陆后,客户端会显示任务按钮,玩家点击后即可查看自己的任务。按照策划的需求,玩家目前有十几个任务。每个玩家的任务数据,都要记录在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。

     做此纪录,我可能还是有一些地方设计得不够好,欢迎相互讨论。

猜你喜欢

转载自blog.csdn.net/banfushen007/article/details/103445717