资源数据下载方法、装置、设备及存储介质与流程
未命名
09-12
阅读:264
评论:0

1.本技术实施例涉及计算机技术领域,尤其涉及一种资源数据下载方法、装置、设备及存储介质。
背景技术:
2.近年来移动互联网的快速发展推动了网络游戏行业特别是移动游戏的爆发式增长,移动游戏成为整个网络游戏行业新的增长亮点。网络游戏产品技术水平的提高推动游戏产品的转型,轻载体、跨终端成为行业技术发展的一大趋势。随着终端设备配置性能的日益提升,用户对游戏的质量要求也越来越高,画面要求也越来越精美,随之所需求的游戏美术资源以及画质也越来越精致。随着画面质量的提升,游戏项目的客户端资源体积也变得越来越大。
3.相关技术中,安装包内部通常涵盖所有游戏资源,在进入游戏前终端设备进行相应的游戏资源的下载,如分批进行资源包的下载。在下载完毕后,进行游戏的运行,由于游戏的安装包体积较大,由此导致了用户等待时间过长,游戏使用体验不够快捷流畅的问题。
技术实现要素:
4.本技术实施例提供了一种资源数据下载方法、装置、设备及存储介质,解决了用户开始游戏时,需要长时间等待游戏资源数据的下载而带来的等待时长较长,游戏体验不够快捷流畅的问题,能够实现用户快速的开启游戏。
5.第一方面,本技术实施例提供了一种资源数据下载方法,该方法包括:
6.在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息;
7.在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载;
8.在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。
9.可选的,在所述游戏资源下载之前,还包括:
10.将原始游戏安装包中的资源划分为基础资源包以及线上资源包;
11.将所述基础资源包部署至第一服务器,将所述线上资源包部署至第二服务器,所述基础资源包的大小小于所述线上资源包的大小。
12.可选的,所述将原始游戏安装包中的资源划分为基础资源包以及线上资源包,包括:
13.通过设置的image模块以及io库从原始游戏安装包中提取得到线上资源包,并进行资源合并、图集整理、无损压缩以及资源混淆处理。
14.可选的,所述将所述线上资源包部署至第二服务器,包括:
15.通过svn版本命令行代码进行线上资源包的资源版号分析,并进行资源打包以及
补丁生成后,发布部署至第二服务器。
16.可选的,所述将所述基础资源包部署至第一服务器,包括:
17.通过xxtea加密方式对所述基础资源包进行加密后部署至第一服务器,其中,加密密钥和对应的标识写入至所述基础资源包中的底层代码中。
18.可选的,所述并行处理逻辑,包括:
19.基于cocos2dx引擎以及lua脚本实现的资源下载与资源加载并行处理的逻辑。
20.可选的,所述基于cocos2dx引擎以及lua脚本实现的资源下载与资源加载并行处理的逻辑,包括:
21.通过调用lua脚本中设置的api函数,以及cocos2dx引擎中维护的堆栈进行cocos2dx引擎与lua脚本的数据交互,以实现资源下载与资源加载的解耦。
22.可选的,所述通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载,包括:
23.通过设置的并行处理逻辑以及下载模块,以从第三服务器中获取对应的线上资源包进行加载,所述下载模块基于curl封装成的assetsdownloader库生成。
24.可选的,所述下载模块的生成过程,包括:
25.创建下载请求队列容器和下载后处理容器,分别用于进行下载请求控制以及资源下载后的控制处理;
26.创建assetsdownloader,以执行下载过程的启动以及下载结果监听,并将下载后的资源数据添加至所述下载后处理容器。
27.第二方面,本技术实施例还提供了一种资源数据下载装置,包括:
28.第一下载模块,配置为在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息;
29.下载判断模块,配置为在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载;
30.第二下载模块,配置为在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。
31.第三方面,本技术实施例还提供了一种电子设备,该设备包括:
32.一个或多个处理器;
33.存储装置,用于存储一个或多个程序,
34.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本技术实施例所述的资源数据下载方法。
35.第四方面,本技术实施例还提供了一种存储计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本技术实施例所述的资源数据下载方法。
36.第五方面,本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,设备的至少一个处理器从计算机可读存储介质读取并执行计算机程序,使得设备执行本技术实施例所述的资源数据下载方法。
37.本技术实施例中,在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息,在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于第一版本信息和第二版本信息确定是否进行资源文件的下载,在确定出对资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。本方案通过动态加载的方式,分别进行基础资源包和线上资源包的下载,其中,线上资源包基于按需加载的方式,显著降低了用户游戏过程中,资源数据的下载时长,解决了用户开始游戏时,需要长时间等待游戏资源数据的下载而带来的等待时长较长,游戏体验不够快捷流畅的问题,能够实现用户快速的开启游戏。
附图说明
38.图1为本技术实施例提供的一种资源数据下载方法的流程图;
39.图2为本技术实施例提供的另一种资源数据下载方法的流程图;
40.图3为本技术实施例提供的另一种资源数据下载方法的流程图;
41.图4为本技术实施例提供的另一种资源数据下载方法的流程图;
42.图5为本技术实施例提供的一种资源数据下载装置的结构框图;
43.图6为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
44.下面结合附图和实施例对本技术实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术实施例,而非对本技术实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术实施例相关的部分而非全部结构。
45.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
46.本技术实施例提供的资源数据下载方法,可由计算设备如智能手机、平板电脑、笔记本电脑、台式机等执行。
47.图1为本技术实施例提供的一种资源数据下载方法的流程图,如图1所示,具体包括如下步骤:
48.步骤s101、在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息。
49.其中,游戏资源为游戏开启并正常运行过程中所需的数据资源。该游戏资源的下载过程可以是游戏安装时的下载过程。其中,第一服务器中部署有基础资源包,该基础资源包和后续提及的线上资源包共同够成了游戏运行过程中所需的数据资源。其中,基础资源包的体积大小小于线上资源包。在一个实施例中,该基础资源包和线上资源包通过脚本对原始安装包进行划分得到。其中,基础资源包生成后相应配置有版本信息,此处记作第一版本信息。其中,该第一版本信息可以是空,也可以是更新过后重新设置的非空的版本号。
50.在一个实施例中,从第一服务器中获取基础资源包之前,还包括用户登录游戏后,向服务器请求版本信息文件,将请求得到的版本信息文件保存至本地缓存,并将本地记录的版本信息与请求得到的版本信息进行比对,如果本地记录的版本信息经过比对确定出不是最新,则进一步确定是否已经发生过热更,在确定出未发生过热更的情况下,从第一服务器中获取基础资源包;如果发生过热更,则相应的执行从第二服务器中获取补丁包进行下载。相应的,在基础资源包和/或补丁包下载完成后,进行渲染显示。
51.步骤s102、在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载。
52.在一个实施例中,游戏启动运行,即进入游戏时,从第二服务器中获取第二版本信息,以将第二版本信息下载至本地,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载。其中,该检测到需要加载的资源文件可以是检测到游戏需要用到某张图片等。可选的,在检测到需要加载资源文件时,进行第一版本信息和第二版本信息的比对,如果二者不一致则表征存在更新版本的资源文件,此时执行步骤s103进行文件的下载。可选的,在一个实施例中,在检测到需要加载资源文件时,还包括进行该资源文件是否存在的判断,如果确定出该资源文件不存在,则执行步骤s103。
53.步骤s103、在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。
54.其中,在确定出需要进行资源文件进行下载时,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。其中,该并行处理逻辑能够实现资源下载与资源加载的解耦。其中,上述的第一服务器、第二服务器和第三服务器可以是相同的服务器也可以是不同的服务器。
55.由上述可知,在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息,在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于第一版本信息和第二版本信息确定是否进行资源文件的下载,在确定出对资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。本方案通过动态加载的方式,分别进行基础资源包和线上资源包的下载,其中,线上资源包基于按需加载的方式,显著降低了用户游戏过程中,资源数据的下载时长,解决了用户开始游戏时,需要长时间等待游戏资源数据的下载而带来的等待时长较长,游戏体验不够快捷流畅的问题,能够实现用户快速的开启游戏。
56.图2为本技术实施例提供的另一种资源数据下载方法的流程图,给出了基础资源包和线上资源包划分的过程,如图2所示,具体包括:
57.步骤s201、将原始游戏安装包中的资源划分为基础资源包以及线上资源包,将所述基础资源包部署至第一服务器,将所述线上资源包部署至第二服务器,所述基础资源包的大小小于所述线上资源包的大小。
58.在一个实施例中,预先对原始游戏安装包进行基础资源包以及线上资源包的划分,将基础资源包部署至第一服务器,将线上资源包部署至第二服务器。可选的,可通过设置的脚本程序进行划分。示例性的,通过设置的image模块以及io库从原始游戏安装包中提
取得到线上资源包,并进行资源合并、图集整理、无损压缩以及资源混淆处理。其中,该image模块可以是python的pillow库中提供的模块,通过image模块以及io库将原始游戏安装包中的线上资源部分进行提取,以部署至第二服务器。
59.在一个实施例中,在进行线上资源包的部署时,通过svn版本命令行代码进行线上资源包的资源版号分析,并进行资源打包以及补丁生成后,发布部署至第二服务器。通过svn版本命令行的方式,如svn up、revison等命令实现线上资源的一键部署。
60.在一个实施例中,在进行基础资源包和线上资源包的部署时,还包括对文件的加密的过程。可选的,通过xxtea加密方式对所述基础资源包进行加密后部署至第一服务器,其中,加密密钥和对应的标识写入至所述基础资源包中的底层代码中。其中,tea算法是tiny encryption algorithm的缩写,以加密解密速度快,实现简单著称。tea算法每一次可以操作64bit(8byte),采用128bit(16byte)作为key,算法采用迭代的形式,推荐的迭代轮数是64轮,最少32轮。为解决tea算法密钥表攻击的问题,tea算法先后经历了几次改进,从xtea到block tea,直至最新的xxtea。xtea也称做tean,它使用与tea相同的简单运算,但四个子密钥采取不正规的方式进行混合以阻止密钥表攻击。block tea算法可以对32位的任意整数倍长度的变量块进行加解密的操作,该算法将xtea轮循函数依次应用于块中的每个字,并且将它附加于被应用字的邻字。xxtea使用跟block tea相似的结构,但在处理块中每个字时利用了相邻字,且用拥有两个输入量的mx函数代替了xtea轮循函数。其中,在加密过程中加密密钥和对应的标识写入至所述基础资源包中的底层代码中,由此进一步保证数据的安全性。
61.步骤s202、在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息。
62.步骤s203、在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载。
63.步骤s204、在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。
64.由上述可知,在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息,在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于第一版本信息和第二版本信息确定是否进行资源文件的下载,在确定出对资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。本方案通过动态加载的方式,分别进行基础资源包和线上资源包的下载,其中,线上资源包基于按需加载的方式,显著降低了用户游戏过程中,资源数据的下载时长,解决了用户开始游戏时,需要长时间等待游戏资源数据的下载而带来的等待时长较长,游戏体验不够快捷流畅的问题,能够实现用户快速的开启游戏。
65.图3为本技术实施例提供的另一种资源数据下载的流程图,给出了一种具体的下载过程中的并行处理逻辑的流程,如图3所示,具体包括:
66.步骤s301、在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息。
67.步骤s302、在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要
加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载。
68.步骤s303、在确定出对所述资源文件进行下载的情况下,通过基于cocos2dx引擎以及lua脚本实现的资源下载与资源加载并行处理的逻辑从第三服务器中获取对应的线上资源包进行加载。
69.在一个实施例中,通过cocos2dx引擎以及lua脚本实现的资源下载与资源加载并行处理的逻辑。可选的,通过调用lua脚本中设置的api函数,以及cocos2dx引擎中维护的堆栈进行cocos2dx引擎与lua脚本的数据交互,以实现资源下载与资源加载的解耦,由此实现下载过程和数据加载过程的并行执行。其中,lua脚本中设置的api函数可以包括如下:
70.int lual_dofile(lua_state*l,const char*filename):加载并运行指定文件,没有错误返回0。void lua_settop(lua_state*l,int index):参数允许传入任何可接受的索引以及0,其将堆栈的栈顶设为该索引,如果新的栈顶比原来的大,超出部分的新元素将被填为nil,如果index为0,把栈上所有元素移除。void lua_getglobal(lua_state*l,const char*name):把全局变量name里的值压入堆栈;void lua_pop(lua_state*l,int n):从堆栈中弹出n个元素,相当于清除。void lua_pustring(lua_state*l,const char*s):把指针s指向的以零结尾的字符串压栈,lua对这个字符串做一次内存拷贝(或是复用一个拷贝),因此s处的内存在函数返回后,可以释放掉或是重用于其它用途,字符串中不能包含有零字符,第一个碰到的零字符会认为是字符串的结束。
71.其中,基于上述的lua api以及引擎c++层维护一个luastack堆栈,需要交互的数据通过入栈,出栈操作来传递数据,之后再通过luaengine取得当前luastack,将c++按照lua c api指定的格式绑定完代码,然后再lua端通过绑定代码,即可访问c++下的类及方法,从而达到实现两者间的交互。通过上述设置,实现了资源渲染逻辑以及下载进程分离不影响游戏体验、性能,动态资源的补丁版本覆盖下载等。例如游戏内,当玩家去打一只怪物时,当前怪物的模型资源没有下载,发起资源文件下载请求时,不影响怪物动作表现的展示播放逻辑,如它的攻击动画所占的帧时间、当前的动作、方向,要实现与下载进程并行并且不影响游戏的操作体验。
72.由上述可知,在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息,在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于第一版本信息和第二版本信息确定是否进行资源文件的下载,在确定出对资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。本方案通过动态加载的方式,分别进行基础资源包和线上资源包的下载,其中,线上资源包基于按需加载的方式,显著降低了用户游戏过程中,资源数据的下载时长,解决了用户开始游戏时,需要长时间等待游戏资源数据的下载而带来的等待时长较长,游戏体验不够快捷流畅的问题,能够实现用户快速的开启游戏。
73.图4为本技术实施例提供的另一种资源数据下载的流程图,如图4所示,具体包括:
74.步骤s401、在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息。
75.步骤s402、在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件
的下载。
76.步骤s403、在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑以及下载模块,以从第三服务器中获取对应的线上资源包进行加载,所述下载模块基于curl封装成的assetsdownloader库生成。
77.在一个实施例中,通过设置的下载模块实现线上资源包的加载,该下载模块基于curl封装成的assetsdownloader库生成。可选的,下载模块的生成过程,包括:创建下载请求队列容器和下载后处理容器,分别用于进行下载请求控制以及资源下载后的控制处理;创建assetsdownloader,以执行下载过程的启动以及下载结果监听,并将下载后的资源数据添加至所述下载后处理容器。其中,cocos2dx引擎中的http网络连接部分主要使用curl开源库,curl是一个跨平台的库,能广泛运用于windows、android、ios等平台的网络传输,它可以模拟浏览器请求,模拟表单数据,上传下载,支持ftp和https。可选的,将curl封装成assetsdownloader库,实现模块多线程、异步下载、断点续存。同时,基于当前设备硬件性能,合理的动态分配下载进程数,确保用户在玩游戏过程中,即能达到快速的美术资源下载显示,又能享受流畅的游戏体验。其中,assetsdownloader继承自引擎框架的downloader类,downloader中引用第三方库curl,在类空间内,通过平台识别码引入不同平台下的下载基础模块实现跨平台下载接口,整个下载模块实现过程示例性的如下:
78.创建两个deque队列的基础容器,分别为下载请求队列容器和下载后处理容器,示例性的记作:deque《taskwrapper》_requestqueue和deque《taskwrapper》_finishedqueue,分别处理下载请求队列控制以及下载后处理控制;逻辑层获取下载资源连接,创建assetsdownloader,执行createdownloaddatatask,即为其执行_threadproc调用,启动下载过程、结果监听;将下载好后的数据添加到_finishedqueue,上层定时器循环调用获取_finishedqueue的内容,如果内容不为空,将下载好的.tmp文件rename成正常文件,存储到预定的本地文件目录;执行ontaskfinish函数,判断成功与否,执行onsuccess/onerror回调函数,通知上层lua代码执行逻辑;下载进程数控制,严格把控同时进行的下载进程数数量,针对不同机型获取机型的各种性能参数,如cpu核数、显卡、内存等,对性能的总体评估得到性能参数,动态分配下载进程数c++与lua交互:绑定c++的assetsdownloader类,通过tolua生成桥接类,提供接口到逻辑层lua脚本调用。
79.由上述可知,在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息,在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于第一版本信息和第二版本信息确定是否进行资源文件的下载,在确定出对资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。本方案通过动态加载的方式,分别进行基础资源包和线上资源包的下载,其中,线上资源包基于按需加载的方式,显著降低了用户游戏过程中,资源数据的下载时长,解决了用户开始游戏时,需要长时间等待游戏资源数据的下载而带来的等待时长较长,游戏体验不够快捷流畅的问题,能够实现用户快速的开启游戏。
80.图5为本技术实施例提供的一种资源数据下载装置的结构框图,如图5所示,该装置用于执行上述实施例提供的资源数据下载方法,具备执行方法相应的功能模块和有益效果。如图5所示,该装置具体包括:第一下载模块101、下载判断模块102和第二下载模块103,其中,
81.第一下载模块101,配置为在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息;
82.下载判断模块102,配置为在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载;
83.第二下载模块103,配置为在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。
84.由上述可知,在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息,在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于第一版本信息和第二版本信息确定是否进行资源文件的下载,在确定出对资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。本方案通过动态加载的方式,分别进行基础资源包和线上资源包的下载,其中,线上资源包基于按需加载的方式,显著降低了用户游戏过程中,资源数据的下载时长,解决了用户开始游戏时,需要长时间等待游戏资源数据的下载而带来的等待时长较长,游戏体验不够快捷流畅的问题,能够实现用户快速的开启游戏。
85.在一个可能的实施例中,该装置还包括部署模块,配置为:
86.在所述游戏资源下载之前,将原始游戏安装包中的资源划分为基础资源包以及线上资源包;
87.将所述基础资源包部署至第一服务器,将所述线上资源包部署至第二服务器,所述基础资源包的大小小于所述线上资源包的大小。
88.在一个可能的实施例中,所述部署模块,具体配置为:
89.通过设置的image模块以及io库从原始游戏安装包中提取得到线上资源包,并进行资源合并、图集整理、无损压缩以及资源混淆处理。
90.在一个可能的实施例中,所述部署模块,具体配置为:
91.通过svn版本命令行代码进行线上资源包的资源版号分析,并进行资源打包以及补丁生成后,发布部署至第二服务器。
92.在一个可能的实施例中,所述部署模块,具体配置为:
93.通过xxtea加密方式对所述基础资源包进行加密后部署至第一服务器,其中,加密密钥和对应的标识写入至所述基础资源包中的底层代码中。
94.在一个可能的实施例中,所述第二下载模块,配置为:
95.基于cocos2dx引擎以及lua脚本实现的资源下载与资源加载并行处理的逻辑。
96.在一个可能的实施例中,所述第二下载模块,配置为:
97.通过调用lua脚本中设置的api函数,以及cocos2dx引擎中维护的堆栈进行cocos2dx引擎与lua脚本的数据交互,以实现资源下载与资源加载的解耦。
98.在一个可能的实施例中,所述第二下载模块,配置为:
99.通过设置的并行处理逻辑以及下载模块,以从第三服务器中获取对应的线上资源包进行加载,所述下载模块基于curl封装成的assetsdownloader库生成。
100.在一个可能的实施例中,所述第二下载模块,配置为:
101.创建下载请求队列容器和下载后处理容器,分别用于进行下载请求控制以及资源
下载后的控制处理;
102.创建assetsdownloader,以执行下载过程的启动以及下载结果监听,并将下载后的资源数据添加至所述下载后处理容器。
103.图6为本技术实施例提供的一种电子设备的结构示意图,如图6所示,该设备包括处理器201、存储器202、输入装置203和输出装置204;设备中处理器201的数量可以是一个或多个,图6中以一个处理器201为例;设备中的处理器201、存储器202、输入装置203和输出装置204可以通过总线或其他方式连接,图6中以通过总线连接为例。存储器202作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本技术实施例中的资源数据下载方法对应的程序指令/模块。处理器201通过运行存储在存储器202中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的资源数据下载方法。输入装置703可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置204可包括显示屏等显示设备。
104.本技术实施例还提供一种包含计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种上述实施例描述的资源数据下载方法,其中,包括:
105.在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息;
106.在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载;
107.在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。
108.值得注意的是,上述资源数据下载装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本技术实施例的保护范围。
109.在一些可能的实施方式中,本技术提供的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本技术各种示例性实施方式的方法中的步骤,例如,所述计算机设备可以执行本技术实施例所记载的资源数据下载方法。所述程序产品可以采用一个或多个可读介质的任意组合实现。
技术特征:
1.资源数据下载方法,其特征在于,包括:在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息;在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载;在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。2.根据权利要求1所述的资源数据下载方法,其特征在于,在所述游戏资源下载之前,还包括:将原始游戏安装包中的资源划分为基础资源包以及线上资源包;将所述基础资源包部署至第一服务器,将所述线上资源包部署至第二服务器,所述基础资源包的大小小于所述线上资源包的大小。3.根据权利要求2所述的资源数据下载方法,其特征在于,所述将原始游戏安装包中的资源划分为基础资源包以及线上资源包,包括:通过设置的image模块以及io库从原始游戏安装包中提取得到线上资源包,并进行资源合并、图集整理、无损压缩以及资源混淆处理。4.根据权利要求2所述的资源数据下载方法,其特征在于,所述将所述线上资源包部署至第二服务器,包括:通过svn版本命令行代码进行线上资源包的资源版号分析,并进行资源打包以及补丁生成后,发布部署至第二服务器。5.根据权利要求2所述的资源数据下载方法,其特征在于,所述将所述基础资源包部署至第一服务器,包括:通过xxtea加密方式对所述基础资源包进行加密后部署至第一服务器,其中,加密密钥和对应的标识写入至所述基础资源包中的底层代码中。6.根据权利要求1所述的资源数据下载方法,其特征在于,所述并行处理逻辑,包括:基于cocos2dx引擎以及lua脚本实现的资源下载与资源加载并行处理的逻辑。7.根据权利要求6所述的资源数据下载方法,其特征在于,所述基于cocos2dx引擎以及lua脚本实现的资源下载与资源加载并行处理的逻辑,包括:通过调用lua脚本中设置的api函数,以及cocos2dx引擎中维护的堆栈进行cocos2dx引擎与lua脚本的数据交互,以实现资源下载与资源加载的解耦。8.根据权利要求1所述的资源数据下载方法,其特征在于,所述通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载,包括:通过设置的并行处理逻辑以及下载模块,以从第三服务器中获取对应的线上资源包进行加载,所述下载模块基于curl封装成的assetsdownloader库生成。9.根据权利要求8所述的资源数据下载方法,其特征在于,所述下载模块的生成过程,包括:创建下载请求队列容器和下载后处理容器,分别用于进行下载请求控制以及资源下载后的控制处理;创建assetsdownloader,以执行下载过程的启动以及下载结果监听,并将下载后的资
源数据添加至所述下载后处理容器。10.资源数据下载装置,其特征在于,包括:第一下载模块,配置为在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息;下载判断模块,配置为在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载;第二下载模块,配置为在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。11.一种电子设备,所述设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现权利要求1-8中任一项所述的资源数据下载方法。12.一种存储计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行权利要求1-8中任一项所述的资源数据下载方法。
技术总结
本申请实施例提供了一种资源数据下载方法、装置、设备及存储介质,该方法包括:在游戏资源下载过程中,从第一服务器中获取基础资源包,并记录所述基础资源包对应的第一版本信息;在游戏进行过程中,从第二服务器中获取第二版本信息,在检测到需要加载资源文件时,基于所述第一版本信息和所述第二版本信息确定是否进行所述资源文件的下载;在确定出对所述资源文件进行下载的情况下,通过设置的并行处理逻辑从第三服务器中获取对应的线上资源包进行加载。本方案解决了用户开始游戏时,需要长时间等待游戏资源数据的下载而带来的等待时长较长,游戏体验不够快捷流畅的问题,能够实现用户快速的开启游戏。实现用户快速的开启游戏。实现用户快速的开启游戏。
技术研发人员:黄泽柯 谢安
受保护的技术使用者:广州三七极梦网络技术有限公司
技术研发日:2023.06.28
技术公布日:2023/9/9
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/