一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在微端中处理信息资源的方法、装置、电子设备及存储介质与流程

2021-09-15 02:25:00 来源:中国专利 TAG:
1.本公开涉及计算机领域,具体而言,涉及一种在微端中处理信息资源的方法、电子设备及存储介质。
背景技术
::2.随着技术的进步,人们对于游戏品质的要求越来越高,这就要求游戏内容需要更加丰富以及游戏画面需要更加细腻,然而带来的结果就是游戏容量的不断增大。现在市面上的大型游戏的容量一般已经超过10gb,甚至有的已经突破100gb。游戏容量的继续扩大是必然趋势,这对玩家的硬盘空间提出较高的要求。一方面,游戏容量比较大不仅占用硬盘资源比较多,同时还会导致下载更新比较慢,很有可能由于下载更新过程等待时间过长而导致玩家流失。另一方面,某些高品质的游戏可能会导致玩家的低配置设备运行起来出现卡顿,影响游戏体验。3.由此看来,容量大小和下载更新体验一般是负相关的:容量越大,下载更新体验越差,反之亦然。而容量大小和游戏品质一般是正相关的:包体越大,游戏品质越高,反之亦然。4.因此,如何能权衡好包体大小、下载更新体验、游戏品质三者之间的关系,成为本领域技术人员亟待解决的技术问题。技术实现要素:5.本案申请人在长期的研发过程中发现,相关技术中的方案存在以下不足:现在很多游戏分高清和低清两个版本,低清版本包体较小,优化玩家下载体验,使得玩家能快速体验游戏,同时对硬盘空间稍小或配置稍低的玩家更加友好。从低清到高清版本的升级是通过下载高清版完整包或者下载附加高清包完成,且必须关闭游戏,等待所有高清包下载完成才能体验。然而,高清包必须安装在游戏初始版本(例如,可独立运行的低清版本)的同一目录下,无法对高清包和低清包进行分盘存储,导致对磁盘空间的要求较高。而且,在低清版与高清版之间切换的通道是缺失的,导致玩家在性能和画质之间无法无缝切换。6.鉴于此,本公开提供了一种在微端中处理信息资源的方法、装置、电子设备及存储介质。7.根据本公开的一个方面,提供了一种在微端中处理信息资源的方法,该方法包括:接收来自游戏客户端的资源请求,其中所述游戏客户端运行的游戏的初始版本是低分辨率版本,所述低分辨率版本的低分辨率资源被存储在所述游戏客户端中,以及所述游戏的高分辨率资源被存储在微端数据库或微端服务器中,所述高分辨率资源包含一个或多个高分辨率资源文件;响应于所述资源请求,检测在内存资源池中是否存在所述资源请求所针对的高分辨率资源文件,其中所述内存资源池供一个或多个游戏客户端与所述微端共同使用:如果不存在,则将所述微端数据库或所述微端服务器中存储的所述高分辨率资源文件写入内存资源池;如果存在,则将所述高分辨率资源文件的信息返回给游戏客户端,以便所述游戏客户端从所述内存资源池中加载所述高分辨率资源文件。8.在本公开的一种示例性实施例中,所述方法还包括:接收来自游戏客户端的释放请求;响应于所述释放请求,清除所述内存资源池中的高分辨率资源,使所述游戏客户端仅加载所述低分辨率资源。9.在本公开的一种示例性实施例中,所述方法还包括:如果检测到所述微端数据库中不存在所述资源请求所针对的高分辨率资源文件或者高分辨率资源文件需要更新,则从微端服务器下载所述高分辨率资源文件以写入所述内存资源池并存储在所述微端数据库中。10.在本公开的一种示例性实施例中,所述方法还包括:对所述微端数据库中未被使用时长达到阈值的高分辨率资源进行清理。11.在本公开的一种示例性实施例中,接收来自游戏客户端的资源请求包含:读取请求列表,其中所述请求列表由所述游戏客户端将针对高分辨率资源文件的资源请求写入。12.在本公开的一种示例性实施例中,所述内存资源池以页为单位配置,其中,将高分辨率资源文件写入内存资源池包含:使所述内存资源池的第一页配置有高分辨率资源文件的索引信息,并且使所述内存资源池的第一页的剩余空间以及后续页配置有高分辨率资源文件的文件内容。13.在本公开的一种示例性实施例中,所述索引信息包括高分辨资源文件的唯一识别号uid、文件内容大小和文件内容位置。14.在本公开的一种示例性实施例中,所述高分辨率资源文件的文件内容被分成一个或多个分块,其中所述索引信息中的文件内容位置指示与每个分块对应的页序号、偏移量、长度。15.在本公开的一种示例性实施例中,将所述高分辨率资源文件的信息返回给游戏客户端包含:将所述高分辨率资源文件的索引信息按照序号写入回复列表,其中所述回复列表由所述游戏客户端读取。16.在本公开的一种示例性实施例中,响应于所述释放请求,清除内存资源池中的高分辨率资源包含:响应于所述资源请求,设置与所述高分辨率资源对应的引用计数并使所述引用计数递增;读取释放列表,使所述引用计数递减,其中所述释放列表由所述游戏客户端将所述释放请求写入;响应于所述引用计数等于0,清空内存资源池中的高分辨率资源。17.在本公开的一种示例性实施例中,响应于所述释放请求,清空内存资源池中的高分辨率资源包含:读取释放列表,其中所述释放列表由所述游戏客户端将所述释放请求写入;清除内存资源池中所述释放请求所针对的高分辨率资源文件。18.在本公开的一种示例性实施例中,高分辨率资源文件以外部索引文件和外部打包文件的形式存储在所述微端服务器中,其中所述外部索引文件包括一个或多个高分辨率资源文件的名称和文件入口序列,所述文件入口序列包括高分辨率资源文件的uid和md5值,并且所述外部打包文件包括一个或多个文件内容。19.在本公开的一种示例性实施例中,高分辨率资源文件以本地索引文件和本地打包文件的形式存储在所述微端数据库中,其中所述本地索引文件包括打包文件索引表和uid到本地打包文件的映射信息,所述打包文件索引表包括高分辨率资源文件的uid和md5值,并且所述本地打包文件包括打包文件索引表地址和一个或多个文件内容。20.在本公开的一种示例性实施例中,检测所述微端数据库中是否存在所述资源请求所针对的高分辨率资源文件包含:检测所述微端数据库中的本地索引文件是否含有所述资源请求所针对的高分辨率资源文件的uid。21.在本公开的一种示例性实施例中,检测所述微端数据库中的高分辨率资源文件是否需要更新包含:比较所述高分辨率资源文件在所述微端数据库中的md5值与在所述微端服务器中的md5值,如果不一样,则判断需要更新。22.在本公开的一种示例性实施例中,将高分辨率资源文件存储在所述微端数据库包含:根据高分辨率资源文件的uid在所述本地索引文件中配置uid到本地打包文件的映射信息,其中所述uid到本地打包文件的映射信息指示与所述uid对应的本地打包文件以及处于所述本地打包文件中的打包文件索引表地址;根据所述打包文件索引表地址在所述本地打包文件的相应位置存储高分辨率资源文件的文件内容。23.在本公开的一种示例性实施例中,对所述微端数据库中未被使用时长达到阈值的高分辨率资源进行清理包含:检查所述微端数据库中的每个高分辨率资源文件未被使用的时长,如果未被使用的时长超过所述阈值,则删除相应的高分辨率资源文件,其中被删除的高分辨率资源文件在所述微端数据库中的本地打包文件中的对应位置形成空闲空间;将所述空闲空间下方的文件对所述空闲空间进行向上填补,从而缩小所述本地打包文件的大小。24.在本公开的一种示例性实施例中,所述微端独立于所述游戏客户端运行。25.在本公开的一种示例性实施例中,所述微端支持与多个游戏客户端并行运行。26.在本公开的一种示例性实施例中,所述微端数据库与所述游戏的低分辨率版本的存储位置不同。27.根据本公开的一个方面,提供了一种在微端中处理信息资源的装置,该装置包括:接收模块,用于接收来自游戏客户端的资源请求,其中所述游戏客户端运行的游戏的初始版本是低分辨率版本,所述低分辨率版本的低分辨率资源被存储在所述游戏客户端中,以及所述游戏的高分辨率资源被存储在微端数据库或微端服务器中,并且所述高分辨率资源包含一个或多个高分辨率资源文件;检测模块,用于响应于所述资源请求,检测在内存资源池中是否存在所述资源请求所针对的高分辨率资源文件,其中所述内存资源池供一个或多个游戏客户端与所述微端共同使用;写入模块,用于如果所述内存资源池中不存在所述高分辨率资源文件,则将所述微端数据库或所述微端服务器中存储的所述高分辨率资源文件写入内存资源池;返回模块,用于如果所述内存资源池中存在所述高分辨率资源文件,则将所述高分辨率资源文件的信息返回给游戏客户端,以便所述游戏客户端从所述内存资源池中加载所述高分辨率资源文件。28.在本公开的一种示例性实施例中,所述装置还包括:接收模块,还用于接收来自游戏客户端的释放请求;清除模块,用于响应于释放请求,清除所述内存资源池中的高分辨率资源,使所述游戏客户端仅加载所述低分辨率资源,其中接收模块还用于接收来自游戏客户端的释放请求。29.在本公开的一种示例性实施例中,所述装置还包括:下载模块,用于如果检测到所述微端数据库中不存在所述资源请求所针对的高分辨率资源文件或者高分辨率资源文件需要更新,则从微端服务器下载所述高分辨率资源文件以写入所述内存资源池并存储在所述微端数据库中。30.在本公开的一种示例性实施例中,所述装置还包括:清理模块,用于对所述微端数据库中未被使用时长达到阈值的高分辨率资源进行清理。31.根据本公开的另外一个方面,提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行以上任一项的在微端中处理信息资源的方法。32.根据本公开的另外一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上任一项的在微端中处理信息资源的方法。33.在本公开至少一个实施例中所公开的一种在微端中处理信息资源的方法,通过接收来自游戏客户端的资源请求,其中游戏客户端运行的游戏的初始版本是低分辨率版本并且低分辨率版本的低分辨率资源被存储在游戏客户端中,以及游戏的高分辨率资源被存储在微端数据库或微端服务器中,高分辨率资源包含一个或多个高分辨率资源文件;响应于资源请求,检测在内存资源池中是否存在资源请求所针对的高分辨率资源文件,其中内存资源池供一个或多个游戏客户端与微端共同使用:如果不存在,则将微端数据库或微端服务器中存储的高分辨率资源文件写入内存资源池;如果存在,则将高分辨率资源文件的信息返回给游戏客户端,以便游戏客户端从内存资源池中加载高分辨率资源文件,从而至少解决了上述关于现有技术的部分缺陷。34.应当理解的是,以上的一般描述和下文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明35.此处所说明的附图用来提供对本公开的进一步理解,构成本技术的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:36.图1示意性示出本公开示例性实施例中的在微端中处理信息资源的方法流程图;37.图2示意性示出本公开示例性实施例中的在微端中处理信息资源的进一步方法流程图;38.图3为本公开示例性实施例提供的微端与游戏客户端进行通信的框架图;39.图4为本公开示例性实施例提供的内存资源池结构图;40.图5为本公开示例性实施例提供的微端进程运行图;41.图6为本公开示例性实施例提供的微端服务器文件结构示意图;42.图7a和7b为本公开示例性实施例提供的微端数据库文件结构示意图及其存取过程示意图;43.图8为本公开示例性实施例提供的微端数据库整理过程的示意图;44.图9示意性示出本公开示例性实施例中的在微端中处理信息资源的装置的框图;45.图10示意性示出本公开示例性实施例中一种电子设备的结构示意图;46.图11示意性示出本公开示例性实施例中一种程序产品。具体实施方式47.现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。48.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别类似的对象,而不必用于描述特定的对象、特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里示出或描述的那些以外的顺序实施。此外,术语“包括”、“包含”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。49.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其他的方法、组元、材料、装置、步骤等。在其他情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免使本公开的各方面晦涩难懂。50.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。51.首先对本公开涉及的若干术语进行解释:52.uid:uniqueidentity,唯一识别号。53.ringbuffer:循环缓冲区,用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。54.fetable:fileentrytable,文件入口表。55.page:页,对内存进行分页存储。56.md5:一种被广泛使用的密码散列函数,用于确保信息传输完整一致。57.gif:globalindexfile,全局索引文件。58.mef:microendfile,微端打包文件。59.下面参考图1,图1示意性示出本公开示例性实施例中的在微端中处理信息资源的方法流程图。60.根据本公开其中一实施例,提供了一种在微端中处理信息资源的方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。61.根据本公开一个或多个实施例的在微端中处理信息资源的方法,该方法可以包括如下步骤,如图1所示:62.步骤s110,接收来自游戏客户端的资源请求;其中,游戏客户端运行的游戏的初始版本是低分辨率版本,低分辨率版本的低分辨率资源被存储在游戏客户端中,以及游戏的高分辨率资源被存储在微端数据库或微端服务器中,高分辨率资源包含一个或多个高分辨率资源文件。63.步骤s120,响应于资源请求,检测在内存资源池中是否存在资源请求所针对的高分辨率资源文件;其中,内存资源池供一个或多个游戏客户端与微端共同使用。64.步骤s130,如果内存资源池中不存在该高分辨率资源文件,则将微端数据库或微端服务器中存储的高分辨率资源文件写入内存资源池。65.步骤s140,如果内存资源池中存在该高分辨率资源文件,则将高分辨率资源文件的信息返回给游戏客户端,以便游戏客户端从内存资源池中加载高分辨率资源文件。66.根据本示例性实施例的在微端中处理信息资源的方法,至少解决游戏的高分辨率资源和低分辨率资源无法分盘存储的问题,以及如何使游戏从低分辨率版本实时无感知地切换到高分辨率版本的问题。67.在可选的实施例中,参考图2,图2示意性示出本公开示例性实施例中的在微端中处理信息资源的进一步方法流程图。根据本公开一个或多个实施例的在微端中处理信息资源的方法还包括以下步骤:68.步骤s150,接收来自游戏客户端的释放请求;响应于释放请求,清除内存资源池中的高分辨率资源,使游戏客户端仅加载低分辨率资源。69.根据本示例性实施例的在微端中处理信息资源的进一步方法,至少解决游戏在低分辨率版和高分辨率版之间无法无缝切换的问题。70.在可选的实施例例中,上述方法包括步骤s160,如果检测到微端数据库中不存在资源请求所针对的高分辨率资源文件或者高分辨率资源文件需要更新,则从微端服务器下载所分辨率资源文件以写入内存资源池并存储在微端数据库中。71.在可选的实施例例中,上述方法包括步骤s170,对微端数据库中未被使用时长达到阈值的高分辨率资源进行清理。72.为了更好理解本公开的在微端中处理信息资源的方法,先对本公开实施例使用的微端进行说明。微端是一种微型客户端,可以用于处理游戏资源,通过与游戏客户端的对接来帮助游戏客户端加载和/或释放游戏资源。在本公开一个或多个实施例中,微端与游戏客户端独立运行,即使微端出现程序问题也不会对游戏运行产生影响。在本公开的一个或多个实施例中,一个微端可以同时服务一个游戏的多个游戏进程和/或多个游戏,以满足游戏多开需求。微端可以支持与多个游戏客户端并行运行。在本公开的一个或多个实施例中,微端可以是在用户终端运行的独立客户端,也可以是嵌入在游戏客户端中运行。73.在微端的用户交互中,用户可以选择存储游戏的高分辨率资源的存储目录,该存储目录可以与游戏的低分辨率版本的低分辨率资源存储的位置不同。例如,低分辨率资源和高分辨率资源可以存储在同一硬盘的不同分区,也可以存储在不同的硬盘中,例如,低分辨率资源可以存储在固态硬盘中,高分辨率资源可以存储在机械硬盘中。在启用高分辨率资源之前,游戏实际运行的版本是低分辨率版本,而这些高分辨率资源可以被分类成一个或多个高分辨率资源文件(例如,主角人物高清包、非主角人物高清包、场景人文高清包、场景自然高清包、和其他高清资源包)供用户选择和应用。当启用高分辨率资源之后,相应被勾选的高分辨率资源文件可以在游戏运行过程中被游戏客户端加载。例如,在仅勾选“主角人物高清包”的情况下,当游戏画面出现主角人物需要渲染时,游戏客户端将找到并加载该主角人物的高分辨率资源文件,如果没有找到则进行资源下载并在下载完毕之后自动加载实时渲染。在禁用高分辨率资源或者关闭微端之后,游戏客户端可以在当前没有高分辨率资源可供记载的情况下使游戏恢复回低分辨率版本继续运行。另外,微端与游戏客户端之间的对接是通过内存资源池完成的,该内存资源池的内存限制大小也可以在微端的用户界面进行设置。74.下面,将对本示例性实施例中在微端中处理信息资源的方法的各步骤作进一步地说明。图3为本公开示例性实施例提供的微端与游戏客户端进行通信的框架图。75.如图3所示,微端301中的微端进程与游戏客户端302中的一个或多个游戏进程(例如,游戏进程1和游戏进程2)可以经由共享内存(例如,内存资源池303)针对高分辨率资源进行通信对接。当游戏进程实时需要使用的高分辨率资源时,可以将其写入到内存资源池303中以便能够被游戏客户端加载。76.在步骤s110中,针对用户勾选的一个或多个高分辨率资源文件,如果游戏进程1和/或游戏进程2在游戏运行过程遇到需要加载上述高分辨率资源文件以进行实时渲染,则会首先向微端进程发送针对那个(那些)特定高分辨率资源文件的资源请求,以便微端可以接收到资源请求以进行后续操作。然而,在用户没有对高分辨率资源文件进行勾选(即,不需要启动高分辨率资源)的情况下,或者在游戏运行过程中没有遇到需要加载用户所勾选的高分辨率资源文件以进行实时渲染的情况下,微端则不会从游戏客户端接收到针对高分辨率资源文件的资源请求,此时游戏客户端仍保持低分辨率版本继续运行。77.在步骤s120中,当游戏进程请求资源时,会首先检查内存资源池303是否存在所请求的高分辨率资源文件。在本公开的一个或多个实施例中,每个高分辨资源文件都包含一个唯一识别号uid被保存在内存资源池303中,当检查内存资源池303是否存在所请求的高分辨率资源文件,仅需要检查内存资源池303中是否存在该高分辨率资源文件的uid。如果已经存在,则微端进程直接返回该高分辨率资源文件的相关信息给游戏进程;否则,若本地(例如,微端数据库,将在图7阐述)有该高分辨率资源文件则从本地读取并写入到内存资源池303,若本地没有或者该高分辨率资源文件需要更新,则从网络(例如,微端服务器304,将在图6阐述)下载并写入内存资源池303以及存储到本地。需要注意的是,此处的“本地”是指存储了高分辨率资源的微端数据库与游戏的低分辨率版本的本地存储位置不同。在一个示例中,微端数据库可以位于本地计算机的d盘,游戏的低分辨率版本可以被本地存储在计算机的c盘。在另一个示例中,微端数据库可以位于本地计算机的机械硬盘,游戏的低分辨率版本可以被本地地存储在计算机的固态硬盘中。然后,微端进程向游戏进程1和/或游戏进程2回复该特定高分辨率资源文件在内存资源池303中的相关信息(例如,与索引信息相关)以便游戏进程可以根据该相关信息从内存资源池303中读取和加载高分辨率资源。在游戏进程使用完高分辨率资源后,通过向微端进程发送释放命令来释放高分辨率资源。78.需要注意的是,微端与游戏客户端进行通信的框架可以通过服务端和一个或多个终端实现。其中,服务端可以是用于提供信息资源下载的后台服务。服务端可以包括微端服务器、服务器集群或者云平台等。终端可以是在本地运行微端和游戏客户端的智能终端:例如,计算机、智能手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、多媒体播放器、可穿戴设备等等。79.如上所述,多个游戏进程通过共享内存与微端进程进行对接。除内存资源池303之外,共享内存还包括每个游戏进程独立的请求、释放、回复列表:例如,游戏进程1的请求列表305‑1、释放列表306‑1和回复列表307‑1,以及游戏进程2的请求列表305‑2、释放列表306‑2和回复列表307‑2。可选地,每个列表可以使用ringbuffer实现,以便优化存取速度。其中,ringbuffer被称为循环缓冲区,来自linux内核,是为了解决某些特殊情况下的竞争问题而提供得一种免锁的方法。80.在步骤s110‑s150中,接收来自游戏客户端的资源请求包含通过微端进行以下动作:读取请求列表,其中所述请求列表由所述游戏客户端将针对高分辨率资源文件的资源请求写入;将所述高分辨率资源文件的信息返回给游戏客户端包含:将所述高分辨率资源文件的索引信息按照序号写入回复列表,其中所述回复列表由所述游戏客户端读取;响应于所述释放请求,清空内存资源池中的高分辨率资源包含:读取释放列表,其中所述释放列表由所述游戏客户端将所述释放请求写入。可选地,还可以通过其他数据写入格式来实现微端与游戏客户端之间的数据交换。81.在本公开的一个或多个实施例中,游戏进程将资源请求和释放请求分别写入到请求列表和释放列表,微端进程从请求列表中读取资源请求,从本地读取或者从微端服务器下载最新资源,将高分辨率资源文件相关信息写入回复列表,例如,将高分辨率资源文件的索引信息按照序号写入回复列表:第一索引信息的序号为1,第二索引信息为2,如此类推;同时将高分辨率资源文件的文件内容写入内存资源池。待游戏进程用完资源后,将释放请求放入到释放列表,微端进程读取到释放请求,从内存资源池中释放空间。不同的游戏进程可以共享内存共享中相同的资源文件,以便减少内存占用。82.在本公开的一个或多个实施例中,内存资源池303可以以页为单位配置。具体参考图4,图4为本公开示例性实施例提供的内存资源池结构图。其中,内存资源池可以由第一页(page0)到第n页(pagen‑1)组成。83.在步骤s130中,将高分辨率资源文件写入内存资源池包含:使所述内存资源池的第一页配置有高分辨率资源文件的索引信息,并且使所述内存资源池的第一页的剩余空间以及后续页配置有高分辨率资源文件的文件内容。84.具体地,内存资源池有两种结构(如图4中的page0和pagen‑1):page0包含针对各个高分辨率资源文件的文件索引表,后续的页(例如,page1到pagen‑1)只存放各个高分辨率资源文件的文件内容。可选地,将高分辨率资源文件写入内存资源池的方式还可以采用其他数据容器,例如哈希表等。85.在本公开的一个或多个实施例中,所述索引信息包括高分辨资源文件的唯一识别号uid、文件内容大小和文件内容位置。86.具体地,文件索引表为page0中固定分配的空间,例如最多可以支持存放10240个索引。可选地,每个索引结果如图4中的文件索引信息结构,可以被划分成三个部分:uid、文件内容大小(size)以及文件内容位置。87.在本公开的一个或多个实施例中,所述高分辨率资源文件的文件内容被分成一个或多个分块,其中所述索引信息中的文件内容位置指示与每个分块对应的页序号、偏移量、长度。88.具体地,为了提高内存利用率,每个文件内容最多被分割成4块存放。每块对应一个索引:每个分块对应的页序号(page)、在该页中的偏移量(offset)、以及本块的大小(len)。回复列表中的索引即是文件索引表的序号。89.在步骤s140中,游戏进程通过序号找到高分辨率资源文件的索引信息,从而提取对应的高分辨率资源文件的文件内容。可选地,内存资源池的大小随资源请求和资源释放的速度而变化。可选地,当内存资源池的页数不够时,会主动申请一个新页。可选地,当某个页空闲5秒则被主动回收。可选地,玩家可以设置内存资源池的最大大小。90.图5示出了本公开示例性实施例提供的微端进程运行图,微端进程主要包括读取线程501、下载线程502、写入线程503、和释放线程504。91.在本公开的一个或多个实施例中,读取线程501负责从请求列表305‑1取得游戏进程1的资源请求,判断内存资源池303中是否有请求所针对高分辨率资源文件:若有则将其索引信息按序号写入回复列表307‑1,以供游戏进程1根据回复列表307‑1中的索引从内存资源池303中找到该高分辨率资源文件的文件内容;若无则从微端数据库505读取或者向下载线程502发起下载请求。读取线程501读取到对应的高分辨率资源文件后,将其文件内容写到内存资源池303,并将其索引信息按序号写入回复列表307‑1。92.在本公开的一个或多个实施例中,下载线程502负责处理读取线程501发过来的读取请求,然后向微端服务器304发起下载请求(对微端服务器304中的高分辨率资源的下载将在图8进一步阐述),取回高分辨率资源文件,然后将高分辨率资源文件按照文件内容和索引信息分别写入内存资源池303和回复列表307‑1。这里注意的是,如果微端数据库505中存在所请求得高分辨率资源文件而无需从微端服务器304下载,则判断该分辨率资源文件是否要更新。如果不用下载也不用更新,下载线程502会被挂起不工作;如果需要更新的话,下载线程502则从微端服务器304下载最新资源。关于是否需要下载或更新的判断,将在图8进一步阐述。93.在本公开的一个或多个实施例中,写入线程503负责向微端数据库505发起写入请求,将高分辨资源文件保存到微端数据库505(对微端数据库505中的高分辨资源的存取将在图7进一步阐述),或者负责清理微端数据库505(对微端数据库505中的高分辨资源的清理将在图8进一步阐述)。94.在步骤s150中,响应于所述释放请求,清除内存资源池中的高分辨率资源包含:响应于所述资源请求,设置与所述高分辨率资源对应的引用计数并使所述引用计数递增;读取释放列表,使所述引用计数递减,其中所述释放列表由所述游戏客户端将所述释放请求写入;响应于所述引用计数等于0,清空内存资源池中的高分辨率资源。95.在步骤s150中,响应于所述释放请求,清除内存资源池中的高分辨率资源还包含:读取释放列表,其中所述释放列表由所述游戏客户端将所述释放请求写入;清除内存资源池中所述释放请求所针对的高分辨率资源文件。96.在本公开的一个或多个实施例中,释放线程504负责从释放列表306‑1读取来自游戏进程1的释放请求,从而清空内存资源池中的高分辨率资源或者清除内存资源池中释放请求所针对的高分辨率资源文件。97.图6为本公开示例性实施例提供的微端服务器文件结构示意图。具体地,该结构示意图示出了从服务端(即,微端服务器)下载或更新高分辨资源文件的方案。98.在步骤160中,高分辨率资源文件以外部索引文件和外部打包文件的形式存储在所述微端服务器中,其中所述外部索引文件包括一个或多个高分辨率资源文件的名称和文件入口序列,所述文件入口序列包括高分辨率资源文件的uid和md5值,并且所述外部打包文件包括一个或多个文件内容。99.在本公开的一个或多个实施例中,高分辨率资源在微端服务器中以两种形式存储:外部索引文件(例如,图6中示出的服务端索引文件601)和外部打包文件(例如,图6中示出的服务端打包文件602)。微端服务器中存储的高分辨率资源是微端进程的高分辨率文件的来源,为了方便微端判断资源是否需要下载,需要确定高分辨率资源在微端服务器上的位置。在微端服务器中将高分辨率资源分成服务端索引文件601和服务端打包文件602:服务端打包文件602的结构由打包文件1、2、…首尾相接存储;服务端索引文件601的结构包含打包文件名序列和文件入口序列,打包文件名序列预留256个,实际使用个数由实际包名数量指定,文件入口序列的总数为打包文件的总数。每个文件入口603包含每个高分辨率资源文件的uid、包名序号、包中偏移量、文件大小、md5值、高分辨率文件的类型(即,如图所示的高清包类型)及保留位等字段,以用于指示每个高分辨率资源文件在服务端打包文件602中的存储位置等信息。100.在本公开的一个或多个实施例中,包名序号用来确定每个高分辨率资源文件分别在哪个打包文件中,包中偏移用来确定打包文件中的具体位置。需要注意的是,图6中的“包”是微端服务器中存储的外部打包文件(例如,图6中示出的服务端打包文件602)中每个高分辨率资源文件对应的打包文件。101.在步骤160中,检测所述微端数据库中是否存在所述资源请求所针对的高分辨率资源文件包含:检测所述微端数据库中的本地索引文件是否含有所述资源请求所针对的高分辨率资源文件的uid。可选地,102.在本公开的一个或多个实施例中,除了在微端服务器中将高分辨率资源分成外部索引文件和外部打包文件之外,从微端服务器下载到微端数据库中的高分辨率资源也被分成本地索引文件和本地打包文件(将在图7进一步阐述)。可以通过检测本地索引文件是否包含资源请求所针对的高分辨率资源文件的uid来判断微端数据库中是否存在该高分辨率资源文件:若包含,则无需从微端服务器中下载;否则,将根据高分辨率资源文件的uid确定该高分辨率资源文件在微端服务器上的存储位置,从而将其下载并存储到微端数据库中。103.在步骤160中,检测所述微端数据库中的高分辨率资源文件是否需要更新包含:比较所述高分辨率资源文件在所述微端数据库中的md5值与在所述微端服务器中的md5值,如果不一样,则判断需要更新。可选地,检测是否需要更新的方式还可以包括服务器上与本地微端数据库上的文件编号比较、新增更新字段等。104.在本公开的一个或多个实施例中,md5值是可以用来判断本地文件(即,微端数据库中已存储的高分辨率资源文件)是否需要更新以及是否正确。可以通过比较微端数据库中存储的高分辨率资源文件的md5值与微端服务器中相应的高分辨率资源文件的md5值是否一致来判断:如果一致,则无需从微端服务器中下载;否则判断出本地文件已经过时需要更新或者文件不正确,需要从微端服务器中下载最新的高分辨率资源文件。105.图7为本公开示例性实施例提供的微端数据库文件结构示意图及其存取过程示意图。106.图7a示出了微端数据库的文件结构示意图。在步骤160中,高分辨率资源文件以本地索引文件和本地打包文件的形式存储在所述微端数据库中,其中所述本地索引文件包括打包文件索引表和uid到本地打包文件的映射信息,所述打包文件索引表包括高分辨率资源文件的uid和md5值,并且所述本地打包文件包括打包文件索引表地址和一个或多个文件内容。107.在本公开一个或多个实施例中,微端数据库由全局索引文件gif文件701(即,本地索引文件)和多个微端打包文件mef文件702(即,本地打包文件)组成。在本公开的一个或多个实施例中,gif文件701由文件头、256个mef索引表及文件的uid到mef文件的映射信息(即,如图所示的uid2mef索引信息序列)组成。该uid2mef索引信息序列没有上限,新增的文件保持结构相同,并且附加在文件末尾。在本公开的一个或多个实施例中,mef文件702由文件头、16个文件索引表地址、文件索引表及文件内容组成。在一实施例中,每个文件索引表可以最多记录1024个文件,即每个mef文件可以最多只保存1.6w个文件。108.图7b示出了上述图7a中gif文件和mef文件的存取过程示意图。可选地,将高分辨率资源文件存储在所述微端数据库包含:根据高分辨率资源文件的uid在所述本地索引文件中配置uid到本地打包文件的映射信息,其中所述uid到本地打包文件的映射信息指示与所述uid对应的本地打包文件以及处于所述本地打包文件中的打包文件索引表地址;根据所述打包文件索引表地址在所述本地打包文件的相应位置存储高分辨率资源文件的文件内容。109.在本公开一个或多个实施例中,以微端进程从微端数据库中读取uid为uid0的高分辨率资源文件为例,首先从gif文件(即,本地索引文件)中找到uid2mef索引信息(uid0,0),其为uid到本地打包文件的映射信息,表示uid为uid0的高分辨率资源文件的次文件记录在0号mef索引表中记录的位置中。然后从gif文件中读取0号mef索引表,其指示对应的mef文件(即,本地打包文件)名为001。接着读取mef文件001,从该mef文件中查找出包含uid0的文件索引表,根据该文件索引表找到该文件入口,通过文件入口读取文件内容。为了加快查找效率,在一实施例中,可以先进行一个预处理:提取所有文件索引表中的文件入口,做成uid到文件入口的映射关系表。这样一来,只要提供有所请求的高分辨率资源文件的uid,便能直接提取到对应的文件入口。将uid与文件入口一一对应的映射关系表以动态生成的方式存储在共享内存中,在预处理完以后就无需逐一查找gif文件和各个mef文件中的各字段内容了。110.图8为本公开示例性实施例提供的微端数据库整理过程的示意图。此处的整理过程针对的是微端数据库中如图7所示的mef文件(即,本地打包文件)。111.在步骤s170,对所述微端数据库中未被使用时长达到阈值的高分辨率资源进行清理包含:检查所述微端数据库中的每个高分辨率资源文件未被使用的时长,如果未被使用的时长超过所述阈值,则删除相应的高分辨率资源文件,其中被删除的高分辨率资源文件在所述微端数据库中的本地打包文件中的对应位置形成空闲空间;将所述空闲空间下方的文件对所述空闲空间进行向上填补,从而缩小所述本地打包文件的大小。112.在本公开的一个或多个实施例中,微端数据库整理过程包括碎片化删除长期未使用资源、碎片化整理微端数据库文件、支持玩家指定地方存储高分辨率资源。碎片化是指利用微端进程中的线程空闲期间分多次完成一项或多项上述工作。每个高分辨率资源文件在当天第一次被使用时会记录使用时间到数据库,然后在线程空闲期间主动挨个检查微端数据库中的高分辨率资源文件的未被使用天数。当未被使用天数超过指定值时,相应的高分辨率资源文件可被删除。可选地,如果有文件被删除则退出本次检查,等下次空闲时继续。待删除工作完成后,在线程空闲期间挨个检查数据控文件的空闲空间大小,空闲空间较大的数据库文件会形成空洞。如图8所示,对微端数据库中的空洞进行清除以3次为例:第一次,找到最靠前的空洞(如深灰色方块所表示),找到空洞下方的实际字段内容—例如,文件入口(如浅灰色方块所表示的fetable),将文件入口复制到空洞内,回收剩余空间;第二次,重新找到最上面的空洞(如深灰色方块所表示,即,第一步完成后产生的新空洞),找到空洞下的文件x,将文件x上移填补空洞,文件x被分成两块(例如,文件x‑分块1和文件x‑分块2)存储,整理后分块数小于等于原分块数,整理后的空洞在文件x的下方;第三次,找到最上面的空洞,发现空洞在mef文件的末尾,直接缩小文件大小以完成整理。根据本公开的一个或多个实施例,玩家可以选择将高分辨率资源放在任意盘符,随后通过微端选好高分辨率资源文件所在目录,微端就能正确读取高分辨率资源,且关闭游戏客户端和微端后,支持玩家移动高分辨率资源的存储位置。113.在本公开的示例性实施例中,还提供了一种在微端中处理信息资源的装置。参考图9a所示,装置900a可以包括:114.接收模块910,可以用于接收来自游戏客户端的资源请求,其中所述游戏客户端运行的游戏的初始版本是低分辨率版本,所述低分辨率版本的低分辨率资源被存储在所述游戏客户端中,以及所述游戏的高分辨率资源被存储在微端数据库或微端服务器中,并且所述高分辨率资源包含一个或多个高分辨率资源文件。115.检测模块920,可以用于响应于所述资源请求,检测在内存资源池中是否存在所述资源请求所针对的高分辨率资源文件,其中所述内存资源池供一个或多个游戏客户端与所述微端共同使用。116.写入模块930,可以用于如果所述内存资源池中不存在所述高分辨率资源文件,则将所述微端数据库或所述微端服务器中存储的所述高分辨率资源文件写入内存资源池。117.返回模块940,可以用于如果所述内存资源池中存在所述高分辨率资源文件,则将所述高分辨率资源文件的信息返回给游戏客户端,以便所述游戏客户端从所述内存资源池中加载所述高分辨率资源文件。118.可选地,参考图9b所示,装置900b除了上述模块910‑940之外还可以包括:119.清除模块950,可以用于响应于来自游戏客户端的释放请求,清除所述内存资源池中的高分辨率资源,使所述游戏客户端仅加载所述低分辨率资源,其中接收模块还用于接收来自游戏客户端的释放请求。其中,接收模块910还可以用于接收来自游戏客户端的释放请求。120.下载模块960,可以用于如果检测到所述微端数据库中不存在所述资源请求所针对的高分辨率资源文件或者高分辨率资源文件需要更新,则从微端服务器下载所述高分辨率资源文件以写入所述内存资源池并存储在所述微端数据库中。121.清理模块970,可以用于对所述微端数据库中未被使用时长达到阈值的高分辨率资源进行清理。122.应该理解的是,图9a/9b的装置900a/900b仅仅是示例,其中的每个模块的布置顺序以及存在必要性不限于此。例如,某个(某些)模块可以不必要存在,或者某个(某些)模块的功能可以由另一个(另一些)模块代替地实现。123.在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。124.所属
技术领域
:的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。125.下面参照图10来描述根据本公开的这种实施方式的电子设备1000。图10显示的电子设备1000仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。126.如图10所示,电子设备1000以通用计算设备的形式表现。电子设备1000的组件可以包括但不限于:上述至少一个处理单元1010、上述至少一个存储单元1020、连接不同系统组件(包括存储单元1020和处理单元1010)的总线1030、显示单元1040。127.其中,存储单元存储有程序代码,程序代码可以被处理单元1010执行,使得处理单元1010执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元1010可以执行如图1所示的步骤。128.存储单元1020可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)10201和/或高速缓存存储单元10202,还可以进一步包括只读存储单元(rom)10203。129.存储单元1020还可以包括具有一组(至少一个)程序模块10205的程序/实用工具10204,这样的程序模块10205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。130.总线1030可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。131.电子设备1000也可以与一个或多个外部设备1070(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1000交互的设备通信,和/或与使得该电子设备1000能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口1050进行。并且,电子设备1000还可以通过网络适配器1060与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1060通过总线1030与电子设备1000的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1000使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。132.通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd‑rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。133.在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。134.参考图11所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品1100,其可以采用便携式紧凑盘只读存储器(cd‑rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。135.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd‑rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。136.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。137.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。138.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。139.此外,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。140.应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。141.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。142.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜