资源加载方法及系统与流程

文档序号:28556228发布日期:2022-01-19 16:11阅读:90来源:国知局
资源加载方法及系统与流程

1.本技术涉及计算机领域,尤其涉及一种资源加载方法、系统、计算机设备和计算机可读存储介质。


背景技术:

2.随着计算机技术的发展,人们对游戏体验提出了越来越高的要求。然而,具有更好游戏体验的高质量游戏通常需要使用更多的资源和更大体积的资源,从而会带来以下问题:(1)当玩家打开一个功能时加载资源需要花费大量的时间,导致出现不流畅的问题;(2)对运行游戏程序的设备提出了更高的性能要求。


技术实现要素:

3.本技术实施例的目的是提供一种资源加载方法、系统、计算机设备及计算机可读存储介质,用于解决上述问题。
4.本技术实施例的一个方面提供了一种资源加载方法,所述方法包括:
5.获取游戏程序的当前状态;
6.根据所述当前状态和玩家的游戏使用偏好,预测所述当前状态后的目标状态;及
7.在确定预加载的情况下,预加载与所述目标状态绑定的一个或多个目标资源。
8.可选的:所述游戏使用偏好包括多个状态中各个状态之间的关联关系,所述多个状态中每个状态分别绑定相应的资源;所述多个状态之间的关联关系及所述多个状态中每个状态与相应的资源之间的绑定关系,被记录在状态记录表中。
9.可选的,还包括:
10.以预设时间间隔对游戏引擎的资源加载信息进行扫描;
11.根据每次扫描得到的资源加载信息分别生成一个状态,所述状态为临时状态或预期状态;
12.若所述状态为预期状态则生成状态记录,所述状态记录包括:该次扫描到的资源加载信息中各个资源的资源信息,及所述状态与其他状态之间的关联关系;及
13.将所述状态记录保存到所述状态记录表中,以绑定所述状态和所述各个资源。
14.可选的,所述根据每次扫描到的资源加载信息生成一个状态,包括:
15.根据该次扫描到的资源加载信息中各个资源的资源名,得到资源名数组;
16.对所述资源名数组进行排序,并根据排序后的资源名数组生成表示所述状态的md5码。
17.可选的,还包括:
18.判断多次连续扫描所对应的多个状态是否相同;
19.若所述多个连续扫描所对应的所述多个状态相同,则确定所述多个状态为预期状态;
20.若所述多个连续扫描所对应的所述多个状态不相同,则确定所述多个状态为临时
状态。
21.可选的,还包括:
22.在每次进行扫描之前,检测所述游戏引擎是否正在执行资源加载;
23.若所述游戏引擎正在执行资源加载,则跳过此次扫描及后续扫描,直至所述游戏引擎未执行资源加载。
24.可选的,所述根据所述当前状态和玩家的游戏使用偏好,预测所述当前状态后的目标状态,包括:
25.判断所述当前状态所需的资源是否已全部加载;
26.若所述当前状态所需的资源已全部加载,则判断所述当前状态是否存在一个或多个下一个状态;
27.若所述当前状态存在一个或多个下一个状态,则根据当前设备性能确定是否执行预加载;
28.若确定执行预加载,则通过所述状态信息表预测得到所述目标状态。
29.可选的,所述当前设备性能包括当前剩余内存大小;
30.所述根据当前设备性能确定是否执行预加载,包括:
31.若所述当前剩余内存大小大于第一预设阈值,则确定执行预加载;
32.其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小。
33.可选的,所述第一预设阈值可更新;所述方法包括:根据所述游戏程序的运行帧率更新所述第一预设阈值。
34.可选的,所述各个状态之间的关联关系包括由第p个状态进入所述第p个状态的各下一个状态的进入次数,其中,所述第p个状态为所述多个状态中的任意一个状态;
35.所述根据所述当前状态和玩家的游戏使用偏好,预测所述当前状态后的目标状态,包括:
36.根据所述状态信息表,获取与所述当前状态相邻的多个下一个状态;
37.根据所述状态信息表,获取所述当前状态进入所述多个下一个状态的总进入次数;
38.根据所述状态信息表,获取所述当前状态进入各个下一个状态的进入次数;
39.根据所述总进入次数和进入所述各个下一个状态的进入次数,获取所述各个下一个状态的进入概率,其中,所述进入概率为所述当前状态进入相应的下一个状态的概率;及
40.根据所述各个下一个状态的进入概率,从所述多个下一个状态中选出所述目标状态。
41.可选的,所述根据所述各个下一个状态的进入概率,从所述多个下一个状态中选出所述目标状态,包括:
42.若所述多个下一个状态包括进入概率大于第二预设阈值的状态,则将所述进入概率大于所述第二预设阈值的状态确定为所述目标状态;或
43.若所述多个下一个状态不包括进入概率大于第二预设阈值的状态但包括进入概率在所述第二预设阈值和第三预设阈值之间的若干个状态,则将若干个状态分别确定为所述目标状态;或
44.若所述多个下一个状态不包括进入概率大于所述第三预设阈值之间的状态,则确
定无法选出所述目标状态。
45.可选的,所述在确定预加载的情况下,预加载与所述目标状态绑定的一个或多个目标资源,包括:
46.根据当前剩余内存大小和第一预设阈值,确定用于预加载的可用内存大小;其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小;
47.根据所述可用内存大小和第四预设阈值,获取所述目标状态的预加载资源容量;
48.从所述状态信息表中,获取与所述目标状态绑定的各个目标资源的资源信息,其中,所述各个目标资源的资源信息包括所述各个目标资源的加载顺序;
49.根据所述预加载资源容量和所述各个目标资源的加载顺序,生成最优资源预加载列表;及
50.对所述最优资源预加载列表中的各个目标资源进行预加载。
51.可选的,所述目标状态有多个;
52.所述在确定预加载的情况下,预加载与所述目标状态绑定的一个或多个目标资源,包括:
53.根据当前剩余内存大小和第一预设阈值,确定用于预加载的可用内存大小;其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小;
54.获取各个所述目标状态的预加载资源容量,所述目标状态的预加载资源容量为所述可用内存大小、第四预设阈值、相应的进入概率和第五预设阈值之积;
55.从所述状态信息表中,获取各个所述目标状态绑定的各个目标资源的资源信息,其中,所述各个目标资源的资源信息包括所述各个目标资源的加载顺序;
56.根据各个所述目标状态的预加载资源容量和各个所述目标状态绑定的各个目标资源的加载顺序,生成最优资源预加载列表;及
57.对所述最优资源预加载列表中的各个目标资源进行预加载。
58.可选的,还包括:若检测到当前剩余内存大小小于第一预设阈值,则优先卸载已预加载的资源;
59.其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小。
60.可选的,还包括:
61.监测所述当前状态的下一个真实状态;及
62.若所述下一个真实状态和所述目标状态不同,则释放与所述下一个实际状态无关的资源。
63.可选的,还包括:若检测到所述目标状态的进入,则加载所述目标状态的缺失资源。
64.可选的,还包括:若当前状态没有下一个状态,则释放所述当前状态的上一个状态的至少部分资源。
65.可选的,还包括:若预测所述当前状态的下一个状态的预测成功次数低于第六预设阈值,则通过当前时间以及各个下一个状态的历史进入时间,预测所述目标状态。
66.本技术实施例的一个方面又提供了一种资源加载系统,所述系统包括:
67.获取模块,用于获取游戏程序的当前状态;
68.预测模块,用于根据所述当前状态和玩家的游戏使用偏好,预测所述当前状态后
的目标状态;及
69.预加载模块,用于在确定预加载的情况下,预加载与所述目标状态绑定的一个或多个目标资源。
70.本技术实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现如上述资源加载方法的步骤。
71.本技术实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上述资源加载方法的步骤。
72.本技术实施例提供的资源加载方法、系统、设备及计算机可读存储介质,包括如下优点:
73.(1)通过游戏使用偏好,可以有选择地预加载当前状态的下一个状态的资源,提高了游戏的流畅度和玩家体验,且避免了预加载过多导致的不流畅及浪费性能。
74.(2)由于并不是预加载当前状态的所有下一个状态的资源,因此,预加载并不会过度消耗设备性能,在一些较低性能的设备亦可以通过预加载提升游戏流畅度。
附图说明
75.图1示意性示出了根据本技术实施例的资源加载方法的应用环境图;
76.图2示意性示出了根据本技术实施例一的资源加载方法的流程图;
77.图3示意性示出了根据本技术实施例一的资源加载方法的新增步骤流程图;
78.图4为图3中步骤s302的子步骤流程图;
79.图5示意性示出了根据本技术实施例一的资源加载方法的新增步骤流程图;
80.图6示意性示出了根据本技术实施例一的资源加载方法的新增步骤流程图;
81.图7为图2中步骤s202的子步骤流程图;
82.图8为图7中步骤s704的子步骤流程图;
83.图9示意性示出了根据本技术实施例一的资源加载方法的新增步骤流程图;
84.图10为图2中步骤s202的子步骤流程图;
85.图11为图10中步骤s1008的子步骤流程图;
86.图12为图2中步骤s204的子步骤流程图;
87.图13为图2中步骤s204的子步骤流程图;
88.图14至图18示意性示出了根据本技术实施例一的资源加载方法的新增步骤流程图;
89.图19示意性示出了根据本技术实施例二的资源加载系统的框图;
90.图20示意性示出了根据本技术实施例三的适于实现资源加载方法的计算机设备的硬件架构示意图。
具体实施方式
91.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不
用于限定本技术。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
92.需要说明的是,在本技术实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
93.在本技术的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本技术及区别每一步骤,因此不能理解为对本技术的限制。
94.随着计算机技术的发展,人们对游戏体验提出了越来越高的要求。然而,具有更好游戏体验的高质量游戏通常需要使用更多的资源和更大体积的资源,从而会带来以下问题:(1)当玩家打开一个功能时加载资源需要花费大量的时间,导致出现不流畅的问题;(2)对运行游戏程序的设备提出了更高的性能要求。
95.本发明人了解到,可以通过资源预加载来解决上文问题。举例来说,如系统存在a、b、c三个功能,由于资源预加载并不知道玩家要哪个功能(也就是说,不清楚预加载哪个功能的资源),因此会将a、b、c三个功能均预加载到内存中,从而保障流程性。但是,上述做法会加载一些不需要的资源,而导致内存等的严重浪费。例如:假设一号玩家仅仅喜欢a功能。如果将玩家不会使用到的b功能、c功能和a功能一起均加载到内存中,则造成了设备性能。尤其在设备性能(如内存)不足的情况下,上述预加载可能会使体验更差。
96.针对上述发现的问题,本技术提出了以下技术方案。
97.本技术可以通过获取玩家使用游戏程序时的资源使用情况,分析出玩家游戏使用偏好,并将游戏使用偏好和资源通过分析做相应的映射。当玩家使用游戏程序时,系统自动判断当前玩家处于什么状态,通过游戏程序的当前状态及游戏使用偏好推断出玩家最大概率进入的下一个状态,并预加载好下一状态所需的一定资源。本技术主要提供个性化预加载资源策略,能够预加载资源,在帮助减少打开新功能卡顿的情况下,尽量避免预加载资源带来的设备性能浪费。
98.以下为本技术的术语解释:
99.游戏引擎:指一些已编写好的可编辑电脑游戏系统或交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如linux、mac os x、微软windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
100.md5(message-digest algorithm,信息摘要算法),是一种密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
101.资源,可以包括图片、shader(着色代码)、材质、模型、动画等。
102.状态(state),每帧使用的资源信息数字化编码成一个唯一状态,例如,渲染一帧a依次使用到了“资源1”、“资源2”和“资源3”,则可以根据“资源1”、“资源2”和“资源3”的名字
或其他标识生成具有唯一性的一串字符(如md码),设备读取到这串字符时,则可以进行解析,从而得到帧a使用到了“资源1”、“资源2”和“资源3”。当前状态,指代渲染当前帧使用到的多个资源的数字化编码。在本技术中,数据化编码可以是md5编码,也可以是其他算法的编码。
103.图1示意性示出了根据本技术实施例的资源加载方法的环境架构图。在示例性的实施例中,如图1所示,服务器2可以通过网络4连接多个电子设备6。
104.服务器2可以通过一个或多个网络4提供资源管理服务。
105.服务器2,可以由单个或多个计算设备组成,如,机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。所述一个或多个计算机设备可以包括虚拟化计算实例。计算机设备可以基于定义用于仿真的特定软件(例如,操作系统,专用应用程序,服务器)的虚拟映像和/或其他数据来加载虚拟机。随着对不同类型的处理服务的需求改变,可以在所述一个或多个计算机设备上加载和/或终止不同的虚拟机。
106.网络4,可以包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或等等。网络4可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,它们的组合和/或类似物。网络4可以包括无线链路,例如蜂窝链路,卫星链路,wi-fi链路和/或类似物。
107.电子设备6可以被配置为访问服务器2。电子设备6可以包括可以游戏引擎的任何类型的计算机设备,如:智能手机,平板设备,膝上型计算机,智能设备(例如,智能手表,智能眼镜),虚拟现实,游戏设备,机顶盒,数字流设备,车载终端,智能电视,电视盒,mp4(运动图像专家组音频层iv)播放器等。
108.电子设备6,可以运行windows系统、安卓(androidtm)系统或ios系统等操作系统。另外,玩家还可以根据需要安装各种应用程序、程序组件(如游戏引擎)。基于上述程序或程序组件,可以实现各类功能,如游戏功能,或资源监测功能。游戏引擎,是为运行游戏应用的核心组件,用于提供各种运行所需的各种工具,如一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。在本技术中,游戏引擎可以负责提供游戏运行时,不同状态下游戏使用的资源使用信息,如当前状态加载了什么资源,释放了什么资源等。
109.下文,本技术将提供一种资源加载方法、系统、计算机设备和计算机可读存储介质。
110.实施例一
111.图2示意性示出了根据本技术实施例一的资源加载方法的流程图。所述方法可以执行在电子设备6中。如图2所示,该资源加载方法可以包括步骤s200~s204,其中:
112.步骤s200,获取游戏程序的当前状态。
113.步骤s202,根据所述当前状态和玩家的游戏使用偏好,预测所述当前状态后的目标状态。需要说明的是,目标状态可以是当前状态的下一个状态,也可以是下n个状态。
114.步骤s204,在确定预加载的情况下,预加载与所述目标状态绑定的一个或多个目标资源。
115.在实际应用中,可以向游戏程序的游戏引擎(如unity)中注入资源智能加载程序。
该资源智能加载程序可以监听游戏引擎各种类型资源的加载接口及资源卸载接口。
116.第一、当监听到资源加载时,则可以记录该资源的以下资源加载信息:资源名、加载顺序、实际加载使用时间、资源内存占用大小、以及资源的引用计数等参数。
117.第二、当监听到资源释放时,如果是单一资源,则引用计数减1,当引用计数为0时,删除该资源的资源加载信息。
118.关于引用计数:(1)针对单一资源,自身被使用的次数为引用计数;(2)针对资源包内的资源集,集合内的单个资源被使用次数的总和为资源包的引用计数。
119.资源加载信息可以如下:
120.name:资源名(包含路径);
121.type:资源类型,单一资源或者资源包;
122.time:实际加载使用时间;
123.memory:该资源的占用内存大小;
124.priority:加载的优先级,数字越小则表示越先加载(优先级相对于上一个被加载的资源,如果当先加载的资源已经被加载,则优先级保留第一次加载时的优先级);
125.date:属于列表数据,对应数据格式可以为:
126.{{周:周一,时:12,引用计数:1}},表示星期一的12点加载了一次;
[0127]“周”字段约束:周一、周二、周三、周四、周五、周六、周日;
[0128]“时”字段约束:0到23;
[0129]“引用计数”字段含义:“周”和“时”相同,则“引用计数”加1。
[0130]
需要说明的是,上述资源加载信息会被临时保存,并随游戏程序的运行不断地更新。
[0131]
该资源智能加载程序还设置一个定时器每t(t是预设时间间隔)秒扫描一次上述临时保存的资源加载信息,并基于扫描到的资源加载信息生成一个状态。
[0132]
电子设备6当前可以扫描上述资源加载信息,得到对应于当前扫描的当前状态。
[0133]
所述当前状态表示所述游戏程序当前展示功能所需的所有资源的信息总和。所述当前状态根据所述资源智能加载程序当前扫描到的资源加载信息得到。例如,所述游戏程序当前展示功能所需的所有资源名列表可映射为所述当前状态。
[0134]
接下来,电子设备6根据所述当前状态和玩家的游戏使用偏好,预测所述当前状态后的目标状态。所述游戏使用偏好,指代玩家在进入到某个状态之后,接下来通常会进入哪一个状态。基于所述游戏使用偏好,可以去预测玩家进入到所述当前状态之后,接下来哪个状态会大概率成为其下一个目标状态。
[0135]
接下来,电子设备6会在条件允许的情形下,预加载所述目标状态绑定的一个或多个目标资源。相对于现有技术中的对所有状态的资源进行预加载,在本实施例中,通过玩家的游戏使用偏好预测目标状态,包括以下优势:
[0136]
(1)通过游戏使用偏好,可以有选择地预加载当前状态的下一个状态的资源,提高了游戏的流畅度和玩家体验,且避免了预加载过多导致的不流畅及浪费性能。
[0137]
(2)由于并不是预加载当前状态的所有下一个状态的资源,因此,预加载并不会过度消耗设备性能,在一些较低性能的设备亦可以通过预加载提升游戏流畅度。
[0138]
以下提供一些可选实施例。
[0139]
作为可选的实施例,所述游戏使用偏好包括多个状态中各个状态之间的关联关系,所述多个状态中每个状态分别绑定相应的资源;所述多个状态之间的关联关系及所述多个状态中每个状态与相应的资源之间的绑定关系,被记录在状态记录表中。即,将各个状态之间的关联关系和各个状态映射的资源信息记录于状态记录表,提高了预测和预加载效率。
[0140]
当前状态和目标状态分别为所述多个状态之一。
[0141]
所述各个状态之间的关联关系包括任一状态(如状态a)进入它的各个下一个状态的进入次数。举例来说,由状态a进入到状态b有5次,由状态a进入到状态c有10次。相比状态b而言,状态a有更大的可能性进入到状态c中。
[0142]
作为可选的实施例,所述方法还可以预先获取所述状态记录表的操作。
[0143]
如图3所示,所述方法可以包括:步骤s300,以预设时间间隔对游戏引擎的资源加载信息进行扫描;步骤s302,根据每次扫描得到的资源加载信息分别生成一个状态,所述状态为临时状态或预期状态;步骤s304,若所述状态为预期状态则生成状态记录,所述状态记录包括:该次扫描到的资源加载信息中各个资源的资源信息,及所述状态与其他状态之间的关联关系;及步骤s306,将所述状态记录保存到所述状态记录表中,以绑定所述状态和所述各个资源。
[0144]
其中,如图4所示,所述步骤s302可以包括如下步骤:步骤400,根据该次扫描到的资源加载信息中各个资源的资源名,得到资源名数组;步骤402,对所述资源名数组进行排序,并根据排序后的资源名数组生成表示所述状态的md5码。
[0145]
举例而言,在游戏程序启动之后,资源智能加载系统同时设置一个定时器每t(t是预设时间间隔)秒扫描一次暂存的资源加载信息,并根据每次扫描到的资源加载信息分别生成相应的状态。以第i次扫描为,可以将第i次扫描到的资源加载信息中的各个资源的资源名组成资源名数组,并对该资源名数组进行升序排序,然后将排序后的资源名数组内容拼接成字符串,将拼接后得到的字符串进行md5加密并计算出md5码,该md5码即表示第i次扫描对应的状态j。作为示例,可以根据资源名的首字母或拼音首字母先后顺序从a到z进行排序。若首字母或拼音首字母相同,则按相同的排序规则比较次字母或拼音次字母分出先后顺序。当然,也可以根据资源名的首字母或拼音首字母从z到a进行排序。若资源名为数字,则从0到9排序,或9到0排序。
[0146]
在上文提到,为每次扫描到的资源加载信息分别生成相应的状态,但是并非生成的状态均有效。状态可以分为临时状态或预期状态,其中,临时状态是无效的。
[0147]
以第i次扫描对应的状态j为例,若所述状态为预期状态则生成状态记录,所述状态记录可以包括:
[0148]
state_pre:状态j的上一个状态的md5码;
[0149]
state_next:状态j的下一个状态的md5码;
[0150]
enter_times:表示从上一个状态进入状态j的进入次数;
[0151]
next_times:表示从状态j进入下一个状态的进入次数,需要说明的是,若状态j存在多个相邻的下一个状态,则此字段记录状态j进行相邻的所有下一个状态的进入次数总和;
[0152]
suc_times:预测下一个状态的预测成功次数;
[0153]
files:状态j所表示的游戏程序功能需要的所有资源名列表,其中,所述资源名列表包括:资源路径、资源类型、历史加载优先级、资源文件大小、加载时间;
[0154]
基于上述对应于状态j的状态记录,确保状态j对应的md5映射到上述各个资源的资源信息和状态进入与被进入的次数信息等,完成状态j和资相应源的绑定。
[0155]
作为可选的实施例,如图5所示,所述方法还可以包括:步骤s500,判断多次连续扫描所对应的多个状态是否相同;步骤s502,若所述多个连续扫描所对应的所述多个状态相同,则确定所述多个状态为预期状态;步骤s504,若所述多个连续扫描所对应的所述多个状态不相同,则确定所述多个状态为临时状态。在本实施例中,可以有效地确定生成的各个状态是否为预期状态或临时状态。
[0156]
作为可选的实施例,如图6所示,所述方法还可以包括:步骤s600,在每次进行扫描之前,检测所述游戏引擎是否正在执行资源加载;步骤s602,若所述游戏引擎正在执行资源加载,则跳过此次扫描及后续扫描,直至所述游戏引擎未执行资源加载。
[0157]
在实际应用中,由于资源加载需要时间,并且一个功能需要的多个资源是顺序加载的,可能导致在连续的几次扫描中生成的状态各不相同,因此,在上述情况下,所生成的状态是临时状态,其并不作为有效的状态。为了进一步有效地确定生成的各个状态是否为预期状态或临时状态,以下提供一个流程示例:
[0158]
步骤一:预设最低稳定扫描次数为m,连续相邻的m次扫描中,如果检测出的状态发生改变,那么判定上一次检测出来的状态为临时状态。
[0159]
步骤二:在定时器扫描之前,如果检测到游戏引擎正在加载资源,则放弃该次扫描。
[0160]
步骤三:在满足步骤三的前提下,经过步骤一中m次稳定验证后的状态才确定为预期状态。
[0161]
作为可选的实施例,如图7所示,所述步骤s202可以包括:步骤s700,判断所述当前状态所需的资源是否已全部加载;步骤s702,若所述当前状态所需的资源已全部加载,则判断所述当前状态是否存在一个或多个下一个状态;步骤s704,若所述当前状态存在一个或多个下一个状态,则根据当前设备性能确定是否执行预加载;步骤s706,若确定执行预加载,则通过所述状态信息表预测得到所述目标状态。若在所述状态记录中,所述当前状态的状态记录中的“next_times”为0,则判定所述当前状态不存在任何下一个状态,则不执行预加载。本实施例中,可以高效且尽可能低运算量的排查不需预加载的情况。
[0162]
其中,所述当前设备性能包括当前剩余内存大小。如图8所示,所述步骤s704可以包括:步骤s800,若所述当前剩余内存大小大于第一预设阈值,则确定执行预加载;其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小。本实施例中,可以确定电子设备6在预加载的同时维持健康状态。
[0163]
需要说明是,所述设备性能亦可以是cpu使用率等,本技术不进行特殊限定。
[0164]
以当前状态a为例:
[0165]
步骤一:资源智能加载程序自动检测当前状态a所需要的资源是否加载完成。
[0166]
若加载完成,则进入步骤二;否则确定暂时不需预加载。
[0167]
步骤二:资源智能加载程序检测当前状态a是否存在下一个状态s(一般有多个)。
[0168]
若有,则进入步骤三;否则确定不需预加载。
[0169]
步骤三:资源智能加载程序检测电子设备6中的当前剩余内存大小(电子设备6的总内存大小减去已经使用内存大小后的剩余内存空间),并判断该当前剩余内存大小是否大于第一预设阈值n(电子设备6处于内存健康状态下的最小剩余内存大小)。
[0170]
若该当前剩余内存大小大于第一预设阈值n,则确定执行预加载,否则确定不需预加载。
[0171]
作为可选的实施例,所述第一预设阈值可更新。如图9所示,所述方法还可以包括:步骤s900,根据所述游戏程序的运行帧率更新所述第一预设阈值。由于不同设备使用的内存硬件可能存在速度差距,因此,第一预设阈值n可以根据自动大小调试后观察游戏程序运行帧率做自适应地调整,以优化预加载的使用体验。具体的,所述游戏程序的运行帧率越高,所述第一预设阈值越大。
[0172]
作为可选的实施例,所述各个状态之间的关联关系包括由第p个状态进入所述第p个状态的各下一个状态的进入次数,其中,所述第p个状态为所述多个状态中的任意一个状态,p为正整数。如图10所示,所述步骤s202可以包括:步骤s1000,根据所述状态信息表,获取与所述当前状态相邻的多个下一个状态;步骤s1002,根据所述状态信息表,获取所述当前状态进入所述多个下一个状态的总进入次数;步骤s1004,根据所述状态信息表,获取所述当前状态进入各个下一个状态的进入次数;步骤s1006,根据所述总进入次数和进入所述各个下一个状态的进入次数,获取所述各个下一个状态的进入概率,其中,所述进入概率为所述当前状态进入相应的下一个状态的概率;及步骤s1008,根据所述各个下一个状态的进入概率,从所述多个下一个状态中选出所述目标状态。在本实施例中,通过状态信息表中的当前状态到其各个下一个状态的进入次数,可以有效地预测并从中选择用于预加载的所述目标状态。
[0173]
作为可选的实施例,如图11所示,所述步骤s1008以包括:步骤s1100,若所述多个下一个状态包括进入概率大于第二预设阈值的状态,则将所述进入概率大于所述第二预设阈值的状态确定为所述目标状态;或步骤s1102,若所述多个下一个状态不包括进入概率大于第二预设阈值的状态但包括进入概率在所述第二预设阈值和第三预设阈值之间的若干个状态,则将若干个状态分别确定为所述目标状态;或步骤s1104,若所述多个下一个状态不包括进入概率大于所述第三预设阈值之间的状态,则确定无法选出所述目标状态。
[0174]
举例来说:
[0175]
资源智能加载程序可以通过所述状态信息表找出所述当前状态可以进入的所有下一个状态。并且通过公式计算出所述当前状态进入到各个下一个状态的进入概率:进入概率=下一个状态进入次数/当前状态进入所有下一个状态的总次数。
[0176]
当进入概率大于第二预设阈值s0时,表示该玩家存在比较明确的下一步行为,那么状态选择结束。
[0177]
当进入概率小于第二预设阈值s0时但是大于第三预设阈值s1时,不论多少个满足该条件的状态,都被选中。
[0178]
当进入概率小于第三预设阈值s1时,表示无法推断出该玩家行为,因此不做预加载。
[0179]
在上述可选的实施例中,将玩家行为通过第二预设阈值、第三预设阈值区分为明确行为、可能行为、无法预测,可以尽量地增加预加载的效率和降低无效预加载。
[0180]
作为可选的实施例,如图12所示,所述步骤s204可以包括:s1200,根据当前剩余内存大小和第一预设阈值,确定用于预加载的可用内存大小;其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小;s1202,根据所述可用内存大小和第四预设阈值,获取所述目标状态的预加载资源容量;s1204,从所述状态信息表中,获取与所述目标状态绑定的各个目标资源的资源信息,其中,所述各个目标资源的资源信息包括所述各个目标资源的加载顺序;s1206,根据所述预加载资源容量和所述各个目标资源的加载顺序,生成最优资源预加载列表;及s1208,对所述最优资源预加载列表中的各个目标资源进行预加载。本实施例中,通过限定预加载资源容量维持内存的健康状态,并通过最优资源预加载列表优化预加载的效率。
[0181]
本实施例中的预加载又称之为“唯一状态资源加载”,即对单个状态的资源进行预加载。
[0182]
例如:在选出所述目标状态之后,资源智能加载程序当前剩余内存大小减第一预设阈值n得到可用内存大小mem,通过可用内存大小mem乘以第四预设阈值l得到期望的预加载资源容量l1,使用该目标状态查询在对应的状态记录,并且从状态记录获取该目标状态对应的所有资源信息,根据资源信息中各个目标资源的资源加载的先后顺序以及所述预加载资源容量l1找到最优资源预加载列表,并根据最优资源预加载列表进行预加载。加载时间的资源优先预加载。所述预加载资源容量l1用于控制预加载的资源总量。
[0183]
作为可选的实施例,所述目标状态有多个。如图13所示,所述步骤s204可以包括:s1300,根据当前剩余内存大小和第一预设阈值,确定用于预加载的可用内存大小;其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小;步骤s1302,获取各个所述目标状态的预加载资源容量,所述目标状态的预加载资源容量为所述可用内存大小、第四预设阈值、相应的进入概率和第五预设阈值之积;步骤s1304,从所述状态信息表中,获取各个所述目标状态绑定的各个目标资源的资源信息,其中,所述各个目标资源的资源信息包括所述各个目标资源的加载顺序;步骤s1306,根据各个所述目标状态的预加载资源容量和各个所述目标状态绑定的各个目标资源的加载顺序,生成最优资源预加载列表;及步骤s1308,对所述最优资源预加载列表中的各个目标资源进行预加载。本实施例中,通过限定预加载资源容量维持内存的健康状态,并通过最优资源预加载列表优化预加载的效率。
[0184]
本实施例中的预加载又称之为“多状态资源加载”,即对多个状态的资源进行预加载。
[0185]
和唯一状态资源预加载不同在于:多状态资源加载的每个状态的预加载资源容量l1不同:
[0186]
预加载资源容量l1=mem乘以第四预设阈值l*该状态的进入概率*第五预设阈值del。
[0187]
关于第五预设阈值del:多一个分摊预加载内存空间,但是玩家可能进入的状态只有一个,因此需要涉及第五预设阈值del减少内存使用,用以提升设备速度,当玩家准确进入下一个状态时尽量减少资源误加载,也能提升无效资源释放速度。不同的下一个状态对应不同的预加载资源容量。因此,该状态的进入概率越高,则意味着可以预加载越多的资源,从而尽量提高预加载资源的效率。
[0188]
作为可选的实施例,如图14所示,所述方法还包括智能资源释放步骤:步骤s1400,
若检测到当前剩余内存大小小于第一预设阈值,则优先卸载已预加载的资源;其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小。在本实施例中,若内存紧张则优先卸载已预加载的资源,保障当前设备运行的流畅性。
[0189]
作为可选的实施例,如图15所示,所述方法还包括智能资源释放步骤:步骤s1500,监测所述当前状态的下一个真实状态;及步骤s1502,若所述下一个真实状态和所述目标状态不同,则释放与所述下一个实际状态无关的资源。在本实施例中,预测的目标状态的资源被预加载之后,资源智能加载程序检测到游戏程序在当前状态之后进入了另一个状态(不是所述目标状态),则判定玩家实际选择的下一个真实状态和预测出的目标状态不符合,并自动释放和玩家实际选择的下一个真实状态无关的资源,降低内存压力。
[0190]
作为可选的实施例,如图16所示,所述方法还包括缺失资源加载步骤:步骤s1600,若检测到所述目标状态的进入,则加载所述目标状态的缺失资源。为了保障电子设备的稳定运行以及避免过度地消耗内存等设备性能,对目标状态的资源的加载,都是部分预加载,而非全部加载。因此,将检测到用户进入所述目标状态,则项加载缺失资源以提升用户体验。
[0191]
作为可选的实施例,如图17所示,所述方法还包括回退加载步骤:步骤s1700,若当前状态没有下一个状态,则释放所述当前状态的上一个状态的至少部分资源。在本实施例中,若内存紧张则释放上一个状态的资源,否则保留上一个状态的资源或部分释放,保障当前设备运行的流畅性。
[0192]
作为可选的实施例,如图18所示,所述方法还包括预期状态命中优选步骤:步骤s1800,若预测所述当前状态的下一个状态的预测成功次数低于第六预设阈值,则通过当前时间以及各个下一个状态的历史进入时间,预测所述目标状态。
[0193]
举例来说:若资源智能加载程序发现自己命中下一个状态的概率低于第六预设阈值o,则将使用资源加载时间进一步判断玩家可能进入的下一个状态。例如:状态x能进入的下一个状态有状态a和状态b,并且进入概率均为50%,预测成功概率为30%(低于第六预设阈值o),则会执行以下预期状态命中优化的操作:假设信息记录表中每周一的12点进入状态a的概率为90%,进入状态b的概率为10%,则应该每周一的12点判定该玩家将要进入的目标状态为状态a。即,通过时间来进一步优选预测的准确性,减少无效的预加载。
[0194]
需要说明的是:
[0195]
(1)上文提供的各个可选方案可以单独实施,也可以组合实施。
[0196]
(2)游戏引擎可以是unity,相应的,资源包为assetbundle包。
[0197]
实施例二
[0198]
图19示意性示出了根据本技术实施例二的资源加载系统的框图。该资源加载系统可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本技术实施例。本技术实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
[0199]
如图19所示,该资源加载系统1900可以包括获取模块1910、预测模块1920和预加载模块1930,其中:
[0200]
获取模块1910,用于获取游戏程序的当前状态;
[0201]
预测模块1920,用于根据所述当前状态和玩家的游戏使用偏好,预测所述当前状态后的目标状态;及
[0202]
预加载模块1930,用于在确定预加载的情况下,预加载与所述目标状态绑定的一个或多个目标资源。
[0203]
作为可选的实施例,所述游戏使用偏好包括多个状态中各个状态之间的关联关系,所述多个状态中每个状态分别绑定相应的资源;所述多个状态之间的关联关系及所述多个状态中每个状态与相应的资源之间的绑定关系,被记录在状态记录表中。
[0204]
作为可选的实施例,所述系统还可以包括分析模块(未标识),用于:
[0205]
以预设时间间隔对游戏引擎的资源加载信息进行扫描;
[0206]
根据每次扫描得到的资源加载信息分别生成一个状态,所述状态为临时状态或预期状态;
[0207]
若所述状态为预期状态则生成状态记录,所述状态记录包括:该次扫描到的资源加载信息中各个资源的资源信息,及所述状态与其他状态之间的关联关系;及
[0208]
将所述状态记录保存到所述状态记录表中,以绑定所述状态和所述各个资源。
[0209]
作为可选的实施例,所述分析模块,还用于:
[0210]
根据该次扫描到的资源加载信息中各个资源的资源名,得到资源名数组;
[0211]
对所述资源名数组进行排序,并根据排序后的资源名数组生成表示所述状态的md5码。
[0212]
作为可选的实施例,所述系统还可以包括第一判断模块(未标识),用于:
[0213]
判断多次连续扫描所对应的多个状态是否相同;
[0214]
若所述多个连续扫描所对应的所述多个状态相同,则确定所述多个状态为预期状态;
[0215]
若所述多个连续扫描所对应的所述多个状态不相同,则确定所述多个状态为临时状态。
[0216]
作为可选的实施例,所述系统还可以包括第二判断模块(未标识),用于:
[0217]
在每次进行扫描之前,检测所述游戏引擎是否正在执行资源加载;
[0218]
若所述游戏引擎正在执行资源加载,则跳过此次扫描及后续扫描,直至所述游戏引擎未执行资源加载。
[0219]
作为可选的实施例,所述预测模块1920还用于:
[0220]
判断所述当前状态所需的资源是否已全部加载;
[0221]
若所述当前状态所需的资源已全部加载,则判断所述当前状态是否存在一个或多个下一个状态;
[0222]
若所述当前状态存在一个或多个下一个状态,则根据当前设备性能确定是否执行预加载;
[0223]
若确定执行预加载,则通过所述状态信息表预测得到所述目标状态。
[0224]
作为可选的实施例,所述当前设备性能包括当前剩余内存大小;
[0225]
所述预测模块1920还用于:
[0226]
若所述当前剩余内存大小大于第一预设阈值,则确定执行预加载;
[0227]
其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小。
[0228]
作为可选的实施例,所述第一预设阈值可更新;所述系统还可以包括更新模块(未标识),用于:根据所述游戏程序的运行帧率更新所述第一预设阈值。
[0229]
作为可选的实施例,所述各个状态之间的关联关系包括由第p个状态进入所述第p个状态的各下一个状态的进入次数,其中,所述第p个状态为所述多个状态中的任意一个状态;
[0230]
所述预测模块1920,还用于:
[0231]
根据所述状态信息表,获取与所述当前状态相邻的多个下一个状态;
[0232]
根据所述状态信息表,获取所述当前状态进入所述多个下一个状态的总进入次数;
[0233]
根据所述状态信息表,获取所述当前状态进入各个下一个状态的进入次数;
[0234]
根据所述总进入次数和进入所述各个下一个状态的进入次数,获取所述各个下一个状态的进入概率,其中,所述进入概率为所述当前状态进入相应的下一个状态的概率;及
[0235]
根据所述各个下一个状态的进入概率,从所述多个下一个状态中选出所述目标状态。
[0236]
作为可选的实施例,所述预测模块1920,还用于:
[0237]
若所述多个下一个状态包括进入概率大于第二预设阈值的状态,则将所述进入概率大于所述第二预设阈值的状态确定为所述目标状态;或
[0238]
若所述多个下一个状态不包括进入概率大于第二预设阈值的状态但包括进入概率在所述第二预设阈值和第三预设阈值之间的若干个状态,则将若干个状态分别确定为所述目标状态;或
[0239]
若所述多个下一个状态不包括进入概率大于所述第三预设阈值之间的状态,则确定无法选出所述目标状态。
[0240]
作为可选的实施例,所述预加载模块1930,还用于:
[0241]
根据当前剩余内存大小和第一预设阈值,确定用于预加载的可用内存大小;其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小;
[0242]
根据所述可用内存大小和第四预设阈值,获取所述目标状态的预加载资源容量;
[0243]
从所述状态信息表中,获取与所述目标状态绑定的各个目标资源的资源信息,其中,所述各个目标资源的资源信息包括所述各个目标资源的加载顺序;
[0244]
根据所述预加载资源容量和所述各个目标资源的加载顺序,生成最优资源预加载列表;及
[0245]
对所述最优资源预加载列表中的各个目标资源进行预加载。
[0246]
作为可选的实施例,所述目标状态有多个;所述预加载模块1930,还用于:
[0247]
根据当前剩余内存大小和第一预设阈值,确定用于预加载的可用内存大小;其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小;
[0248]
获取各个所述目标状态的预加载资源容量,所述目标状态的预加载资源容量为所述可用内存大小、第四预设阈值、相应的进入概率和第五预设阈值之积;
[0249]
从所述状态信息表中,获取各个所述目标状态绑定的各个目标资源的资源信息,其中,所述各个目标资源的资源信息包括所述各个目标资源的加载顺序;
[0250]
根据各个所述目标状态的预加载资源容量和各个所述目标状态绑定的各个目标
资源的加载顺序,生成最优资源预加载列表;及
[0251]
对所述最优资源预加载列表中的各个目标资源进行预加载。
[0252]
作为可选的实施例,所述系统还包括卸载模块(未标识),用于:
[0253]
若检测到当前剩余内存大小小于第一预设阈值,则优先卸载已预加载的资源;
[0254]
其中,所述第一预设阈值用于表示设备处于健康状态下的最小剩余内存大小。
[0255]
作为可选的实施例,所述系统还包括释放模块(未标识),用于:
[0256]
监测所述当前状态的下一个真实状态;及
[0257]
若所述下一个真实状态和所述目标状态不同,则释放与所述下一个实际状态无关的资源。
[0258]
作为可选的实施例,所述系统还包括缺失加载模块(未标识),用于:
[0259]
若检测到所述目标状态的进入,则加载所述目标状态的缺失资源。
[0260]
作为可选的实施例,所述系统还包括退回加载模块(未标识),用于:
[0261]
若当前状态没有下一个状态,则释放所述当前状态的上一个状态的至少部分资源。
[0262]
作为可选的实施例,所述系统还包括优化模块(未标识),用于:
[0263]
若预测所述当前状态的下一个状态的预测成功次数低于第六预设阈值,则通过当前时间以及各个下一个状态的历史进入时间,预测所述目标状态。
[0264]
实施例三
[0265]
图20示意性示出了根据本技术实施例三的适于实现资源加载方法的计算机设备10000的硬件架构示意图。本实施例中,计算机设备10000可以是电子设备6。本实施例中,计算机设备10000是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,智能手机,平板设备,膝上型计算机,智能设备(例如,智能手表,智能眼镜),虚拟现实,游戏设备,机顶盒,数字流设备,车载终端,智能电视,电视盒,mp4(运动图像专家组音频层iv)播放器等。如图20所示,计算机设备10000至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:
[0266]
存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备10000的内部存储模块,例如该计算机设备10000的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备10000的外部存储设备,例如该计算机设备10000上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,存储器10010还可以既包括计算机设备10000的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备10000的操作系统和各类应用软件,例如资源加载方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0267]
处理器10020在一些实施例中可以是中央处理器(central processing unit,简称为cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备10000的总体操作,例如执行与计算机设备10000进行数据交互或者通信相关
的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
[0268]
网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备10000与其他计算机设备之间建立通信链接。例如,网络接口10030用于通过网络将计算机设备10000与外部终端相连,在计算机设备10000与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(global system of mobile communication,简称为gsm)、宽带码分多址(wideband code division multiple access,简称为wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi等无线或有线网络。
[0269]
需要指出的是,图20仅示出了具有部件10010-10030的计算机设备,但是应该理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
[0270]
在本实施例中,存储于存储器10010中的资源加载方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本技术实施例。
[0271]
实施例四
[0272]
本技术还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的资源加载方法的步骤。
[0273]
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中资源加载方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0274]
显然,本领域的技术人员应该明白,上述的本技术实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术实施例不限制于任何特定的硬件和软件结合。
[0275]
需要说明的是,以上仅为本技术的优选实施例,并非因此限制本技术的专利保护范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1