一种3D游戏资源按需下载的方法及系统与流程

文档序号:31528590发布日期:2022-09-14 15:53阅读:93来源:国知局
一种3D游戏资源按需下载的方法及系统与流程
一种3d游戏资源按需下载的方法及系统
技术领域
1.本发明属于游戏技术应用领域,具体涉及一种3d游戏资源按需下载的方法及系统。


背景技术:

2.随着3d游戏制作水准的不断提升,对美术资源的品质要求越来越高,对游戏场景的复杂度要求越来越高。越复杂的游戏场景对美术资源的需求就越大;美术资源品质越高,模型顶点数量越多,纹理越大。制作一款画面优秀的3d游戏,美术资源量很容易就达到几十gb甚至上百gb。面对如此巨量的游戏资源,在游戏玩家进入游戏世界之前就需要完整下载整个游戏的方式存在很多弊端。尽管以当前网络速度可能在一小时内完成下载,可很多新玩家在没有体验游戏之前是不太愿意去花时间下载这么大的游戏数据的;再有,游戏玩家下载的数据量越大,运营游戏所需的流量费用就越高。游戏研发团队为了解决游戏资源量大带来的问题通常会将游戏资源按照场景打包成独立的资源包,进入游戏时必须的基础数据单独打包。玩家在安装游戏时,只要基础数据包已经下载完成就可以体验游戏,然后在玩家体验游戏的过程中,后台持续进行其他游戏场景资源的下载。但这样存在诸多问题,首先如果是老玩家的话,下载完基础游戏数据后,进入非新手地图就必须在进入地图前等待当前场景所需的资源全部下载完成才能进入;再有后台下载程序会持续下载游戏资源直到整个游戏的资源全部下载完成,最终也将耗费大量的宽带流量,特别是在开服初期,游戏玩家特别多,给下载服务器带来很大压力。为本发明提供一种3d游戏资源按需下载的方法及系统解决在游戏资源数据量很大的情况下,玩家进入游戏体验需耗费大量的宽带下载流量。


技术实现要素:

3.本发明解决的技术问题是:在游戏资源数据量很大的情况下,玩家无需下载大量游戏资源数据就可以进入游戏世界体验游戏,并且玩家没有体验的游戏功能和没有进入的游戏场景的游戏资源不会进行下载,因此大大降低了游戏玩家进入游戏体验的门槛及节省了大量的宽带下载流量,具体方案如下:
4.一种3d游戏资源按需下载的方法,包括以下步骤:
5.s1:在进入游戏前,资源更新包制作模块将游戏新增或变更的游戏资源打包制作成资源更新包,并生成对应的资源索引更新数据更新到本地资源索引数据库,将资源更新包及源索引更新数据上传到cdn下载服务器中;
6.s2:在进入游戏后,资源依赖关系生成模块根据玩家位置生成当前需要加载的资源列表;
7.s3:资源索引管理模块遍历资源依赖关系生成模块生成的资源列表,并根据生成的资源列表查找资源索引数据库是否存在对应的游戏资源更新包,如果不存在对应的游戏资源更新包则从cdn服务器中下载所需资源,如果游戏资源更新包过期则从cdn服务器中下载并生成新的的游戏资源更新包;
8.s4:资源下载模块从cdn服务器中下载本地资源索引数据库中不存在或重新更新的游戏资源后,更新资源索引数据库;
9.s5:资源加载模块加载更新后的资源索引数据库中的游戏资源,并进行渲染,反馈到玩家的当前位置。
10.进一步地,步骤s1具体为:
11.首先,游戏资源更新包制作模块将每一个游戏版本中新增或变更的游戏资源离线打包成一个加密的二进制数据文件,随后游戏资源更新包制作模块遍历二进制数据文件中所有资源,生成一个包含所有资源文件总表的游戏资源更新包;然后遍历所有已经生成的游戏资源更新包,在游戏资源更新包中生成一个资源文件子表;最后从总表中剔除子表中存在且资源没有变化的数据项,得到新增或变更的文件的更新表,并将更新表中列出的资源文件根据需要打包成一个或多个资源包,并对每个资源包提供一个对应的资源列表文件,生成对应的资源索引更新数据,并更新到本地资源索引数据库;将资源更新包及源索引更新数据上传到cdn下载服务器中。
12.进一步地,所述资源列表文件包含所述数据包中资源的文件名称及所在资源包的起始位置和大小。
13.进一步地,步骤2具体为:
14.在进入游戏后,资源依赖关系生成模块根据玩家位置获取游戏中模型材质数据、网格数据、动画数据,与材质数据依赖纹理数据、着色器程序数据,并生成当前需要加载的资源列表。
15.进一步地,步骤s3具体为:
16.资源索引管理模块遍历资源依赖关系生成模块生成的资源列表,并制作资源更新包,制作完资源更新包后,资源索引管理模块将对所有的资源包按版本顺序依次扫描其内的所有资源,并以索引为主键,所在资源包及在资源包中的起始位置和大小存入索引数据库;如果不存在对应的游戏资源更新包则从cdn服务器中下载所需资源,如果游戏资源更新包过期则从cdn服务器中下载并生成新的的游戏资源更新包。
17.进一步地,如果资源索引管理模块索引到更新的资源文件,就将新资源的索引信息更新数据库,每次资源索引数据库有更新时就增加数据库版本号,游戏客户端每次启动时通过检查索引数据库版本是否和服务器端匹配,如果不匹配需要依次对每一个版本进行更新,将对应版本更新的数据更新到本地资源索引数据库。
18.进一步地,步骤s4具体为:
19.当资源索引管理模块通过查询资源索引数据库之后发现本地资源不存在或者已过期,则向cdn服务器请求下载该资源,资源下载模块从cdn服务器下载本地资源数据库中不存在的该游戏资源,并缓存到本地资源数据库,在资源下载完后对其进行哈希校验,如果成功则将缓存中的资源移动到本地数据包中并更新索引数据库。
20.进一步地,步骤s5具体为:
21.资源加载模块根据根据游戏对象自身的资源索引,将需要的资源索引加入加载队列,并将相关联资源加载完成回调函数,如果所需资源在本地不存在则先调用资源下载模块下载资源,本地资源准备就绪后开始后台加载资源本身及其依赖的资源,等到所需资源全部加载完后开始渲染,渲染完成后反馈到玩家的当前位置。
22.本发明提供一种3d游戏资源按需下载的系统,包括资源更新包制作模块、资源依赖关系生成模块、资源索引管理模块、资源下载模块及资源加载模块;
23.所述资源更新包制作模块用于将游戏新增或变更的资源打包制作成资源更新包,并生成对应的资源索引更新数据更新到本地资源索引数据库;及将资源更新包及源索引更新数据上传到cdn下载服务器中;
24.所述资源依赖关系生成模块用于根据玩家位置生成当前需要加载的资源列表;
25.所述资源索引管理模块用于遍历资源依赖关系生成模块生成的资源列表,并根据生成的资源列表查找资源索引数据库是否存在对应的游戏资源更新包,如果不存在对应的游戏资源更新包则从cdn服务器中下载所需资源,如果游戏资源更新包过期则从cdn服务器中下载并生成新的的游戏资源更新包;
26.所述资源下载模块用于从cdn服务器中下载本地资源索引数据库中不存在或重新更新的游戏资源后,更新资源索引数据库;
27.所述资源加载模块用于加载更新后的资源索引数据库中的游戏资源,并进行渲染,反馈到玩家的当前位置。
28.本发明的有益效果是,
29.采用本发明的方法和系统,通过将游戏资源以更新包的方式打包成更新包并生成资源依赖信息和资源索引数据来为客户端提供一种可以按需下载的数据源。其中资源更新包和资源索引数据都以增量的方式来达到最小数据量的下载需求。每个资源都生成所需的依赖资源关系信息,加快资源的下载和加载过程。通过将进入游戏时必须存在的资源和其他可以在需要时再下载的资源分开打包到不同的更新包来达到安装游戏时只需要下载最小的安装包即可以进入游戏。通过为资源创建索引信息并存入到数据库达到在游戏过程中可以快速定位所需资源是否需要下载及需要下载的游戏包和资源所在包位置。通过在游戏过程中根据需要下载游戏资源解决了在进入游戏前就需要下载大量资源的问题,极大降低了玩家进入游戏体验的门槛,同时也节省大量的宽带流量。
附图说明
30.图1为一种3d游戏资源按需下载的方法流程图。
具体实施方式
31.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
32.本发明还提供一种3d游戏资源按需下载的系统,包括资源更新包制作模块、资源依赖关系生成模块、资源索引管理模块、资源下载模块及资源加载模块;
33.资源更新包制作模块用于将游戏新增或变更的资源打包制作成资源更新包,并生成对应的资源索引更新数据更新到本地资源索引数据库;及将资源更新包及源索引更新数据上传到cdn下载服务器中;资源依赖关系生成模块用于根据玩家位置生成当前需要加载的资源列表;
34.资源索引管理模块用于遍历资源依赖关系生成模块生成的资源列表,并根据生成的资源列表查找资源索引数据库是否存在对应的游戏资源更新包,如果不存在对应的游戏
资源更新包则从cdn服务器中下载所需资源,如果游戏资源更新包过期则从cdn服务器中下载并生成新的的游戏资源更新包;
35.资源下载模块用于从cdn服务器中下载本地资源索引数据库中不存在或重新更新的游戏资源后,更新资源索引数据库;
36.资源加载模块用于加载更新后的资源索引数据库中的游戏资源,并进行渲染,反馈到玩家的当前位置。
37.如图1所示,本发明还提供一种3d游戏资源按需下载的方法,包括以下步骤:
38.s1:在进入游戏前,资源更新包制作模块将游戏新增或变更的游戏资源打包制作成资源更新包,并生成对应的资源索引更新数据更新到本地资源索引数据库,将资源更新包及源索引更新数据上传到cdn下载服务器中;
39.s2:在进入游戏后,资源依赖关系生成模块根据玩家位置生成当前需要加载的资源列表;
40.s3:资源索引管理模块遍历资源依赖关系生成模块生成的资源列表,并根据生成的资源列表查找资源索引数据库是否存在对应的游戏资源更新包,如果不存在对应的游戏资源更新包则从cdn服务器中下载所需资源,如果游戏资源更新包过期则从cdn服务器中下载并生成新的的游戏资源更新包;
41.s4:资源下载模块从cdn服务器中下载本地资源索引数据库中不存在或重新更新的游戏资源后,更新资源索引数据库;
42.s5:资源加载模块加载更新后的资源索引数据库中的游戏资源,并进行渲染,反馈到玩家的当前位置。
43.上述中,步骤s1具体为:
44.首先,游戏资源更新包制作模块将每一个游戏版本中新增或变更的游戏资源离线打包成一个加密的二进制数据文件,随后游戏资源更新包制作模块遍历二进制数据文件中所有资源,生成一个包含所有资源文件总表的游戏资源更新包;然后遍历所有已经生成的游戏资源更新包,在游戏资源更新包中生成一个资源文件子表;最后从总表中剔除子表中存在且资源没有变化的数据项,得到新增或变更的文件的更新表,并将更新表中列出的资源文件根据需要打包成一个或多个资源包,并对每个资源包提供一个对应的资源列表文件,生成对应的资源索引更新数据,并更新到本地资源索引数据库;将资源更新包及源索引更新数据上传到cdn下载服务器中。
45.上述中,资源列表文件包含数据包中资源的文件名称及所在资源包的起始位置和大小。
46.上述中,步骤2具体为:
47.在进入游戏后,资源依赖关系生成模块根据玩家位置获取游戏中模型材质数据、网格数据、动画数据,与材质数据依赖纹理数据、着色器程序数据,并生成当前需要加载的资源列表。
48.上述中,步骤s3具体为:
49.资源索引管理模块遍历资源依赖关系生成模块生成的资源列表,并制作资源更新包,制作完资源更新包后,资源索引管理模块将对所有的资源包按版本顺序依次扫描其内的所有资源,并以索引为主键,所在资源包及在资源包中的起始位置和大小存入索引数据
库;如果不存在对应的游戏资源更新包则从cdn服务器中下载所需资源,如果游戏资源更新包过期则从cdn服务器中下载并生成新的的游戏资源更新包。
50.上述中,如果资源索引管理模块索引到更新的资源文件,就将新资源的索引信息更新数据库,每次资源索引数据库有更新时就增加数据库版本号,游戏客户端每次启动时通过检查索引数据库版本是否和服务器端匹配,如果不匹配需要依次对每一个版本进行更新,将对应版本更新的数据更新到本地资源索引数据库。
51.上述中,步骤s4具体为:
52.当资源索引管理模块通过查询资源索引数据库之后发现本地资源不存在或者已过期,则向cdn服务器请求下载该资源,资源下载模块从cdn服务器下载本地资源数据库中不存在的该游戏资源,并缓存到本地资源数据库,在资源下载完后对其进行哈希校验,如果成功则将缓存中的资源移动到本地数据包中并更新索引数据库。
53.上述中,步骤s5具体为:
54.资源加载模块根据根据游戏对象自身的资源索引,将需要的资源索引加入加载队列,并将相关联资源加载完成回调函数,如果所需资源在本地不存在则先调用资源下载模块下载资源,本地资源准备就绪后开始后台加载资源本身及其依赖的资源,等到所需资源全部加载完后开始渲染,渲染完成后反馈到玩家的当前位置。
55.采用本发明的方法和系统,通过将游戏资源以更新包的方式打包成更新包并生成资源依赖信息和资源索引数据来为客户端提供一种可以按需下载的数据源。其中资源更新包和资源索引数据都以增量的方式来达到最小数据量的下载需求。每个资源都生成所需的依赖资源关系信息,加快资源的下载和加载过程。通过将进入游戏时必须存在的资源和其他可以在需要时再下载的资源分开打包到不同的更新包来达到安装游戏时只需要下载最小的安装包即可以进入游戏。通过为资源创建索引信息并存入到数据库达到在游戏过程中可以快速定位所需资源是否需要下载及需要下载的游戏包和资源所在包位置。通过在游戏过程中根据需要下载游戏资源解决了在进入游戏前就需要下载大量资源的问题,极大降低了玩家进入游戏体验的门槛,同时也节省大量的宽带流量。
56.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1