CN112732267A - 减少bundle依赖链冗余的方法、装置及介质 - Google Patents
减少bundle依赖链冗余的方法、装置及介质 Download PDFInfo
- Publication number
- CN112732267A CN112732267A CN202110033062.2A CN202110033062A CN112732267A CN 112732267 A CN112732267 A CN 112732267A CN 202110033062 A CN202110033062 A CN 202110033062A CN 112732267 A CN112732267 A CN 112732267A
- Authority
- CN
- China
- Prior art keywords
- dependency
- bundle
- resource
- package
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000001419 dependent effect Effects 0.000 claims abstract description 27
- 238000004590 computer program Methods 0.000 claims description 7
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/552—Details of game data or player data management for downloading to client devices, e.g. using OS version, hardware or software profile of the client device
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种减少bund le依赖链冗余的方法、装置及介质的技术方案,包括:系依赖生成,通过服务端对资源进行打bund le包时,遍历每个bund le包中资源信息,生成对应bund le包的关系依赖表;依赖链遍历,根据关系依赖表,对多个bund le包进行资源遍历,获取每个bund le包的资源依赖及资源所处的bund le包,生成资源对应的关系依赖及所依赖的bund le包列表,写入依赖文件;更新同步,当进行新的bund le包打包时,将依赖文件同步发送至客户端。本发明的有益效果为:减少内存占用,加载耗时,提高游戏运行效率;同时减少bund le依赖链的冗余。
Description
技术领域
本发明涉及计算机领域,具体涉及了一种减少bundle依赖链冗余的方法、装置及介质。
背景技术
在Unity3D游戏中,AssetBundle系统的资源加载,通用做法是首先根据打包时记录的Asset2Bundle表找到Asset资源(A.prefab)在哪个bundle内,然后根据打包时系统自动生成的AssetBundleManifest(bundle依赖表)记录的bundle与bundle之前的依赖关系,找到该bundleID依赖了哪些bundle ID,并递归查找每个依赖bundle的依赖bundle列表,再将所有的bundle加载到内存中,才可以去加载Asset资源,才能正确加载Asset资源,但是AssetBundleManifest通常带有大量的bundle冗余,造成内存浪费,加载了很多不必要的bundle。
冗余的原因是,系统给的AssetBundleManifest中,记录的是单个bundle内所有文件的所有依赖bundle,而我们仅需要单个bundle的单个文件所依赖的所有bundle,去除掉其他的文件的依赖就可以减少bundle依赖链的冗余,现有技术的解决方案通过减少的相同的资源被重复打进不同的bundle内,以减少造成bundle内打的资源冗余。
发明内容
本发明的目的在于至少解决现有技术中存在的技术问题之一,提供了一种减少bundle依赖链冗余的方法、装置及介质,减少bundle依赖链的冗余,减少内存占用及加载耗时,提高游戏运行效率。
本发明的技术方案包括一种减少bundle依赖链冗余的方法,其特征在于,该方法包括:关系依赖生成,通过服务端对资源进行打bundle包时,遍历每个bundle包中资源信息,生成对应bundle包的关系依赖表;依赖链遍历,根据关系依赖表,对多个bundle包进行资源遍历,获取每个bundle包的资源依赖及资源所处的bundle包,生成资源对应的关系依赖及所依赖的bundle包列表,写入依赖文件;更新同步,当进行新的bundle包打包时,将依赖文件同步发送至客户端。
根据所述的减少bundle依赖链冗余的方法,其中关系依赖生成包括:通过Asset2Bundle表的分配关系,以json表方式对bundle包与资源的依赖关系进行存储。
根据所述的减少bundle依赖链冗余的方法,其中依赖链遍历包括:遍历每个bundle包的依赖链中所有资源,查找每个资源的所有依赖资源,并通过Asset2Bundle表找到该资源的所有依赖资源所在的所有bundle ID,进而确定bundle包的关系依赖表,记录Asset级别的依赖关系Asset级别依赖bundle列表,写入本地文件。
根据所述的减少bundle依赖链冗余的方法,其中依赖文件为本地化的不可读二进制文件。
根据所述的减少bundle依赖链冗余的方法,其中更新同步包括:当进行新的bundle包打包时,检测到bundle包的关系依赖表变更时,重新执行所述关系依赖生成及依赖链遍历处理,并重新生成依赖文件。
根据所述的减少bundle依赖链冗余的方法,其中通过所述依赖文件用于确定bundle包依赖关系是否发生变化。
本发明的技术方案还包括一种减少bundle依赖链冗余的装置,该装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现任一所述的方法步骤。
本发明的技术方案还包括一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如任一所述的方法步骤。
本发明的有益效果为:资源级别的Bundle依赖表仅有几个最多几十个,而bundle级别的依赖表可能达几十个到数百个bundle,大大减少bundle冗余,减少内存占用,加载耗时,提高游戏运行效率;同时减少bundle依赖链的冗余。
附图说明
下面结合附图和实施例对本发明进一步地说明;
图1所示为根据本发明实施方式的总体流程图;
图2所示为根据本发明实施方式的减少bundle依赖链的流程示意图;
图3所示为根据本发明实施方式的装置图。
具体实施方式
本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
在本发明的描述中,对方法步骤的连续标号是为了方便审查和理解,结合本发明的整体技术方案以及各个步骤之间的逻辑关系,调整步骤之间的实施顺序并不会影响本发明技术方案所达到的技术效果。
本发明的描述中,除非另有明确的限定,设置等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
术语解释:
图1所示为根据本发明实施方式的总体流程图,该流程包括:关系依赖生成,通过服务端对资源进行打bundle包时,遍历每个bundle包中资源信息,生成对应bundle包的关系依赖表;依赖链遍历,根据关系依赖表,对多个bundle包进行资源遍历,获取每个bundle包的资源依赖及资源所处的bundle包,生成资源对应的关系依赖及所依赖的bundle包列表,写入依赖文件;更新同步,当进行新的bundle包打包时,将依赖文件同步发送至客户端。
图2所示为根据本发明实施方式的减少bundle依赖链的流程示意图,包括:
S100,在进行资源打bundle时,首先分配哪些资源进入哪些bundle内,即Asset2Bundle表(如Asset_A.prefab在Bundle_1.Bundle内,Asset_A.mat在Bundle_1.Bundle内,Asset_A.png在Bundle_2.Bundle内,Asset_B.prefab在Bundle_1.Bundle内,Asset_B.png在Bundle_3.Bundle内Asset_B.mat在Bundle_4.Bundle内)并将Asset2Bundle分配关系表写入json表,记录资源到bundle的关系
S200,分析依赖关系,遍历所有资源,找到每个资源的所有依赖资源,并通过Asset2Bundle表找到该资源的所有依赖资源所在的bundle,即找到了该资源所依赖的所有bundle ID,这样找到的bundle依赖表,不带任何冗余,记录Asset级别的依赖关系Asset级别依赖bundle列表并写入本地的二进制文件内(减少文件大小,同时对玩家来说是不可读,加强保密性)
如:Asset_A.prefab依赖了Asset_A.mat和Asset_a.png根据Asset2Bundle得知,Asset_A.prefab依赖了Bundle_1.Bundle和Bundle_2.Bundle,那么资源级别的Bundle依赖表仅有2个bundle,而bundle级别的依赖表可能达数十个到上百个bundle,本案例中bundle级别的依赖表有4个,导致依赖列表有冗余
bundle级别的依赖冗余的原因:
Asset_A.prefab依赖资源Asset_A.matAsset_A.png
Asset_B.prefab依赖资源Asset_B.matAsset_B.png
Asset_A.prefab在Bundle_1.Bundle中,系统自动生成的AssetBundleManifest(bundle依赖表)中Bundle_1.Bundle依赖表,原理:找出Bundle_1.Bundle依赖bundle方案是找到Bundle_1.Bundle所有资源及其依赖资源所在的bundleID,同时还有递推查找所有找到的bundleID的所有依赖bunldID,才是为该bundleID的所有依赖bundle,因为Asset_A.prefabAsset_B.prefab都在Bundle_1.Bundle所以一些很多不想关的资源依赖都在bundle依赖表中,造成大量冗余
S300,每次打更新包时,如果Asset级别依赖bundle列表发生改变,则需要更新该二进制文件给到客户端。
图3所示为根据本发明实施方式的装置图。装置包括存储器100及处理器200,其中处理器200存储有计算机程序,计算机程序用于执行:系依赖生成,通过服务端对资源进行打bundle包时,遍历每个bundle包中资源信息,生成对应bundle包的关系依赖表;依赖链遍历,根据关系依赖表,对多个bundle包进行资源遍历,获取每个bundle包的资源依赖及资源所处的bundle包,生成资源对应的关系依赖及所依赖的bundle包列表,写入依赖文件;更新同步,当进行新的bundle包打包时,将依赖文件同步发送至客户端。其中,存储器100用于存储数据。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (8)
1.一种减少bundle依赖链冗余的方法,其特征在于,该方法包括:
关系依赖生成,通过服务端对资源进行打bundle包时,遍历每个bundle包中资源信息,生成对应bundle包的关系依赖表;
依赖链遍历,根据关系依赖表,对多个bundle包进行资源遍历,获取每个bundle包的资源依赖及资源所处的bundle包,生成资源对应的关系依赖及所依赖的bundle包列表,写入依赖文件;
更新同步,当进行新的bundle包打包时,将依赖文件同步发送至客户端。
2.根据权利要求1所述的减少bundle依赖链冗余的方法,其特征在于,所述关系依赖生成包括:通过Asset2Bundle表的分配关系,以json表方式对bundle包与资源的依赖关系进行存储。
3.根据权利要求1所述的减少bundle依赖链冗余的方法,其特征在于,所述依赖链遍历包括:遍历每个bundle包的依赖链中所有资源,查找每个资源的所有依赖资源,并通过Asset2Bundle表找到该资源的所有依赖资源所在的所有bundle ID,进而确定bundle包的关系依赖表,记录Asset级别的依赖关系Asset级别依赖bundle列表,写入本地文件。
4.根据权利要求1所述的减少bundle依赖链冗余的方法,其特征在于,所述依赖文件为本地化的不可读二进制文件。
5.根据权利要求1所述的减少bundle依赖链冗余的方法,其特征在于,所述更新同步包括:当进行新的bundle包打包时,检测到bundle包的关系依赖表变更时,重新执行所述关系依赖生成及依赖链遍历处理,并重新生成依赖文件。
6.据权利要求1所述的减少bundle依赖链冗余的方法,其特征在于,通过所述依赖文件用于确定bundle包依赖关系是否发生变化。
7.一种减少bundle依赖链冗余的装置,该装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-6任一所述的方法步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110033062.2A CN112732267A (zh) | 2021-01-11 | 2021-01-11 | 减少bundle依赖链冗余的方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110033062.2A CN112732267A (zh) | 2021-01-11 | 2021-01-11 | 减少bundle依赖链冗余的方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112732267A true CN112732267A (zh) | 2021-04-30 |
Family
ID=75590257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110033062.2A Pending CN112732267A (zh) | 2021-01-11 | 2021-01-11 | 减少bundle依赖链冗余的方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112732267A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060089949A1 (en) * | 2004-10-25 | 2006-04-27 | Apple Computer, Inc. | Online purchase of digital media bundles |
US20080120199A1 (en) * | 2006-11-17 | 2008-05-22 | Tracy Pirnack | Method and system for upgrading a previously purchased media asset |
US20140380340A1 (en) * | 2013-06-21 | 2014-12-25 | Microsoft Corporation | Dependency Based Configuration Package Activation |
CN105354049A (zh) * | 2015-09-29 | 2016-02-24 | 北京畅游天下网络技术有限公司 | 一种三维动画引擎的资源加载方法、装置及系统 |
US20160357538A1 (en) * | 2015-06-05 | 2016-12-08 | Apple Inc. | On demand resources |
CN109799970A (zh) * | 2018-12-06 | 2019-05-24 | 珠海西山居移动游戏科技有限公司 | 一种资源引用关系生成方法及系统 |
CN110865888A (zh) * | 2019-11-28 | 2020-03-06 | 米哈游科技(上海)有限公司 | 一种资源加载方法、装置、服务器及存储介质 |
CN111061505A (zh) * | 2019-11-29 | 2020-04-24 | 珠海金山网络游戏科技有限公司 | 基于机器学习的优化打ab包方法 |
-
2021
- 2021-01-11 CN CN202110033062.2A patent/CN112732267A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060089949A1 (en) * | 2004-10-25 | 2006-04-27 | Apple Computer, Inc. | Online purchase of digital media bundles |
US20080120199A1 (en) * | 2006-11-17 | 2008-05-22 | Tracy Pirnack | Method and system for upgrading a previously purchased media asset |
US20140380340A1 (en) * | 2013-06-21 | 2014-12-25 | Microsoft Corporation | Dependency Based Configuration Package Activation |
US20160357538A1 (en) * | 2015-06-05 | 2016-12-08 | Apple Inc. | On demand resources |
CN105354049A (zh) * | 2015-09-29 | 2016-02-24 | 北京畅游天下网络技术有限公司 | 一种三维动画引擎的资源加载方法、装置及系统 |
CN109799970A (zh) * | 2018-12-06 | 2019-05-24 | 珠海西山居移动游戏科技有限公司 | 一种资源引用关系生成方法及系统 |
CN110865888A (zh) * | 2019-11-28 | 2020-03-06 | 米哈游科技(上海)有限公司 | 一种资源加载方法、装置、服务器及存储介质 |
CN111061505A (zh) * | 2019-11-29 | 2020-04-24 | 珠海金山网络游戏科技有限公司 | 基于机器学习的优化打ab包方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109410045B (zh) | 一种平行链共识方法、设备和存储介质 | |
CN107391628B (zh) | 数据同步方法及装置 | |
US7743013B2 (en) | Data partitioning via bucketing bloom filters | |
US20190026042A1 (en) | Deduplication-Aware Load Balancing in Distributed Storage Systems | |
US6449613B1 (en) | Method and data processing system for hashing database record keys in a discontinuous hash table | |
CN109726264B (zh) | 用于索引信息更新的方法、装置、设备和介质 | |
CN111984729A (zh) | 异构数据库数据同步方法、装置、介质和电子设备 | |
CN107977275B (zh) | 基于消息队列的任务处理方法及相关设备 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN112711624B (zh) | 数据打包控制方法、装置、电子设备和存储介质 | |
CN112732267A (zh) | 减少bundle依赖链冗余的方法、装置及介质 | |
CN117492670A (zh) | 日志打印序列的确定方法、装置及电子设备 | |
CN111752941B (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN102270179B (zh) | 用于cad系统的基于片元的数据存储和处理方法及其系统 | |
JP2007249949A (ja) | フォーマットする試験結果の文脈を提供する変数値を格納する装置 | |
CN110928941A (zh) | 一种数据分片抽取方法及装置 | |
CN113590566B (zh) | 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 | |
US20230275958A1 (en) | Load distribution method, load distribution device, load distribution system and program | |
US11061704B2 (en) | Lightweight and precise value profiling | |
CN110928779B (zh) | 文件处理方法、应用程序运行故障定位方法和设备 | |
CN110765493B (zh) | 一种基于Linux预链接的文件基线防御方法、装置及存储设备 | |
CN112925746A (zh) | 文件归档方法和装置 | |
CN111880803A (zh) | 一种应用于多平台的软件构建方法及装置 | |
CN107943519B (zh) | 一种时序数据乱序操作处理方法和装置 | |
CN111798239A (zh) | 平行链共识方法、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |