本发明涉及通信领域,具体而言,涉及一种角色属性的存储方法、装置、存储介质、处理器及服务器。
背景技术:
目前,在大型多人在线网络游戏中,战斗是不可或缺的一部分,随着战斗的规模越来越大,参战的角色也越来越多,每个角色的技能种类越来越多,对应的需要参与计算的角色属性也就越来越多,角色属性可以包括但不限于等级、力量、体质、内功、血量、内力、物理攻击、防御力、物理减免、法术强度、冰抗性等级、冰法术抗性、火抗性等级、火法术抗性、毒抗性等级、毒法术抗性、闪避、命中、暴击几率、暴击抵抗、暴击伤害等几十上百个。
在以往的网络游戏的服务器中,每个角色的每个属性都需要常驻服务器的一块内存,在整个服务器中,所有角色属性占用的内存非常多,而服务器的内存是有限的,为了保证能够存储所有角色的所有属性的属性值,只能通过限制整个服务器玩家的总数来使游戏能正常运行。而限制人数势必会导致部分玩家无法正常登录参与游戏,从而导致用户体验度低。
针对上述问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种角色属性的存储方法、装置、存储介质、处理器及服务器,以至少解决相关技术中存在的,由于服务器内存有限,仅能允许部分玩家参与游戏,从而导致其他玩家无法正常参与游戏,导致用户体验度低的问题。
根据本发明的一个实施例,提供了一种角色属性的存储方法,包括:确定预定角色的预定属性的当前属性值相对于所述预定属性的默认属性值发生了变化;将所述当前属性值存储在服务器中的预定区域;其中,不同角色的相同属性的默认属性值相同,且在所述服务器的默认区域中存储一份不同角色的相同属性的默认属性值,所述预定区域与所述默认区域不同。
可选地,在确定所述预定角色的所述预定属性的当前属性值相对于所述预定属性的默认属性值发生了变化之前,所述方法还包括:在生成所述预定角色时,为所述预定角色的所有属性均配置对应的默认属性值。
可选地,在将所述当前属性值存储在所述服务器中的所述预定区域之后,所述方法还包括:确定所述当前属性值变更为所述预定属性的默认属性值;清除所述预定区域中存储的所述当前属性值,并回收所述预定区域以利用所述预定区域存储所述预定角色的其他属性的属性值或其他角色的属性的属性值。
可选地,在将所述当前属性值存储在所述服务器中的所述预定区域之后,所述方法还包括:确定所述当前属性值发生变化,且变化后的值与所述预定属性的默认属性值不同;将所述预定区域中存储的所述当前属性值更新为变化后的值。
可选地,在将所述当前属性值存储在所述服务器中的所述预定区域之后,所述方法还包括:在需要读取所述预定角色的所述预定属性的属性值时,判断所述预定属性的属性值是否占用了其他区域,其中,所述其他区域为除用于存储所述预定属性的默认值的默认区域之外的区域;在判断结果为占用了其他区域时,读取其他区域中存储的所述预定角色的所述预定属性的属性值;在判断结果为未占用其他区域时,读取用于存储所述预定属性的默认值的默认区域中存储的值。
根据本发明的另一个实施例,提供了一种角色属性的存储装置,包括:第一确定模块,用于确定预定角色的预定属性的当前属性值相对于所述预定属性的默认属性值发生了变化;存储模块,用于将所述当前属性值存储在服务器中的预定区域;其中,不同角色的相同属性的默认属性值相同,且在所述服务器的默认区域中存储一份不同角色的相同属性的默认属性值,所述预定区域与所述默认区域不同。
可选地,所述装置还包括:配置模块,用于在确定所述预定角色的所述预定属性的当前属性值相对于所述预定属性的默认属性值发生了变化之前,在生成所述预定角色时,为所述预定角色的所有属性均配置对应的默认属性值。
可选地,所述装置还包括:第二确定模块,用于在将所述当前属性值存储在所述服务器中的所述预定区域之后,确定所述当前属性值变更为所述预定属性的默认属性值;清除模块,用于清除所述预定区域中存储的所述当前属性值,并回收所述预定区域以利用所述预定区域存储所述预定角色的其他属性的属性值或其他角色的属性的属性值。
可选地,所述装置还包括:第三确定模块,用于在将所述当前属性值存储在所述服务器中的所述预定区域之后,确定所述当前属性值发生变化,且变化后的值与所述预定属性的默认属性值不同;更新模块,用于将所述预定区域中存储的所述当前属性值更新为变化后的值。
可选地,所述装置还包括:判断模块,用于在将所述当前属性值存储在所述服务器中的所述预定区域之后,在需要读取所述预定角色的所述预定属性的属性值时,判断所述预定属性的属性值是否占用了其他区域,其中,所述其他区域为除用于存储所述预定属性的默认值的默认区域之外的区域;第一读取模块,用于在判断结果为占用了其他区域时,读取其他区域中存储的所述预定角色的所述预定属性的属性值;第二读取模块,用于在判断结果为未占用其他区域时,读取用于存储所述预定属性的默认值的默认区域中存储的值。
根据本发明的另一个实施例,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述任意一项所述的角色属性的存储方法。
根据本发明的另一个实施例,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述的角色属性的存储方法。
根据本发明的另一个实施例,提供了一种服务器,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行上述任意一项所述的角色属性的存储方法。
通过本发明,可以为所有角色的相同属性配置相同的属性值,对于相同的属性,在服务器中存储一份属性值即可,并且,仅为变化后的属性值配置对应的存储区域,从而可以大大减少角色的属性的属性值在服务器中所占用的内存,使得服务器可以容纳更多的玩家参与游戏,解决相关技术中存在的,由于服务器内存有限,仅能允许部分玩家参与游戏,从而导致其他玩家无法正常参与游戏,导致用户体验度低的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的角色属性的存储方法的流程图;
图2是根据本发明实施例的角色属性的存储装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种角色属性的存储方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的角色属性的存储方法的流程图,如图1所示,该方法包括如下步骤:
步骤s102,确定预定角色的预定属性的当前属性值相对于该预定属性的默认属性值发生了变化;
步骤s104,将上述当前属性值存储在服务器中的预定区域;
其中,不同角色的相同属性的默认属性值相同,且在上述服务器的默认区域中存储一份不同角色的相同属性的默认属性值,上述预定区域与默认区域不同。
执行上述操作的执行主体可以是服务器,例如,网络游戏服务器。
在上述实施例中,可以为所有角色的相同属性配置相同的属性值,对于相同的属性,在服务器中存储一份属性值即可,并且,仅为变化后的属性值配置对应的存储区域,从而可以大大减少角色的属性的属性值在服务器中所占用的内存,使得服务器可以容纳更多的玩家参与游戏,解决相关技术中存在的,由于服务器内存有限,仅能允许部分玩家参与游戏,从而导致其他玩家无法正常参与游戏,导致用户体验度低的问题。
在一个可选的实施例中,在执行上述的步骤s102之前,还可以执行以下操作:在生成上述预定角色时,为上述预定角色的所有属性均配置对应的默认属性值。可选地,配置的默认属性值可以存储在服务器中的默认区域中,在该默认区域中可以存储不同角色的同一个属性的默认属性值,不同的属性的默认属性值可以存储在不同的默认区域中,当然,也可以根据实际需求将多个不同的属性的默认属性值存储在同一个默认区域中。需要说明的是,也可以在游戏服务器未启动时,先给每种属性都配置一个默认值,在游戏服务器启动运行过程中,每当要生成一个角色时,可以生成该角色的所有属性,当角色的某些属性的属性值不等于预先配置的默认值时,则为这个属性分配一块内存,并将对应的属性值写入分配的内存中,若属性的属性值与默认值相同,则不予理会,这是因为,已经预先在默认区域中存储了各角色中各属性的默认属性值。
在一个可选的实施例中,在执行上述的步骤s104之后,还可以执行以下操作:确定该当前属性值变更为上述预定属性的默认属性值;清除上述预定区域中存储的该当前属性值,并回收该预定区域以利用预定区域存储预定角色的其他属性的属性值或其他角色的属性的属性值。在本实施例中,该预定角色的其他属性为该预定角色具备的除上述预定属性之外的其他属性,上述其他角色为除上述预定角色之外的其他角色。在本实施例中,回收的存储区域(例如,上述的预定区域)可以被重新利用,以存储其他属性(包括所述预定角色的其他属性,或其他角色的属性)的属性值。
在一个可选的实施例中,在执行上述的步骤s104之后,还可以执行以下操作:确定上述当前属性值发生变化,且变化后的值与预定属性的默认属性值不同;将预定区域中存储的当前属性值更新为变化后的值。在本实施例中,只要预定属性的属性值未变更为默认属性值,就可以利用该预定区域进行该预定属性的属性值的存储。
在一个可选的实施例中,在执行上述的步骤s104之后,还可以执行以下操作:在需要读取上述预定角色的预定属性的属性值时(例如,战斗或其他情况发生时,需要读取角色的属性参与运算),判断该预定属性的属性值是否占用了其他区域(占用了其他区域则说明该预定属性的属性值不同于默认属性值了),其中,上述其他区域为除用于存储上述预定属性的默认值的默认区域之外的区域;在判断结果为占用了其他区域时,读取其他区域中存储的该预定角色的预定属性的属性值;在判断结果为未占用其他区域时,读取用于存储上述预定属性的默认值的默认区域中存储的值。在本实施例中,上述其他区域与前述的预定区域可能相同,可能不同,若该预定属性的属性值发生过多次变化,当其中有一次变更为默认属性值时,预定区域就会被回收,再分配给该预定属性以用于存储属性值的区域可能会发生变化,所以,这里的其他区域与上述的预定区域可能是不同的。
由上述实施例可知,在本发明实施例中为大型多人在线网络游戏提供了一种角色属性存储的优化方案,在常规使用和存储角色属性的基础上,设计了一种动态变化的内存属性存储方式,来管理游戏内大量的角色的属性数据。使得大型网络游戏的服务器能容纳比以往更加多的角色属性数据,从而大大增加服务器可容纳的玩家数量,以及运行更多的活动玩法。
在网络游戏中,由于大部分角色比如血量少存活时间很短但是数量众多的小怪、不参与战斗只负责触发剧情的角色等等,他们大部分属性的属性值很大概率是维持在预先配置的默认值不发生变化的,所以采用本发明实施例中的方案能大大节省服务器运行时的内存,使得服务器能容纳更多的玩家,以及运行更多的活动玩法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种角色属性的存储装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图2是根据本发明实施例的角色属性的存储装置的结构框图,如图2所示,该装置包括第一确定模块22和存储模块24,下面对该装置进行说明:
第一确定模块22,用于确定预定角色的预定属性的当前属性值相对于该预定属性的默认属性值发生了变化;存储模块24,连接至上述第一确定模块22,用于将上述当前属性值存储在服务器中的预定区域;其中,不同角色的相同属性的默认属性值相同,且在上述服务器的默认区域中存储一份不同角色的相同属性的默认属性值,上述预定区域与默认区域不同。
在一个可选的实施例中,上述装置还包括配置模块,用于在确定上述预定角色的预定属性的当前属性值相对于预定属性的默认属性值发生了变化之前,在生成所述预定角色时,为该预定角色的所有属性均配置对应的默认属性值。
在一个可选的实施例中,上述装置还包括第二确定模块和清除模块,下面对各模块进行说明:
第二确定模块,用于在将上述预定角色的预定属性的当前属性值存储在服务器中的预定区域之后,确定上述当前属性值变更为预定属性的默认属性值;清除模块,用于清除该预定区域中存储的当前属性值,并回收所述预定区域以利用该预定区域存储预定角色的其他属性的属性值或其他角色的属性的属性值。
在一个可选的实施例中,上述装置还包括第三确定模块和更新模块,下面对各模块进行说明:
第三确定模块,用于在将上述预定角色的预定属性的当前属性值存储在服务器中的所述预定区域之后,确定当前属性值发生变化,且变化后的值与预定属性的默认属性值不同;更新模块,用于将预定区域中存储的当前属性值更新为变化后的值。
在一个可选的实施例中,上述装置还包括判断模块,第一读取模块和第二读取模块,下面对各模块进行说明:
判断模块,用于在将当前属性值存储在服务器中的预定区域之后,在需要读取预定角色的预定属性的属性值时,判断预定属性的属性值是否占用了其他区域,其中,其他区域为除用于存储预定属性的默认值的默认区域之外的区域;第一读取模块,用于在判断结果为占用了其他区域时,读取其他区域中存储的预定角色的预定属性的属性值;第二读取模块,用于在判断结果为未占用其他区域时,读取用于存储预定属性的默认值的默认区域中存储的值。
根据本发明的另一个实施例,提供了一种存储介质,该存储介质包括存储的程序,其中,在该程序运行时控制存储介质所在设备执行上述任意一项实施例中的角色属性的存储方法。上述存储介质可以包括但不限于:u盘、只读存储器(rom)、随机存取存储器(ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
根据本发明的另一个实施例,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项实施例中的角色属性的存储方法。上述处理器可以包括但不限于:微处理器(mcu)或可编程逻辑器件(fpga)等的处理装置。
根据本发明的另一个实施例,提供了一种服务器,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序包括用于执行上述任意一项实施例中的角色属性的存储方法。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。