买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】一种基于差异的AssetBundle更新方法及装置_珠海金山网络游戏科技有限公司;广州西山居世游网络科技有限公司_201711025416.9 

申请/专利权人:珠海金山网络游戏科技有限公司;广州西山居世游网络科技有限公司

申请日:2017-10-27

公开(公告)日:2018-04-13

公开(公告)号:CN107908419A

主分类号:G06F8/658(2018.01)I

分类号:G06F8/658(2018.01)I

优先权:

专利状态码:失效-发明专利申请公布后的驳回

法律状态:2021.10.29#发明专利申请公布后的驳回;2018.05.08#实质审查的生效;2018.04.13#公开

摘要:一种基于差异的AssetBundle更新方法,包括如下步骤:对新和旧的AssetBundle进行解包,获取包内资源;通过AssetBundle差异分析,检测新版本中的资源与旧版本资源差异情况,生成差异指令的输出文件;客户端接收差异指令文件并读取和解析差异指令,使用旧版本中的资源填充资源数据,生成新版本AssetBundle资源包。发明的有益效果是:通过AssetBundle差异比较,从而降低更新包体积,减少包内冗余文件。相对与其他AssetBundle更新方法,本方法具有如下几个优点:每次重新生成新版本的AssetBundle资源包,资源中不存在冗余文件,提高了传输效率;客户端无需更新全部资源,减少服务器带宽和用户流量。

主权项:一种基于差异的AssetBundle更新方法,其特征在于,该方法包括以下步骤:S100,对新版本和旧版本的AssetBundle资源包进行解包,获取包内资源;S200,对包内资源进行AssetBundle差异分析,获取新版本中资源与旧版本资源差异结果,生成差异指令文件并发送;S300,使用客户端接收差异指令文件,根据不同的差异指令接收新版本中的相应资源或者保留旧版本中的相应资源并填充进资源数据,生成新版本AssetBundle资源包。

全文数据:一种基于差异的AssetBundIe更新方法及装置技术领域[0001]本发明涉及游戏开发技术领域,尤其涉及基于差异的AssetBundle更新方法及装置。背景技术[0002]随着媒体互联网的迅速发展,数字互动娱乐延伸到新的领域,网络游戏是近年来得到广泛关注并且发展极为迅速的一个产业,如今我国网络游戏业的巨大市场使得游戏从业人员不断发展软件技术以提升玩家的游戏体验。[0003]在网络游戏开发中,AssetBundle是Unitypro提供的一种用来存储资源的文件格式,它可以存储任意一种Unity引擎能够识别的资源,如Scene、Mesh、Material、Texture、Audio、noxss等等,同时,AssetBundle也可以包含开发者自定义的二进制文件,只需要将自定义文件的扩展名改为.bytes,Unity就可以把它识别为TextAsset,进而就可以被打包到AssetBundle中。Unity引擎所能识别的资源我们称为Asset,AssetBundle就是Asset的一个集合。例如在发明专利申请CN201710188887.5中,对游戏资源进行处理,得到多个预制件,每个预制件对应生成一个版本号,每个版本号对应一个下载地址;将多个预制件生成一个AssetBundle资源包,在游戏进程启动成功后,推算出距离当前时刻一定时间间隔内所需的游戏资源,得到所需的游戏资源对应的版本号及对应下载地址。[0004]现有的游戏客户端通常包括游戏运行时所需的所有游戏资源,例如,图片、音频和视频等资源。这些资源通常采用打AssetBundle包方式存储,从而获得传输方便、资源保密、以及更加快速访问速度等优点。但由于AssetBundle没有提供差异更新的方式,用户通常使用大量AssetBundle包的方式解决更新包体积问题,大量的AssetBundle包会导致包内文件冗余,访问时间慢,资源无法进行绘制合并等问题。因此,需要提供实现AssetBundle更新的方法使降低更新包体积,减少包内冗余文件。发明内容[0005]本发明的目的是解决现有技术的不足,提供一种基于差异的AssetBundle更新方法及装置,旨在解决更新过程中AssetBundle中产生冗余资源及大幅度减少更新包体积问题。[0006]为了实现上述目的,本发明提出一种基于差异的AssetBundle更新方法,包括如下步骤:[0007]S100,对新版本和旧版本的AssetBundle进行解包,获取包内资源;[0008]S200,对包内资源进行AssetBundle差异分析,获取新版本中资源与旧版本资源差异结果,生成差异指令文件并发送;[0009]S300,客户端接收差异指令文件,根据不同的差异指令接收新版本中的相应资源或者保留旧版本中的相应资源并填充进资源数据,生成新版本AssetBundle资源包。[0010]在本发明的上述方法中,步骤S100和步骤S200在服务器上进行,服务器向客户端获取旧AssetBundle的版本号并查找相应版本的AssetBundle文件。[0011]进一步地,查找到相应版本的AssetBundle文件之后,通过差异比较并且遍历新版本AssetBundle包中资源检测新版本中的资源与旧版本资源差异情况。[0012]进一步地,通过所述差异比较将新AssetBundle资源包中的资源分成三类:未变更的资源,在旧版本中存在且内容相同;新增的资源,在旧版本中不存在;变更的资源,在旧版本中存在但内容不同。[0013]进一步地,在服务器中生成差异指令的输出文件,其中对于未变更的资源,其差异指令为资源所在旧版本中的文件名及偏移值、及偏移值和资源大小;对于新增的资源和变更的资源,其差异指令为资源所在新版本中的文件名及偏移值、资源内容和资源大小。[0014]本发明还提出一种基于差异的AssetBundle更新装置,其包括AssetBundle差异分析検块、AssetBundle差异合并检块,其中差异分析模块用于AssetBundle差异分析,检测新版本中的资源与旧版本资源差异情况,生成差异指令的输出文件;AssetBundle差异合并模块,用于接收差异指令文件,根据不同的差异指令接收新版本中的相应资源或者保留旧版本中的相应资源并填充进资源数据,生成新版本AssetBundle资源包。[0015]进一步地,差异分析模块在服务端模块上运行,其中服务端模块储存有多个不同版本的AssetBundle文件。[0016]本发明的有侃效果是:每次重新生成新版本的AssetBundle资源包,资源中不存在冗余文件,提高了传输效率;客户端无需更新全部资源,减少服务器带宽和用户流量。附图说明[0017]图1所示为本发明所提出的基于差异的AssetBundle更新方法一优选实施例中某版本AssetBundle文件包的示意图;[0018]图2所示为本发明所提出的基于差异的AssetBundle更新方法一优选实施例中某版本AssetBundle文件的示意图;[0019]图3所^为本发明所提出的基于差异的AssetBundle更新方法流程图;[0020]图4所示为本发明所提出的基于差异的AssetBundle更新方法中差异指令生成方法流程图;[0021]图5所不为本发明所提出的基于差异的AssetBundle更新方法中差异合并的流程图;[0022]图6所不为本发明所提出的基于差异的AssetBundle更新装置结构示意图。具体实施方式_3]W下觸合实脑麵_林发麵构思、具体结构及产制术效果进行清楚、完整的描述,以_充分地理解本发明的目的、方案和效果。[0024]_1所示为本实施刪-个ASSetBundle文件包,其中包含多个AssetBundu件。=〇25]_2所示为-个AssetBundle文件,其巾包含了斜可咖nity?|輔能识腦资源。[0026]細3所示麵于差湖AssetBundlegff施流糊,在本发觀—个优选实施例中,上述基于内部应用的移动设备分配与管理的方法包含以下步骤:[0027]S100,对新版本和旧版本的AssetBundle进行解包,获取包内资源;[0028]S200,对包内资源进行AssetBundle差异分析,获取新版本中资源与旧版本资源差异结果,生成差异指令文件并发送;[0029]S300,客户端接收差异指令文件,根据不同的差异指令接收新版本中的相应资源或者保留旧版本中的相应资源并填充进资源数据,生成新版本AssetBundle资源包。[003°]在本发明的一个优选实施例中,用户使用客户端向服务器发送更新指令,其中指令包括客户端中的AssetBundle版本信息,服务器根据版本号查找存储在服务器内部的相应版本AssetBundle文件,同时加载新旧版本的AssetBundle,服务器中的差异分析工具执行差异比较,在旧版本AssetBundle中进行检查,其检查的规则是:遍历新版本AssetBundle包中资源,根据旧版本文件内容将新版本中的每个文件分类为:1.未变更的资源,2.新增资源,3.变更的资源。[0031]如图4所示,进一步地,在上述实施例中,根据分类得到的资源类别生成差异指令,针对没有变更的资源,其差异指令为资源所在旧版本中的文件名及偏移值、及偏移值和资源大小;针对新增的资源和变更的资源,其差异指令为资源所在新版本中的文件名及偏移值、资源内容和资源大小。其中,在对比未处理的新版AssetBundle文件过程中,当读取到相同的文件是,再进行下一步处理检查文件中的对应资源是否与旧文件中的相同,若相同则生成未变更资源差异指令,若不同则生成变更资源差异指令;当读取到不相同的文件时,生成新增资源差异指令,生成差异指令进程完成。[0032]如图5所示,进一步地,在上述实施例中,服务器在碎片检测过程后立即开始AssetBundle差异合并过程。客户端在通过网络或存储设备接收到资源差异指令后开始AssetBundle差异合并过程。AssetBundle差异合并工具首先加载旧版本的AssetBundle和资源差异指令,并逐条取出资源差异指令。对于每一条资源差异指令,AssetBundle差异合并工具将其应用为新版本AssetBundle中的对应资源。待所有指令执行完成后,客户端生成的新版本AssetBundle应与服务端上对应版本的AssetBundle完全相同。待所有指令执行完成后,客户端生成的新版本AssetBundle应与服务端上对应版本的AssetBundle完全相同。服务端和客户端进行完成AssetBundle差异合并后整个AssetBundle更新方法也完成。[0033]参照图6所示的基于差异的AssetBundle更新装置结构示意图,在本发明的一个实施例中,上述基于差异的AssetBundle更新装置,包括AssetBundle差异分析模块、AssetBundle差异合并模块,其中AssetBundle差异分析模块用于AssetBundle差异分析,检测新版本中的资源与旧版本资源差异情况,生成差异指令的输出文件;AssetBundle差异合并模块用于接收差异指令文件,根据不同的差异指令接收新版本中的相应资源或者保留旧版本中的相应g源并填充进资源数据,生成新版本AssetBundle资源包。差异分析模块在服务端模块上运行,其中服务端模块储存有多个不同版本的AssetBundle文件。[_1、本领域普通技术人员可以意识到,结合本文中所公开的实施讎述的各示例的单兀及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。[0035]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0036]在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接相合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0037]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0038]另外,在本发明各个实施例中的各功能单元可以集成在二个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0039]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在二个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备可以是个人计算机,服务器,或者网络设备等执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等各种可以存储程序代码的介质。[0040]以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

权利要求:1.一种基于差异的AssetBundle更新方法,其特征在于,该方法包括以下步骤:S100,对新版本和旧版本的AssetBundle资源包进行解包,获取包内资源;S200,对包内资源进行AssetBundle差异分析,获取新版本中资源与旧版本资源差异结果,生成差异指令文件并发送;S3〇0,使用客户端接收差异指令文件,根据不同的差异指令接收新版本中的相应资源或者保留旧版本中的相应资源并填充进资源数据,生成新版本AssetBundle资源包。2.根据权利要求1所述的基于差异的AssetBundle更新方法,其特征在于,所述步骤S100和步骤S200在服务器上进行。3.根据权利要求1所述的基于差异的AssetBundle更新方法,其特征在于,所述步骤S100还包括服务器向客户端获取旧AssetBundle的版本号并查找相应版本的AssetBundle文件。4.根据权利要求3所述的基于差异的y\ssetBundle更新方法,其特征在于,对于新增的资源和变更的资源,其差异指令为资源所在新版本中的文件名及偏移值、资源内容和资源大小。5.根据权利要求1所述的基于差异的AssetBundle更新方法,其特征在于,所述步骤S200中对包内资源进行AssetBundle差异分析是通过差异比较并且遍历新版本AssetBundle包中资源来完成。6.根据权利要求5所述的基于差异的AssetBundle更新方法,其特征在于,所述差异比较还包括:用于根据差异比较结果将新AssetBundle资源包中的资源分成多种不同类型资源,其中资源类型包括未变更资源、新增资源及变更资源,其中的未变更资源在旧版本中存在且内容相同,其中的新增资源在旧版本中不存在,其中的变更资源在旧版本中存在但内容不同。7.根据权利要求1或6所述的基于差异的AssetBundle更新方法,其特征在于,所述步骤S2〇0中生成差异指令的输出文件包括未变更的资源,其差异指令为资源所在旧版本中的件名、偏移值及资源大小。8.—种基于差异的AssetBundle更新装置,其特征在于,该装置包括:AssetBundle差异分析模块,用于执行AssetBundle差异分析,检测新版本中的资源与旧版本资源差异情况,生成差异指令的输出文件;AssetBundle差异合并模块,用于接收差异指令文件,根据不同的差异指令接收新版本中的相应资源或者保留旧版本中的相应资源并填充进麵数据,生成新版本AssetBu资源包。9.根据权利要求8所述的基于差异的AssetBundle更新装置,其特征在于,该装置还包括:所述AssetBundle差异分析模块运行于服务端模块,所述服务端模块储存有多版本的AssetBundle文件。jo.—种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理执行时实现权利要求1-7中任一项所述方法。

百度查询: 珠海金山网络游戏科技有限公司;广州西山居世游网络科技有限公司 一种基于差异的AssetBundle更新方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。