CN114053719A - 资源存储和读取方法、装置、计算机设备和存储介质 - Google Patents
资源存储和读取方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114053719A CN114053719A CN202010777890.2A CN202010777890A CN114053719A CN 114053719 A CN114053719 A CN 114053719A CN 202010777890 A CN202010777890 A CN 202010777890A CN 114053719 A CN114053719 A CN 114053719A
- Authority
- CN
- China
- Prior art keywords
- file
- resource
- game
- information
- data
- 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
Images
Classifications
-
- 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/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- 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/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/69—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by enabling or updating specific game elements, e.g. unlocking hidden features, items, levels or versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及一种资源存储和读取方法、装置、计算机设备和存储介质。所述存储方法包括:获取游戏资源文件;对游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包;虚拟文件系统格式包括:数据存储组件和校验组件,数据存储组件用于分块存储游戏资源文件,校验组件用于存储游戏资源文件的校验数据;将资源压缩包上传至云端服务器,供游戏启动时下载。采用本方法能够减小存储空间占用。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种资源存储和读取方法、装置、计算机设备和存储介质。
背景技术
游戏开发过程中,开发的游戏文件通常包括游戏程序代码文件和游戏资源文件(如声音、图片、动画等),相关技术将所有的游戏文件放入游戏包内,例如将游戏资源文件打包到apk(Android应用程序包)下的Asset目录或ipa(IOS应用程序包)下的Raw目录,用户通过终端安装好游戏包并启动游戏后,从apk或ipa中解压游戏资源文件到额外的存储位置,当需要加载游戏资源文件时,从相应存储位置读取游戏资源文件。然而,相关技术需要占用较大的存储空间。
发明内容
基于此,有必要针对上述技术问题,提供一种能够减小存储空间占用的资源存储和读取方法、装置、计算机设备和存储介质。
一种资源存储方法,所述方法包括:
获取游戏资源文件;
对所述游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包;所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
将所述资源压缩包上传至云端服务器,供游戏启动时下载。
一种资源存储装置,所述装置包括:
获取模块,用于获取游戏资源文件;
存储模块,用于对所述游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包;所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
上传模块,用于将所述资源压缩包上传至云端服务器,供游戏启动时下载。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取游戏资源文件;
对所述游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包;所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
将所述资源压缩包上传至云端服务器,供游戏启动时下载。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取游戏资源文件;
对所述游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包;所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
将所述资源压缩包上传至云端服务器,供游戏启动时下载。
上述资源存储方法、装置、计算机设备和存储介质,通过将游戏资源文件压缩存储为虚拟文件系统格式的资源压缩包,使得后续可以直接从资源压缩包中读取游戏资源文件,而无需将资源压缩包中的各游戏资源文件解压到额外的存储空间再进行读取,从而减小存储空间的占用;利用分块存储可以在读取时无需下载完全部文件便可加载显示游戏资源,提高游戏加载效率;此外通过将资源压缩包上传至云端服务器,可以避免将游戏资源文件一起打包到游戏安装包中导致的游戏安装包过大的问题,提高游戏安装成功率和效率。
一种资源读取方法,所述方法包括:
在游戏启动时,从云端服务器下载对应的资源压缩包;所述资源压缩包表示对游戏资源文件进行压缩存储后生成的虚拟文件系统格式的资源压缩包,所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
对所述资源压缩包进行读取,获得相应的游戏资源文件。
一种资源读取装置,所述装置包括:
下载模块,用于在游戏启动时,从云端服务器下载对应的资源压缩包;所述资源压缩包表示对游戏资源文件进行压缩存储后生成的虚拟文件系统格式的资源压缩包,所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
读取模块,用于对所述资源压缩包进行读取,获得相应的游戏资源文件。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在游戏启动时,从云端服务器下载对应的资源压缩包;所述资源压缩包表示对游戏资源文件进行压缩存储后生成的虚拟文件系统格式的资源压缩包,所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
对所述资源压缩包进行读取,获得相应的游戏资源文件。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在游戏启动时,从云端服务器下载对应的资源压缩包;所述资源压缩包表示对游戏资源文件进行压缩存储后生成的虚拟文件系统格式的资源压缩包,所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
对所述资源压缩包进行读取,获得相应的游戏资源文件。
上述资源读取方法、装置、计算机设备和存储介质,在游戏启动时,从云端服务器下载对应的资源压缩包,该资源压缩包是对该启动游戏的游戏资源文件进行压缩存储生成的虚拟文件系统格式的资源压缩包,可以直接从资源压缩包中读取游戏资源文件,而无需将资源压缩包中的各游戏资源文件解压到额外的存储空间再进行读取,从而减小存储空间的占用;利用分块存储可以在读取时无需下载完全部文件便可加载显示游戏资源,提高游戏加载效率;此外通过从云端服务器下载资源压缩包,可以避免将游戏资源文件一起打包到游戏安装包中导致的游戏安装包过大的问题,提高游戏安装成功率和效率。
附图说明
图1为一个实施例中资源存储和读取方法的应用环境图;
图2为一个实施例中资源存储方法的流程示意图;
图3为一个实施例中VFS格式的资源压缩包的示意图;
图4为一个实施例中资源读取方法的流程示意图;
图5为一个实施例中Unity插件用例示意图;
图6为一个实施例中资源存储和读取方法的应用场景图;
图7为一个实施例中资源存储装置的结构框图;
图8为一个实施例中资源读取装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的资源存储和读取方法,可以应用于如图1所示的应用环境中。该应用环境涉及第一终端102、第二终端104和云端服务器106,其中,第一终端102和第二终端104均通过网络与云端服务器106进行通信。游戏开发方可以通过第一终端102对游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包,并将资源压缩包上传至云端服务器106。游戏用户可以通过第二终端104安装并运行游戏,在监测到游戏启动时,从云端服务器106下载对应的资源压缩包,并对资源压缩包进行读取,获得相应的游戏资源文件。其中,第一终端102和第二终端104可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑,云端服务器106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种资源存储方法,以该方法应用于图1中的第一终端为例进行说明,包括以下步骤S202至步骤S206。
S202,获取游戏资源文件。
以Unity游戏开发平台为例,开发人员可以使用Unity创建游戏项目,在该游戏项目下开发相应的游戏文件,游戏文件包括游戏程序逻辑文件(如游戏运行逻辑、读取逻辑等)和游戏资源文件(如游戏运行过程中需要加载的声音、图片、动画等),第一终端可以从Unity获取游戏文件,并对游戏文件进行处理。
S204,对游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包;虚拟文件系统格式包括:数据存储组件和校验组件,数据存储组件用于分块存储游戏资源文件,校验组件用于存储游戏资源文件的校验数据。
Unity使用的游戏资源文件通常为Assetbundle(简称为AB)格式,游戏文件中通常包含大量的AB格式的游戏资源文件,第一终端从Unity获得AB格式的游戏资源文件后,可以将所有的AB格式的游戏资源文件进行压缩存储,打包成一个虚拟文件系统(virtual filesystem,简称VFS)格式的资源压缩包,方便读取。
S206,将资源压缩包上传至云端服务器,供游戏启动时下载。
第一终端可以将游戏程序逻辑文件处理成应用程序包(apk或ipa)并上传至应用商店,将游戏资源文件处理成VFS格式的资源压缩包并上传到云端服务器,用户可以从应用商店下载应用程序包并安装相应的游戏到第二终端,第二终端启动游戏时从云端服务器下载相应的资源压缩包。
上述资源存储方法中,通过将游戏资源文件压缩存储为虚拟文件系统格式的资源压缩包,使得后续可以直接从资源压缩包中读取游戏资源文件,而无需将资源压缩包中的各游戏资源文件解压到额外的存储空间再进行读取,从而减小存储空间的占用;利用分块存储可以在读取时无需下载完全部文件便可加载显示游戏资源,提高游戏加载效率;此外通过将资源压缩包上传至云端服务器,可以避免将游戏资源文件一起打包到游戏安装包中导致的游戏安装包过大的问题,提高游戏安装成功率和效率。
在一个实施例中,对游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包的步骤,具体可以包括以下步骤:按照预设的分块长度对各游戏资源文件进行分块处理,获得分块数据;计算各游戏资源文件的第一加密信息以及各分块数据的第二加密信息,根据各第一加密信息以及各第二加密信息,确定游戏资源文件的校验数据;根据分块数据和校验数据,生成虚拟文件系统格式的资源压缩包。
其中,分块长度可以结合实际情况进行设置,例如设为16K,游戏资源文件以数据块的形式进行存储,例如一个游戏资源文件的长度为32K,则该游戏资源文件经分块处理后,分为两个16K的分块数据进行存储。
加密信息具体可以是MD5值,第一加密信息表示游戏资源文件的MD5值,第二加密信息表示分块数据的MD5值。通过信息摘要算法(MD5)可以从一个文件中按照一定的规则生成一个特殊的字符串(MD5值),一个文件所对应的MD5值是固定的,当文件内容变化后,其MD5值也会变化,因此可以使用MD5值作为文件的加密信息来校验文件是否被篡改。
本实施例中,通过对游戏资源文件进行分块存储,并设置各游戏资源文件以及各分块数据的加密信息,使得游戏资源不容易被破解,篡改的游戏资源容易被识别,从而可以加强游戏资源的安全性。
在一个实施例中,虚拟文件系统格式还包括:文件头部组件和位图组件,文件头部组件用于存储文件头部信息,位图组件用于存储游戏资源文件的分块信息。根据分块数据和校验数据,生成虚拟文件系统格式的资源压缩包的步骤,具体可以包括以下步骤:根据分块数据的数量,确定游戏资源文件的分块信息;根据文件头长度、游戏资源文件的总长度、校验数据以及分块信息,确定文件头部信息;根据文件头部信息、分块数据、校验数据以及分块信息,生成虚拟文件系统格式的资源压缩包。
分块信息用于表示数据块是否为空数据,通过位图(Bitmap)的形式存储,Bitmap可以标记数据块是否为空数据,用于后续再写入数据。具体地,每个数据块占据Bitmap中的一个位(bit),若数据块存储有数据,则该数据块对应的bit设为1,若数据块为空数据,则该数据块对应的bit设为0。文件头长度可以是预设的文件头大小,例如可以设为172字节。游戏资源文件的总长度表示所有游戏资源文件的总大小,可以根据游戏资源文件的总大小确定所需的存储容量。校验数据具体可以通过哈希(Hash)表的形式进行存储,包括文件Hash表和数据Hash表,分别存储游戏资源文件的第一加密信息和分块数据的第二加密信息。
在一个实施例中,根据文件头长度、游戏资源文件的总长度、校验数据以及分块信息,确定文件头部信息的步骤,具体可以包括以下步骤:根据文件头长度、游戏资源文件的总长度、分块长度、校验数据的位置和长度、以及分块信息的位置和长度,确定头部基本信息;计算校验数据的第三加密信息,根据第三加密信息以及头部基本信息,计算第四加密信息;根据头部基本信息、第三加密信息以及第四加密信息,确定文件头部信息。
文件头部信息包括头部基本信息、第三加密信息以及第四加密信息。头部基本信息包括:文件头长度、游戏资源文件的总长度、分块长度、校验数据的位置和长度、以及分块信息的位置和长度。校验数据的位置和长度具体可以是校验数据所在的Hash表的位置和长度。分块信息的位置和长度具体可以分块信息所在Bitmap的位置和长度。第三加密信息具体可以是校验数据所在的Hash表的MD5值,用于对Hash表进行校验。将第三加密信息以及头部基本信息作为一个整体文件,第四加密信息表示该整体文件的MD5值,用于对文件头部信息进行校验。
如图3所示,示出了一个实施例中VFS格式的资源压缩包(Res.vfs)的示意图。VFS格式包括以下四部分组件:头部组件(Header)、数据存储组件(Data Segment)、校验组件(HashTable)和位图组件(Bitmap)。Header中包括:头部基本信息(HeaderInfo)、哈希表加密信息(HashTable MD5)和头部加密信息(Header MD5),HeaderInfo包括:文件类型(dwID)、文件头长度(HeaderSize)、版本信息(FormatVersion)、分块长度(MD5PieceSize)、文件长度(Archivesize)、哈希表位置(HashTablePos)、哈希表长度(HashTableSize)、位图位置(BitmapPos)、位图长度(BitmapSize)。Data Segment中包括所有的游戏资源文件(File),各游戏资源文件以数据块的形式存储,每个数据块的大小为16K。HashTable中包括游戏资源文件的加密信息(File MD5)和分块数据的加密信息(Block MD5)。具体地,对游戏资源文件进行压缩存储时,可以先创建一个空的VFS格式文件,然后按照Header、DataSegment、HashTable、Bitmap的顺序,依次写入各组件对应的信息,从而获得VFS格式的资源压缩包。
上述实施例中,通过将零散的游戏资源文件压缩存储为一个虚拟文件系统格式的资源压缩包,可以加强游戏资源的完整性;通过从虚拟文件系统格式的资源压缩包中读取游戏资源文件,无需将资源压缩包中的各游戏资源文件解压到额外的存储空间再进行读取,可以减小存储空间的占用;通过对游戏资源文件进行分块存储并设置校验数据,有助于识别被篡改的资源,可以加强游戏资源的安全性;通过将资源压缩包上传至云端服务器,可以大大减小游戏安装包或更新包的容量,降低游戏新进门槛。
在一个实施例中,如图4所示,提供了一种资源读取方法,以该方法应用于图1中的第二终端为例进行说明,包括以下步骤S402至步骤S404。
S402,在游戏启动时,从云端服务器下载对应的资源压缩包;资源压缩包表示对游戏资源文件进行压缩存储后生成的虚拟文件系统格式的资源压缩包,虚拟文件系统格式包括:数据存储组件和校验组件,数据存储组件用于分块存储游戏资源文件,校验组件用于存储游戏资源文件的校验数据。
S404,对资源压缩包进行读取,获得相应的游戏资源文件。
上述资源读取方法中,在游戏启动时,从云端服务器下载对应的资源压缩包,该资源压缩包是对该启动游戏的游戏资源文件进行压缩存储生成的虚拟文件系统格式的资源压缩包,可以直接从资源压缩包中读取游戏资源文件,而无需将资源压缩包中的各游戏资源文件解压到额外的存储空间再进行读取,从而减小存储空间的占用;利用分块存储可以在读取时无需下载完全部文件便可加载显示游戏资源,提高游戏加载效率;此外通过从云端服务器下载资源压缩包,可以避免将游戏资源文件一起打包到游戏安装包中导致的游戏安装包过大的问题,提高游戏安装成功率和效率。
在一个实施例中,虚拟文件系统格式的资源压缩包的生成方法包括以下步骤:按照预设的分块长度对各游戏资源文件进行分块处理,获得分块数据;计算各游戏资源文件的第一加密信息以及各分块数据的第二加密信息,根据各第一加密信息以及各第二加密信息,确定游戏资源文件的校验数据;根据分块数据和校验数据,生成虚拟文件系统格式的资源压缩包。对于本实施例的具体说明可以参照前述实施例,此处不再赘述。
在一个实施例中,虚拟文件系统格式还包括:文件头部组件和位图组件,文件头部组件用于存储文件头部信息,位图组件用于存储游戏资源文件的分块信息;根据分块数据和校验数据,生成虚拟文件系统格式的资源压缩包的步骤,具体可以包括以下步骤:根据分块数据的数量,确定游戏资源文件的分块信息;根据文件头长度、游戏资源文件的总长度、校验数据以及分块信息,确定文件头部信息;根据文件头部信息、分块数据、校验数据以及分块信息,生成虚拟文件系统格式的资源压缩包。对于本实施例的具体说明可以参照前述实施例,此处不再赘述。
在一个实施例中,根据文件头长度、游戏资源文件的总长度、校验数据以及分块信息,确定文件头部信息的步骤,具体可以包括以下步骤:根据文件头长度、游戏资源文件的总长度、分块长度、校验数据的位置和长度、以及分块信息的位置和长度,确定头部基本信息;计算校验数据的第三加密信息,根据第三加密信息以及头部基本信息,计算第四加密信息;根据头部基本信息、第三加密信息以及第四加密信息,确定文件头部信息。对于本实施例的具体说明可以参照前述实施例,此处不再赘述。
在一个实施例中,对资源压缩包进行读取,获得相应的游戏资源文件的步骤,具体可以包括以下步骤:根据文件头长度,读取资源压缩包中的文件头部信息;基于第四加密信息对文件头部信息进行校验,在校验通过后,读取资源压缩包中的校验数据;基于第三加密信息对校验数据进行校验,在校验通过后,确定游戏资源文件的位置和长度;根据游戏资源文件的位置和长度,读取资源压缩包中的分块数据,基于读取的分块数据,获得相应的游戏资源文件。
具体地,获得VFS格式的资源压缩包(Res.vfs)后,可以打开Res.vfs的文件句柄,读取Res.vfs前172个字节(文件头长度为172个字节),获得Res.vfs的文件头部信息(即Header中包括的信息);基于第四加密信息(Header MD5)对文件头部信息进行校验,在校验通过后,读取Res.vfs中的校验数据(即HashTable数据);基于第三加密信息(HashTableMD5)对HashTable数据进行校验,在校验通过后,重建文件目录树;根据文件目录树确定游戏资源文件的位置和长度;根据游戏资源文件的位置和长度,读取Res.vfs中的分块数据,基于读取的分块数据还原出原始的游戏资源文件。
本实施例中,通过直接读取资源压缩包中的游戏资源文件,无需将资源压缩包中的各游戏资源文件解压到额外的存储空间再进行读取,从而减小存储空间的占用,并且相对于分别读取多个零散的游戏资源文件,可以提高读取效率,从而提高游戏加载效率,减少用户等待时间。
在一个实施例中,对资源压缩包进行读取,获得相应的游戏资源文件的步骤,具体可以是:调用虚拟文件系统格式读取插件,基于虚拟文件系统格式读取插件实例对资源压缩包进行读取,获得相应的游戏资源文件。
本实施例中,调用VFS格式读取插件,基于VFS格式读取插件实例对资源压缩包进行读取,使得可以按照VFS格式读取插件实例中定义的读取方法对资源压缩包进行读取,实现对VFS文件的直接读取。
如图5所示,提供了一个实施例中Unity插件用例示意图,可以通过Unity插件系统,接管Unity文件系统底层,实现对VFS文件的直接读取方案,同时该读取方案对上层使用者透明。具体地,先将VFS库引用到Unity Plugin中,初始化时,创建VFS读取插件实例,通过FileSystem::MountHandler(VFS格式读取插件实例),向Unity文件系统注册VFS格式读取插件实例,Unity在加载AB格式文件时,路径前缀带上vfs://,这样在读取AB格式文件时,就会按照VFS格式读取插件实例中定义的读取方法去读取。
本申请还提供一种应用场景,该应用场景应用上述的资源存储和读取方法。具体地,如图6所示,该资源存储和读取方法在该应用场景的应用如下:
开发人员将Unity项目从Git或SVN检出到第一终端,第一终端将Unity项目中的游戏资源文件处理成虚拟文件系统格式的资源压缩包(Res.vfs),将游戏程序逻辑文件处理成应用程序包(mini.apk),同时生成版本升级配置文件(config),第一终端将Res.vfs上传到云端服务器,将config更新到策略服务器,将mini.apk上传到应用商店。用户从应用商店下载mini.apk并安装到第二终端,第二终端启动mini.apk对应的游戏时,先从策略服务器获得当前最新的程序版本,再从云端服务器下载Res.vfs,该下载可以是只下载增量数据,无需下载完整文件,下载成功后,第二终端对Res.vfs进行完整性校验,校验通过后读取Res.vfs中的游戏资源文件,以加载游戏相关内容。
应该理解的是,虽然图2、4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、4中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种资源存储装置700,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:获取模块710、存储模块720和上传模块730,其中:
获取模块710,用于获取游戏资源文件。
存储模块720,用于对游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包;虚拟文件系统格式包括:数据存储组件和校验组件,数据存储组件用于分块存储游戏资源文件,校验组件用于存储游戏资源文件的校验数据。
上传模块730,用于将资源压缩包上传至云端服务器,供游戏启动时下载。
在一个实施例中,存储模块720包括:分块单元、确定单元和生成单元。分块单元,用于按照预设的分块长度对各游戏资源文件进行分块处理,获得分块数据。确定单元,用于计算各游戏资源文件的第一加密信息以及各分块数据的第二加密信息,根据各第一加密信息以及各第二加密信息,确定游戏资源文件的校验数据。生成单元,用于根据分块数据和校验数据,生成虚拟文件系统格式的资源压缩包。
在一个实施例中,虚拟文件系统格式还包括:文件头部组件和位图组件,文件头部组件用于存储文件头部信息,位图组件用于存储游戏资源文件的分块信息。生成单元在根据分块数据和校验数据,生成虚拟文件系统格式的资源压缩包时,具体用于:根据分块数据的数量,确定游戏资源文件的分块信息;根据文件头长度、游戏资源文件的总长度、校验数据以及分块信息,确定文件头部信息;根据文件头部信息、分块数据、校验数据以及分块信息,生成虚拟文件系统格式的资源压缩包。
在一个实施例中,生成单元在根据分块数据的数量,确定游戏资源文件的分块信息;根据文件头长度、游戏资源文件的总长度、校验数据以及分块信息,确定文件头部信息时,具体用于:根据文件头长度、游戏资源文件的总长度、分块长度、校验数据的位置和长度、以及分块信息的位置和长度,确定头部基本信息;计算校验数据的第三加密信息,根据第三加密信息以及头部基本信息,计算第四加密信息;根据头部基本信息、第三加密信息以及第四加密信息,确定文件头部信息。
关于资源存储装置的具体限定可以参见上文中对于资源存储方法的限定,在此不再赘述。上述资源存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,如图8所示,提供了一种资源读取装置800,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:下载模块810和读取模块820,其中:
下载模块810,用于在游戏启动时,从云端服务器下载对应的资源压缩包;资源压缩包表示对游戏资源文件进行压缩存储后生成的虚拟文件系统格式的资源压缩包,虚拟文件系统格式包括:数据存储组件和校验组件,数据存储组件用于分块存储游戏资源文件,校验组件用于存储游戏资源文件的校验数据。
读取模块820,用于对资源压缩包进行读取,获得相应的游戏资源文件。
在一个实施例中,虚拟文件系统格式的资源压缩包的生成方法包括:按照预设的分块长度对各游戏资源文件进行分块处理,获得分块数据;计算各游戏资源文件的第一加密信息以及各分块数据的第二加密信息,根据各第一加密信息以及各第二加密信息,确定游戏资源文件的校验数据;根据分块数据和校验数据,生成虚拟文件系统格式的资源压缩包。
在一个实施例中,虚拟文件系统格式还包括:文件头部组件和位图组件,文件头部组件用于存储文件头部信息,位图组件用于存储游戏资源文件的分块信息;根据分块数据和校验数据,生成虚拟文件系统格式的资源压缩包,包括:根据分块数据的数量,确定游戏资源文件的分块信息;根据文件头长度、游戏资源文件的总长度、校验数据以及分块信息,确定文件头部信息;根据文件头部信息、分块数据、校验数据以及分块信息,生成虚拟文件系统格式的资源压缩包。
在一个实施例中,根据文件头长度、游戏资源文件的总长度、校验数据以及分块信息,确定文件头部信息,包括:根据文件头长度、游戏资源文件的总长度、分块长度、校验数据的位置和长度、分块信息的位置和长度,确定头部基本信息;计算校验数据的第三加密信息,根据第三加密信息以及头部基本信息,计算第四加密信息;根据头部基本信息、第三加密信息以及第四加密信息,确定文件头部信息。
在一个实施例中,读取模块820在对资源压缩包进行读取,获得相应的游戏资源文件时,具体用于:根据文件头长度,读取资源压缩包中的文件头部信息;基于第四加密信息对文件头部信息进行校验,在校验通过后,读取资源压缩包中的校验数据;基于第三加密信息对校验数据进行校验,在校验通过后,确定游戏资源文件的位置和长度;根据游戏资源文件的位置和长度,读取资源压缩包中的分块数据,基于读取的分块数据,获得相应的游戏资源文件。
在一个实施例中,读取模块820在对资源压缩包进行读取,获得相应的游戏资源文件时,具体用于:调用虚拟文件系统格式读取插件,基于虚拟文件系统格式读取插件实例对资源压缩包进行读取,获得相应的游戏资源文件。
关于资源读取装置的具体限定可以参见上文中对于资源读取方法的限定,在此不再赘述。上述资源读取装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种资源存储方法和/或一种资源读取方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
需要理解的是,上述实施例中的术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种资源存储方法,其特征在于,所述方法包括:
获取游戏资源文件;
对所述游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包;所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
将所述资源压缩包上传至云端服务器,供游戏启动时下载。
2.根据权利要求1所述的方法,其特征在于,对所述游戏资源文件进行压缩存储,生成虚拟文件系统格式的资源压缩包,包括:
按照预设的分块长度对各所述游戏资源文件进行分块处理,获得分块数据;
计算各所述游戏资源文件的第一加密信息以及各所述分块数据的第二加密信息,根据各所述第一加密信息以及各所述第二加密信息,确定所述游戏资源文件的校验数据;
根据所述分块数据和所述校验数据,生成虚拟文件系统格式的资源压缩包。
3.根据权利要求2所述的方法,其特征在于,所述虚拟文件系统格式还包括:文件头部组件和位图组件,所述文件头部组件用于存储文件头部信息,所述位图组件用于存储所述游戏资源文件的分块信息;
根据所述分块数据和所述校验数据,生成虚拟文件系统格式的资源压缩包,包括:
根据所述分块数据的数量,确定所述游戏资源文件的分块信息;
根据文件头长度、所述游戏资源文件的总长度、所述校验数据以及所述分块信息,确定文件头部信息;
根据所述文件头部信息、所述分块数据、所述校验数据以及所述分块信息,生成虚拟文件系统格式的资源压缩包。
4.根据权利要求3所述的方法,其特征在于,根据文件头长度、所述游戏资源文件的总长度、所述校验数据以及所述分块信息,确定文件头部信息,包括:
根据文件头长度、所述游戏资源文件的总长度、所述分块长度、所述校验数据的位置和长度、以及所述分块信息的位置和长度,确定头部基本信息;
计算所述校验数据的第三加密信息,根据所述第三加密信息以及所述头部基本信息,计算第四加密信息;
根据所述头部基本信息、所述第三加密信息以及所述第四加密信息,确定文件头部信息。
5.一种资源读取方法,其特征在于,所述方法包括:
在游戏启动时,从云端服务器下载对应的资源压缩包;所述资源压缩包表示对游戏资源文件进行压缩存储后生成的虚拟文件系统格式的资源压缩包,所述虚拟文件系统格式包括:数据存储组件和校验组件,所述数据存储组件用于分块存储游戏资源文件,所述校验组件用于存储游戏资源文件的校验数据;
对所述资源压缩包进行读取,获得相应的游戏资源文件。
6.根据权利要求5所述的方法,其特征在于,所述虚拟文件系统格式的资源压缩包的生成方法包括:
按照预设的分块长度对各所述游戏资源文件进行分块处理,获得分块数据;
计算各所述游戏资源文件的第一加密信息以及各所述分块数据的第二加密信息,根据各所述第一加密信息以及各所述第二加密信息,确定所述游戏资源文件的校验数据;
根据所述分块数据和所述校验数据,生成虚拟文件系统格式的资源压缩包。
7.根据权利要求6所述的方法,其特征在于,所述虚拟文件系统格式还包括:文件头部组件和位图组件,所述文件头部组件用于存储文件头部信息,所述位图组件用于存储所述游戏资源文件的分块信息;
根据所述分块数据和所述校验数据,生成虚拟文件系统格式的资源压缩包,包括:
根据所述分块数据的数量,确定所述游戏资源文件的分块信息;
根据文件头长度、所述游戏资源文件的总长度、所述校验数据以及所述分块信息,确定文件头部信息;
根据所述文件头部信息、所述分块数据、所述校验数据以及所述分块信息,生成虚拟文件系统格式的资源压缩包。
8.根据权利要求7所述的方法,其特征在于,根据文件头长度、所述游戏资源文件的总长度、所述校验数据以及所述分块信息,确定文件头部信息,包括:
根据文件头长度、所述游戏资源文件的总长度、所述分块长度、所述校验数据的位置和长度、以及所述分块信息的位置和长度,确定头部基本信息;
计算所述校验数据的第三加密信息,根据所述第三加密信息以及所述头部基本信息,计算第四加密信息;
根据所述头部基本信息、所述第三加密信息以及所述第四加密信息,确定文件头部信息。
9.根据权利要求8所述的方法,其特征在于,对所述资源压缩包进行读取,获得相应的游戏资源文件,包括:
根据所述文件头长度,读取所述资源压缩包中的文件头部信息;
基于所述第四加密信息对所述文件头部信息进行校验,在校验通过后,读取所述资源压缩包中的校验数据;
基于所述第三加密信息对所述校验数据进行校验,在校验通过后,确定游戏资源文件的位置和长度;
根据所述游戏资源文件的位置和长度,读取所述资源压缩包中的分块数据,基于读取的分块数据,获得相应的游戏资源文件。
10.根据权利要求5所述的方法,其特征在于,对所述资源压缩包进行读取,获得相应的游戏资源文件,包括:
调用虚拟文件系统格式读取插件,基于所述虚拟文件系统格式读取插件实例对所述资源压缩包进行读取,获得相应的游戏资源文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010777890.2A CN114053719A (zh) | 2020-08-05 | 2020-08-05 | 资源存储和读取方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010777890.2A CN114053719A (zh) | 2020-08-05 | 2020-08-05 | 资源存储和读取方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114053719A true CN114053719A (zh) | 2022-02-18 |
Family
ID=80232222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010777890.2A Pending CN114053719A (zh) | 2020-08-05 | 2020-08-05 | 资源存储和读取方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114053719A (zh) |
-
2020
- 2020-08-05 CN CN202010777890.2A patent/CN114053719A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105867947B (zh) | 预置应用程序升级后的数据处理方法及装置 | |
JP5658283B2 (ja) | アプリケーションの稼働方法、装置及びシステム | |
CN110166543B (zh) | 应用程序处理方法、装置和计算机设备 | |
CN105138376A (zh) | 混合模式应用、其网页资源升级方法、移动终端以及系统 | |
CN109542461A (zh) | 应用安装包的发布方法、终端设备及介质 | |
CN105740016B (zh) | 应用程序的增量发布方法和装置、升级方法和装置 | |
CN107526608B (zh) | 一种ota升级包升级方法及设备 | |
CN109857454B (zh) | 安装包生成与缓存方法、装置、电子设备及存储介质 | |
CN107797818A (zh) | 应用程序升级方法及装置 | |
WO2021143845A1 (zh) | 扩展系统分区的方法、装置、存储介质和计算机设备 | |
CN111008034A (zh) | 一种补丁生成方法及装置 | |
CN113504918A (zh) | 设备树配置优化方法、装置、计算机设备和存储介质 | |
CN115248919A (zh) | 一种函数接口的调用方法、装置、电子设备及存储介质 | |
CN113849845B (zh) | 对插件文件打包的方法和装置、计算设备和可读存储介质 | |
CN111562929A (zh) | 补丁文件的生成方法、装置、设备及存储介质 | |
CN112732349A (zh) | 加载so库的方法、装置、电子设备和计算机可读存储介质 | |
CN109766084B (zh) | 支付应用的定制开发方法、装置、计算机设备和存储介质 | |
CN110018994B (zh) | 更新文件系统的方法、网络设备及计算机可读存储介质 | |
US8448244B1 (en) | Methods and systems for fused files comprising logic and content data | |
CN109002710B (zh) | 一种检测方法、装置及计算机可读存储介质 | |
CN114053719A (zh) | 资源存储和读取方法、装置、计算机设备和存储介质 | |
CN111400771A (zh) | 目标分区的校验方法及装置、存储介质、计算机设备 | |
CN113112270B (zh) | 基于区块链的数据组织方法 | |
CN114327548A (zh) | 软件升级方法及相关装置 | |
CN113590994A (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 |