一种动态分配方法及系统、计算设备及存储介质
技术领域
本申请涉及互联网技术技术领域,特别涉及一种动态分配方法及系统、计算设备及存储介质。
背景技术
对于3D视频来说,引擎的性能是至关重要的。玩家在体验一款游戏时,游戏的流畅度是最基本的要求。与单机游戏不同,网络游戏更需要考虑性能问题,因为无法像单机游戏那样,控制游戏元素的复杂度来达到效率的要求。在网络游戏中,大量玩家涌入同一片区域,同屏出现大量的游戏角色是无法避免的,因此游戏帧率的大幅下降,系统资源的大量消耗也很难避免,这是网络游戏引擎最难处理的问题之一。游戏引擎首要解决的性能问题就是卡顿的问题,也就是滞帧的问题。
发明内容
有鉴于此,本申请实施例提供了一种动态分配方法及系统、计算设备及存储介质,以解决现有技术中存在的技术缺陷。
本申请实施例公开了一种动态分配方法,包括:
对目标数据的数据帧分别分配负载,其中,所述负载包括至少一个应用数据的配额;
依次执行所述目标数据的数据帧,并在发现当前数据帧出现滞帧迹象的情况下,将当前数据帧中的至少一个应用数据的配额重新分配。
可选地,还包括:
根据所述目标数据的数据帧中已执行数据帧的负载记录,对所述目标数据的数据帧中未执行数据帧分别分配负载。
可选地,在所述已执行数据帧未出现滞帧迹象的情况下,
根据所述目标数据的已执行数据帧的负载记录,对所述目标数据的未执行数据帧分别分配负载,包括:
根据所述已执行数据帧的负载记录,确定所述未执行数据帧中的所述至少一个应用数据的配额。
可选地,在所述已执行数据帧出现滞帧迹象的情况下,
根据所述目标数据的已执行数据帧的负载记录,对所述目标数据的未执行数据帧分别分配负载,包括:
根据所述目标数据的已执行数据帧的至少一个应用数据重新分配的配额,确定未执行数据帧的至少一个应用数据的配额。
可选地,所述配额包括每个应用数据对应的预设时间配额;
发现当前数据帧出现滞帧迹象,包括:
依次执行所述应用数据;
在确定当前应用数据的实际执行时间大于预设时间配额的情况下,判断第一个应用数据至当前应用数据的实际执行时间总和是否大于第一个应用数据至当前应用数据的预设时间配额总和;
若是,则确定当前数据帧出现滞帧迹象;
若否,则确定当前数据帧未出现滞帧迹象。
可选地,所述应用数据包括必要应用数据,所述负载包括至少两个必要应用数据的配额。
可选地,所述应用数据包括必要应用数据和次要应用数据,所述负载包括至少一个必要应用数据和至少一个次要应用数据的配额。
可选地,将当前数据帧中的至少一个应用数据的配额重新分配,包括:
根据当前数据帧中的预设时间配额总和,以及当前数据帧中的已执行的应用数据的实际执行时间总和,调整未执行的至少一个应用数据对应的预设时间配额。
可选地,所述配额还包括:内容配额;
将当前数据帧中的至少一个应用数据的配额重新分配,包括:
在确定未执行的次要应用数据的内容配额可以进行拆分的情况下,将所述未执行的次要应用数据的内容配额进行拆分,并将拆分后的内容配额分配至当前数据帧以及其他未执行的数据帧据中,或分配至其他未执行的数据帧据中。
可选地,所述对目标数据的数据帧分别分配负载,包括:
根据多组历史目标数据的数据帧中至少一个应用数据的历史配额,对目标数据的数据帧分别分配负载;
或根据测试结果,对目标数据的数据帧分别分配负载。
可选地,在确定目标数据的每秒传输帧数小于阈值的情况下,减少目标数据的数据帧中的负载。
可选地,所述应用数据在数据帧中的配额通过可视化工具展示。
另一方面,本申请还提出了一种动态分配系统,包括:
第一分配模块,被配置为对目标数据的数据帧分别分配负载,其中,所述负载包括至少一个应用数据的配额;
第二分配模块,被配置为依次执行所述目标数据的数据帧,并在发现当前数据帧出现滞帧迹象的情况下,将当前数据帧中的至少一个应用数据的配额重新分配。
可选地,还包括:
第三分配模块,被配置为根据所述目标数据的数据帧中已执行数据帧的负载记录,对所述目标数据的数据帧中未执行数据帧分别分配负载。
可选地,所述第三分配模块,进一步被配置为根据所述已执行数据帧的负载记录,确定所述未执行数据帧中的所述至少一个应用数据的配额。
可选地,所述第三分配模块,进一步被配置为根据所述目标数据的已执行数据帧的至少一个应用数据重新分配的配额,确定未执行数据帧的至少一个应用数据的配额。
可选地,所述配额包括每个应用数据对应的预设时间配额;
所述第二分配模块,包括:
执行子模块,被配置为依次执行所述应用数据;
判断子模块,被配置为在确定当前应用数据的实际执行时间大于预设时间配额的情况下,判断第一个应用数据至当前应用数据的实际执行时间总和是否大于第一个应用数据至当前应用数据的预设时间配额总和;
若是,则确定当前数据帧出现滞帧迹象;
若否,则确定当前数据帧未出现滞帧迹象。
可选地,所述应用数据包括必要应用数据,所述负载包括至少两个必要应用数据的配额。
可选地,所述应用数据包括必要应用数据和次要应用数据,所述负载包括至少一个必要应用数据和至少一个次要应用数据的配额。
可选地,所述第二分配模块,还包括:
调整子模块,被配置为根据当前数据帧中的预设时间配额总和,以及当前数据帧中的已执行的应用数据的实际执行时间总和,调整未执行的至少一个应用数据对应的预设时间配额。
可选地,所述配额还包括:内容配额;
所述第二分配模块,还包括:
拆分子模块,被配置为在确定未执行的次要应用数据的内容配额可以进行拆分的情况下,将所述未执行的次要应用数据的内容配额进行拆分,并将拆分后的内容配额分配至当前数据帧以及其他未执行的数据帧据中,或分配至其他未执行的数据帧据中。
可选地,所述第一分配模块,进一步被配置为根据多组历史目标数据的数据帧中至少一个应用数据的历史配额,对目标数据的数据帧分别分配负载;
或根据测试结果,对目标数据的数据帧分别分配负载。
可选地,还包括:
减少模块,被配置为在确定目标数据的每秒传输帧数小于阈值的情况下,减少目标数据的数据帧中的负载。
可选地,还包括:
可视化模块,被配置为通过可视化工具展示所述应用数据在数据帧中的配额。
另一方面,本申请还提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现该指令被处理器执行时实现所述动态分配方法的步骤。
另一方面,本申请还提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述动态分配方法的步骤。
本申请提供的一种动态分配方法及系统、计算设备及存储介质,所述动态分配方法能够动态的根据当前数据帧的负载,决定每个应用数据在当前数据帧中的配额,从而缓解目标数据在运行过程中因配额分配不合理造成的滞帧的出现。
附图说明
图1是本申请实施例的计算设备的结构框图;
图2是本申请实施例的动态分配方法的示意性流程图;
图3是本申请实施例的动态分配方法的示意性流程图;
图4是本申请实施例的动态分配方法的示意性流程图;
图5是本申请实施例的可视化工具的界面示意图;
图6是本申请实施例的动态分配方法的示意性流程图;
图7是本申请实施例的动态分配系统的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一,取决于语境。如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在本申请中,提供了一种动态分配方法及系统、计算设备及存储介质,在下面的实施例中逐一进行详细说明。
图1是示出了根据本说明书一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备100的上述以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示方法中的步骤。图2是示出了根据本申请一实施例的动态分配方法的示意性流程图,包括步骤202至步骤204。
步骤202:对目标数据的数据帧分别分配负载,其中,所述负载包括至少一个应用数据的配额。
所述应用数据包括物理世界的更新、游戏对象的更新、渲染和网络数据包的更新等对应的数据。应用数据的配额可以为应用数据的时间配额或内容配额等。具体的一个数据帧分配的负载包括该数据帧中应用数据的时间配额或内容配额。
步骤204:依次执行所述目标数据的数据帧,并在发现当前数据帧出现滞帧迹象的情况下,将当前数据帧中的至少一个应用数据的配额重新分配。
其中,所述滞帧迹象为当前数据帧将要发生卡顿但还未发生卡顿的现象。滞帧迹象要通过当前数据帧已执行的应用数据对应的配额来判断。
具体的,以时间配额为例,在确定当前数据帧中的应用数据的实际执行时间大于预设时间配额的情况下,判断第一个应用数据至当前应用数据的实际执行时间总和是否大于第一个应用数据至当前应用数据的预设时间配额总和;若是则确定当前数据帧出现滞帧迹象。
所述动态分配方法能够动态的根据当前数据帧的负载,决定每个应用数据在当前数据帧中的实际配额,从而缓解目标数据在运行过程中因配额分配不合理造成的滞帧的出现。
图3是示出了根据本申请一实施例的动态分配方法的示意性流程图,包括步骤302至步骤318。
步骤302:对目标数据的数据帧分别分配负载,其中,所述负载包括至少一个应用数据的配额;所述配额包括每个应用数据对应的预设时间配额。
步骤304:依次执行所述目标数据的数据帧。
步骤306:在确定当前数据帧中的应用数据的实际执行时间大于预设时间配额的情况下,判断第一个应用数据至当前应用数据的实际执行时间总和是否大于第一个应用数据至当前应用数据的预设时间配额总和;若是,执行步骤308;若否,执行步骤310。
步骤308:确定当前数据帧出现滞帧迹象,将当前数据帧中的至少一个应用数据的配额重新分配。
步骤310:确定当前数据帧未出现滞帧迹象。
步骤312:判断当前应用数据是否为当前数据帧中最后一个应用数据;若是,执行步骤314;若否,执行步骤316。
步骤314:判断当前数据帧是否为最后一个数据帧,若是,执行步骤318,若否,执行步骤304.
步骤316:将当前应用数据后的下一个应用数据作为当前应用数据,并执行步骤306。
步骤318:结束执行所述目标数据的数据帧。
所述方法能够动态的根据当前数据帧的负载,决定每个应用数据的在当前数据帧中的配额,从而缓解目标数据在运行过程中因配额分配不合理造成的滞帧的问题,且所述方法特别适用于解决游戏引擎任务在执行的过程中出现卡顿的问题,其中,游戏引擎任务包括资源加载、场景对象实例化以及场景对象销毁等,所述资源加载包括贴图、预设体(prefab)以及配置文件等的加载。
通过对出现滞帧迹象的当前数据帧中的至少一种应用数据的配额进行重新分配,能够有效的缓解当前数据帧出现滞帧的情况,进而能够有效的缓解目标数据引擎出现卡顿的问题,且所述方法适用于协程调用和普通函数调用,增加了所述方法的使用范围。
具体地,通过判断第一个应用数据至当前应用数据的实际执行时间总和是否大于第一个应用数据至当前应用数据的预设时间配额总和,来确定当前数据帧是否出现滞帧迹象,充分利用了第一个应用数据至当前应用数据的实际执行时间,即便当前应用数据的实际执行时间大于当前应用数据的预设时间配额,只要第一个应用数据至当前应用数据的实际执行时间总和小于或等于第一个应用数据至当前应用数据的预设时间配额总和,就不需要确定当前数据帧未出现滞帧迹象,从而减少了当前数据帧中的至少一个应用数据的配额重新分配的步骤。
另一方面,本申请还提出了一种动态分配方法,参见图4,图4是示出了根据本申请一实施例的动态分配方法的示意性流程图,包括步骤402至步骤406:
步骤402:对目标数据的数据帧分别分配负载,其中,所述负载包括至少一个应用数据的配额。
步骤404:依次执行所述目标数据的数据帧,并在发现当前数据帧出现滞帧迹象的情况下,将当前数据帧中的至少一个应用数据的配额重新分配。
步骤406:根据所述目标数据的数据帧中已执行数据帧的负载记录,对所述目标数据的数据帧中未执行数据帧分别分配负载。
所述方法根据已执行数据帧的负载记录,对所述目标数据的数据帧中未执行数据帧分别分配负载,简单快捷,能够提高分配负载的速度。其中已执行数据帧的负载记录可包括逻辑用时和渲染用时。
可选地,在所述已执行数据帧未出现滞帧迹象的情况下,
根据所述目标数据的已执行数据帧的负载记录,对所述目标数据的未执行数据帧分别分配负载,包括:
根据所述已执行数据帧的负载记录,确定所述未执行数据帧中的所述至少一个应用数据的配额。
在所述已执行数据帧未出现滞帧迹象的情况下,根据所述已执行数据帧的负载记录,确定所述未执行数据帧中的所述至少一个应用数据的配额,能够保证未执行数据帧分配的负载在合适的范围之内,从而避免了目标数据在执行的过程中滞帧迹象的出现。
可选地,在所述已执行数据帧出现滞帧迹象的情况下,
根据所述目标数据的已执行数据帧的负载记录,对所述目标数据的未执行数据帧分别分配负载,包括:
根据所述目标数据的已执行数据帧的至少一个应用数据重新分配的配额,确定未执行数据帧的至少一个应用数据的配额。
在所述已执行数据帧出现滞帧迹象的情况下,所述出现滞帧迹象的已执行数据帧中的至少一个应用数据的配额必然进行了重新分配,使得已执行数据帧不会出现滞帧现象。如此根据调整后的已执行数据帧,确定未执行数据帧的至少一个应用数据的配额,能够保证未执行数据帧分配的负载在合适的范围之内,从而避免了目标数据在执行的过程中滞帧迹象的出现。
可选地,在所述已执行数据帧出现滞帧迹象的情况下,所述出现滞帧迹象的已执行数据帧中的至少一个应用数据的配额进行重新分配的方法如下:
根据当前数据帧中的预设时间配额总和,以及当前数据帧中的已执行的应用数据的实际执行时间总和,调整未执行的至少一个应用数据对应的预设时间配额。
通过对出现滞帧迹象的已执行数据帧中的至少一个应用数据的配额进行重新分配,能够使未执行数据帧分配的负载更加合理。
可选地,所述应用数据包括必要应用数据,所述负载包括至少两个必要应用数据的配额。
对必要应用数据数量的限定,能够在当第一个必要应用数据出现滞帧迹象的情况下,便于后续对当前数据帧中的至少一个应用数据的配额重新分配。
可选地,所述应用数据包括必要应用数据和次要应用数据,所述负载包括至少一个必要应用数据和至少一个次要应用数据的配额。
其中,必要应用数据是当前数据帧中必不可少的应用数据,而次要应用数据是对应部分或全部配额可调节到当前数据帧之后的数据帧中的应用数据。对必要应用数据数量的限定,能够在当必要应用数据出现滞帧迹象的情况下,可通过调整次要应用数据的配额,以避免当前数据帧出现滞帧迹象。
可选地,将当前数据帧中的至少一个应用数据的配额重新分配,包括:
根据当前数据帧中的预设时间配额总和,以及当前数据帧中的已执行的应用数据的实际执行时间总和,调整未执行的至少一个应用数据对应的预设时间配额。
在当前数据帧中,通过实际执行时间总和减去预设时间配额总和,能够得到实际执行时间总和超出预设时间配额总和的具体数值,根据得到的具体数值能够确定未执行的至少一个应用数据应该减少多少预设时间配额,才能避免滞帧迹象的出现,其中实际执行时间和预设时间配额可通过设计代码获取。
例如当前数据帧的实际执行时间总和为八十毫秒,而预设时间配额总和为七十五毫秒,如此可以确定未执行的至少一个应用数据应该减少不小于五毫秒的预设时间配额,才能避免滞帧迹象的出现。
可选地,所述配额还包括:内容配额。
将当前数据帧中的至少一个应用数据的配额重新分配,包括:
在确定未执行的次要应用数据的内容配额可以进行拆分的情况下,将所述未执行的次要应用数据的内容配额进行拆分,并将拆分后的内容配额分配至当前数据帧以及其他未执行的数据帧据中,或分配至其他未执行的数据帧据中。
其中,未执行的次要应用数据可以进行拆分,包括:在逻辑上,未执行的次要应用数据可以进行拆分。
除了由于滞帧迹象的出现会造成当前数据帧出现滞帧的现象,还包括由代码问题造成的滞帧现象,而对于由代码问题造成的滞帧现象,则通知操作人员调整代码。
当确定对于出现滞帧迹象的当前次要应用数据的内容配额在逻辑上能够进行重新分配之后,通过将当前次要应用数据的内容配额进行分拆,并将分拆后的内容配额分配至位于当前数据帧之后的预设数量的数据帧中,以减少当前数据帧的负载大小。具体分配至位于当前数据帧之后的多少数量的数据帧中,由内容配额分拆的个数确定,从而可以通过拆分内容配额来避免滞帧迹象的出现。
对于游戏运行,将分拆后次要应用数据的内容配额分配至位于出现滞帧的数据帧之后的预设数量的数据帧中,不会影响游戏逻辑的正确性和游戏效果。
例如一次资源加载在当前数据帧中包括加载A、B、C三个资源,则把整个资源加载分拆成“加载A”、“加载B”和“加载C”三个步骤,并将“加载B”和“加载C”分配至当前数据帧之后的两个未执行数据帧中去执行;也可以将“加载A”、“加载B”和“加载C”分配至当前数据帧之后的三个未执行数据帧中去执行,以避免由当前数据帧滞帧迹象的出现。
但是对于一个“加载A”在逻辑上通常是不可分拆的,所以可以认定无法将“加载A”分配至多个数据帧中执行。
再例如,当前数据帧是由于物理计算过多造成的滞帧迹象的出现,可将部分需要物理计算的内容分配至位于当前数据帧之后的预设数量的数据帧中,以减轻当前数据帧的负载,以此避免滞帧迹象的出现。
可选地,所述对目标数据的数据帧分别分配负载,包括:
根据多组历史目标数据的数据帧中至少一个应用数据的历史配额,对目标数据的数据帧分别分配负载;
例如,在游戏引擎任务分配的过程中,根据多组现有游戏中对应的应用数据在每个数据帧中分配的实际执行时间的平均值,确定当前应用数据在数据帧中分配的预设时间配额的大小。具体地,例如根据多组现有游戏中高优先级的应用数据分配的实际执行时间分别为十毫秒、九毫秒和十一毫秒,其平均值为十毫秒,即确定游戏引擎任务中高优先级的应用数据的预设时间配额为十毫秒;根据多组现有游戏中低优先级的应用数据分配的实际执行时间分别为三毫秒、二毫秒和一毫秒,其平均值为二毫秒,即确定游戏引擎任务中高优先级的应用数据的预设时间配额为十毫秒。
或根据测试结果,对目标数据的数据帧分别分配负载。
例如,在游戏引擎任务分配的过程中,调整当前数据帧的预设时间配额为五毫秒,若游戏运行中发现当前数据帧渲染存在异常,则将当前数据帧的预设时间配额分配为七毫秒,直至游戏在当前数据帧中运行未出现明显异常。
可选地,在确定目标数据的每秒传输帧数小于阈值的情况下,减少目标数据的数据帧中的负载。
通过目标数据的每秒传输帧数确定目标数据是否存在滞帧迹象,操作简单,能够提高确定存在滞帧迹象的数据帧的速度。例如,在一数据帧中,给资源加载分配十毫秒,但目标数据的每秒传输帧数因此而降低,则说明给资源加载分配的预定时间配额分多了,应当减少资源加载在当前数据帧中的预定时间配额。
可选地,所述应用数据在数据帧中的配额通过可视化工具展示。
结合图5,图5是示出了根据本申请一实施例的可视化工具的界面示意图,具体地,示出了模块A和模块B在每个数据帧中的实际执行时间,其中图5中模块A和模块B均为本实施例中的应用数据,即可视化工具能够使操作人员观察的应用数据在数据帧中的配额,进而便于可视化工具中调节窗口501调整应用数据的配额。
具体地,在发现当前数据帧出现滞帧迹象的情况下,通过调节可视化工具中调节窗口501内的滑动块在端点m和端点n构成的线段的位置,其中,中间点l为滑动块所在的位置;中间点l距端点n的长度代表应用数据在当前数据帧中的配额,进而可通过调节中间点l距端点n的长度调节应用数据在当前数据帧中的配额,从而缓解应用数据的滞帧的情况。
另一方面,本申请还提出了一种动态分配方法,参见图6和表一,
表一示出了一数据帧中各应用数据对应的初始的预定时间配额、实际执行时间以及调整后的预定时间配额;
表一
应用数据 |
初始的预设时间配额 |
实际执行时间 |
调整后的预设时间配额 |
物理世界的更新 |
八毫秒 |
五毫秒 |
八毫秒 |
游戏对象的更新 |
五毫秒 |
八毫秒 |
五毫秒 |
渲染 |
三毫秒 |
五毫秒 |
五毫秒 |
网络数据包的更新 |
五毫秒 |
三毫秒 |
三毫秒 |
图6示出了根据本申请一实施例的动态分配方法的示意性流程图;包括步骤602至步骤616:
步骤602:根据游戏引擎任务,对游戏引擎任务的数据帧分别分配负载,其中包括对所述游戏引擎任务在一数据帧中,对应用数据的预定时间配额进行初始的分配。
其中,初始的分配结果参照表一;所述游戏引擎任务的应用数据包括在数据帧中依次执行的物理世界的更新、游戏对象的更新、渲染以及网络数据包的更新;所述负载包括所述应用数据的配额;每个应用数据的所述配额包括每个应用数据对应的预设时间配额。
步骤604:依次执行所述目标数据的数据帧。
步骤606:在执行到表一对应的数据帧时,在确定物理世界的更新的实际执行时间大于预设时间配额的情况下,物理世界的更新的预设时间配额大于实际执行时间,确定物理世界的更新这一应用数据不会造成滞帧迹象的出现。
由于物理世界的更新的预设时间配额为八毫秒,而实际执行时间为五毫秒;因此确定物理世界的更新这一应用数据不会造成滞帧迹象的出现。
步骤608:物理世界的更新和游戏对象的更新总的预设时间配额等于总的实际执行时间,确定游戏对象的更新这一应用数据不会造成滞帧迹象的出现。
由于物理世界的更新和游戏对象的更新总的预设时间配额为十三毫秒,而实际执行时间为十三毫秒;因此确定游戏对象的更新这一应用数据不会造成滞帧迹象的出现。
步骤610:物理世界的更新、游戏对象的更新和渲染总的预设时间配额小于总的实际执行时间,确定渲染这一应用数据会造成滞帧迹象的出现。
由于物理世界的更新、游戏对象的更新和渲染总的预设时间配额为十六毫秒,而实际执行时间为十八毫秒;因此确定渲染这一应用数据会造成滞帧迹象的出现,则将渲染的预设时间配额调整为五毫秒。
步骤612:根据物理世界的更新、游戏对象的更新和渲染总的预设时间配额和总的实际执行时间,以及网络数据包的更新的预设时间配额和实际执行时间,调整网络数据包的更新的预设时间配额。
由于物理世界的更新、游戏对象的更新和渲染总的预设时间配额与总的实际执行时间少了两毫秒,网络数据包的更新的预设时间配额比实际执行时间多了两毫秒;
在将渲染的预设时间配额改为五毫秒的情况下,将网络数据包的更新的预设时间配额改为三毫秒。
步骤614:物理世界的更新、游戏对象的更新、渲染和调整后的网络数据包的更新总的预设时间配额等于实际执行时间,确定网络数据包这一应用数据不会造成滞帧迹象的出现。
由于物理世界的更新、游戏对象的更新、调整后的渲染和调整后的网络数据包的更新总的预设时间配额为二十一毫秒,而实际执行时间为二十一毫秒;因此确定网络数据包这一应用数据不会造成滞帧迹象的出现。
步骤616:执行表一对应的数据帧之后的下一个数据帧,直至目标数据的数据帧执行完毕。
在发现渲染在当前数据帧中出现滞帧迹象的情况下,通过调整渲染的预设时间配额和网络数据包的更新的预设时间配额,以避免当前数据帧因渲染出现滞帧。
另一方面,本申请还提出了一种动态分配系统700,参见图7,图7示出了根据本申请一实施例的动态分配系统的结构示意图,包括:
第一分配模块702,被配置为对目标数据的数据帧分别分配负载,其中,所述负载包括至少一个应用数据的配额;
第二分配模块704,被配置为依次执行所述目标数据的数据帧,并在发现当前数据帧出现滞帧迹象的情况下,将当前数据帧中的至少一个应用数据的配额重新分配。
所述第二分配模块704通过对出现滞帧迹象的当前数据帧中的至少一种应用数据的配额进行重新分配,能够有效的缓解当前数据帧出现滞帧的情况,进而能够有效的缓解目标数据引擎出现卡顿的问题,且所述系统适用于协程调用和普通函数调用。
所述动态分配系统700可通过网络将终端连接起来进行调试。在游戏引擎中,所述动态分配系统连接游戏客户端,并在游戏客户端的监控服务器上开设线程,以收集游戏客户端的数据。
可选地,还包括:
第三分配模块,被配置为根据所述目标数据的数据帧中已执行数据帧的负载记录,对所述目标数据的数据帧中未执行数据帧分别分配负载。
所述第三分配模块根据已执行数据帧的负载记录,对所述目标数据的数据帧中未执行数据帧分别分配负载,简单快捷,能够提高分配负载的速度。
可选地,所述第三分配模块,进一步被配置为根据所述已执行数据帧的负载记录,确定所述未执行数据帧中的所述至少一个应用数据的配额。
在所述已执行数据帧未出现滞帧迹象的情况下,所述第三分配模块根据所述已执行数据帧的负载记录,确定所述未执行数据帧中的所述至少一个应用数据的配额,能够保证未执行数据帧分配的负载在合适的范围之内,从而避免了目标数据在执行的过程中滞帧迹象的出现。
可选地,所述第三分配模块,进一步被配置为根据所述目标数据的已执行数据帧的至少一个应用数据重新分配的配额,调整未执行数据帧的至少一个应用数据的配额。
在所述已执行数据帧出现滞帧迹象的情况下,所述出现滞帧迹象的已执行数据帧中的至少一个应用数据的配额必然进行了重新分配,使得已执行数据帧不会出现滞帧现象。如此根据调整后的已执行数据帧,确定未执行数据帧的至少一个应用数据的配额,能够保证未执行数据帧分配的负载在合适的范围之内,从而避免了目标数据在执行的过程中滞帧迹象的出现。
可选地,所述配额包括每个应用数据对应的预设时间配额;
所述第二分配模块704,包括:
执行子模块,被配置为依次执行所述应用数据;
判断子模块,被配置为在确定当前应用数据的实际执行时间大于预设时间配额的情况下,判断第一个应用数据至当前应用数据的实际执行时间总和是否大于第一个应用数据至当前应用数据的预设时间配额总和;
若是,则确定当前数据帧出现滞帧迹象;
若否,则确定当前数据帧未出现滞帧迹象。
所述第二分配模块704中的判断子模块通过判断第一个应用数据至当前应用数据的实际执行时间总和是否大于第一个应用数据至当前应用数据的预设时间配额总和,来确定当前数据帧是否出现滞帧迹象,充分利用了第一个应用数据至当前应用数据的实际执行时间,即便当前应用数据的实际执行时间大于当前应用数据的预设时间配额,只要第一个应用数据至当前应用数据的实际执行时间总和小于或等于第一个应用数据至当前应用数据的预设时间配额总和,就不需要确定当前数据帧未出现滞帧迹象,从而减少了当前数据帧中的至少一个应用数据的配额重新分配的步骤。
可选地,所述应用数据包括必要应用数据,所述负载包括至少两个必要应用数据的配额。
对必要应用数据数量的限定,能够在当第一个必要应用数据出现滞帧迹象的情况下,便于后续对当前数据帧中的至少一个应用数据的配额重新分配。
可选地,所述应用数据包括必要应用数据和次要应用数据,所述负载包括至少一个必要应用数据和至少一个次要应用数据的配额。
其中,必要应用数据是当前数据帧中必不可少的应用数据,而次要应用数据是对应部分或全部配额可调节到当前数据帧之后的数据帧中的应用数据。对必要应用数据数量的限定,能够在当必要应用数据出现滞帧迹象的情况下,可通过调整次要应用数据的配额,以避免当前数据帧出现滞帧迹象。
可选地,所述第二分配模块704,还包括:调整子模块,被配置为根据当前数据帧中的预设时间配额总和,以及当前数据帧中的已执行的应用数据的实际执行时间总和,调整未执行的至少一个应用数据对应的预设时间配额。
在当前数据帧中,通过实际执行时间总和减去预设时间配额总和,能够得到实际执行时间总和超出预设时间配额总和的具体数值,根据得到的具体数值能够确定未执行的至少一个应用数据应该减少多少预设时间配额,才能避免滞帧迹象的出现。
可选地,所述配额还包括:内容配额;
所述第二分配模块704,还包括:
拆分子模块,被配置为在确定未执行的次要应用数据可以进行拆分的情况下,将所述未执行的次要应用数据的内容配额进行拆分,并将拆分后的内容配额分配至当前数据帧以及其他未执行的数据帧据中,或分配至其他未执行的数据帧据中。
其中,未执行的次要应用数据可以进行拆分,包括:未执行的次要应用数据在逻辑上可以进行拆分。
当确定对于出现滞帧迹象的当前次要应用数据的内容配额在逻辑上能够进行重新分配之后,所述拆分子模块通过将当前次要应用数据的内容配额进行分拆,并将分拆后的内容配额分配至位于当前数据帧之后的预设数量的数据帧中,以减少当前数据帧的负载大小。具体分配至位于当前数据帧之后的多少数量的数据帧中,由内容配额分拆的个数确定,从而可以通过拆分内容配额来避免滞帧迹象的出现。
可选地,所述第一分配模块702,进一步被配置为根据多组历史目标数据的数据帧中至少一个应用数据的历史配额,对目标数据的数据帧分别分配负载;或根据测试结果,对目标数据的数据帧分别分配负载。
所述第一分配模块702可通过上述两种方法中的任意一种对目标数据的数据帧分别分配负载,提高了第一分配模块702分配负载的多样性。
可选地,还包括:减少模块,被配置为在确定目标数据的每秒传输帧数小于阈值的情况下,减少目标数据的数据帧中的负载。
所述减少模块通过目标数据的每秒传输帧数确定目标数据是否存在滞帧迹象,操作简单,能够提高确定存在滞帧迹象的数据帧的速度。
可视化模块,被配置为通过可视化工具展示所述应用数据在数据帧中的配额。
可视化模块能够使操作人员通过可视化工具观察的应用数据在数据帧中的配额,进而便于应用数据的配额的调整。
本申请一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现如前所述动态分配方法的步骤。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述动态分配方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的动态分配方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述动态分配方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。