0%

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

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

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

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