CN110681153B - 游戏存档管理系统、方法、计算机设备及介质 - Google Patents
游戏存档管理系统、方法、计算机设备及介质 Download PDFInfo
- Publication number
- CN110681153B CN110681153B CN201910934037.4A CN201910934037A CN110681153B CN 110681153 B CN110681153 B CN 110681153B CN 201910934037 A CN201910934037 A CN 201910934037A CN 110681153 B CN110681153 B CN 110681153B
- Authority
- CN
- China
- Prior art keywords
- data
- game
- storage
- binary
- archiving
- 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.)
- Active
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/45—Controlling the progress of the video game
- A63F13/49—Saving the game status; Pausing or ending the game
-
- 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/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种游戏存档管理系统、方法及存取机制开发方法,所述系统包括:存档管理器以及protobuf协议序列化接口;存档管理器具有游戏程序调用接口,通过游戏程序调用接口接收游戏程序的存储指令,根据存储指令调用protobuf协议序列化接口,将游戏程序存储的结构化存档数据序列化为二进制存档数据,结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。本发明提供的方案可以对任何类型的单机游戏项目提供存档功能支持,减少重复开发,降低项目成本。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种游戏存档管理系统、方法及存取机制开发方法。
背景技术
游戏存档是指游戏保存时留下的文件,记录了游戏进度和各种数据,通过游戏存档,可以备份和恢复游戏的进度和各种数据。不同类型的游戏具有不同的数据结构,对数据的序列化及存储有不同的要求。
然而,目前缺少通用的游戏存档方案,通常游戏开发团队的特点是在一段相当长的开发周期内(大约在6个月-3年之间),只服务于一款游戏项目,其往往会把目标定位于针对当前项目的数据结构进行存档数据的开发,由于数据结构复杂多变,这个过程往往需要占用大量的开发时间,因此游戏开发团队一般不会考虑额外兼容其他类型游戏项目,导致同一个团队在开发不同游戏项目时,原有的存档系统难以直接复用,由于数据结构差异需要重新开发,造成成本浪费。
发明内容
基于此,有必要针对目前缺少通用的游戏存档方案的技术问题,提供一种游戏存档管理系统、方法、存取机制开发方法及存储介质。
一种游戏存档管理系统,所述系统包括:存档管理器以及protobuf协议序列化接口;所述存档管理器具有游戏程序调用接口,通过所述游戏程序调用接口接收游戏程序的存储指令,根据所述存储指令调用所述protobuf协议序列化接口,将游戏程序存储的结构化存档数据序列化为二进制存档数据,所述结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
在其中一个实施例中,所述存档管理器还通过所述游戏程序调用接口接收游戏程序的读取指令,根据所述读取指令调用所述protobuf协议序列化接口,将与所述读取指令对应的二进制存档数据反序列化为结构化存档数据,所述结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
在其中一个实施例中,所述系统还包括存储访问接口;所述存档管理器还获取与所述存储指令对应的存储方式信息,调用与所述存储方式信息对应的存储访问接口,通过所述存储访问接口将所述二进制存档数据存储至与所述存储方式信息对应的存储位置。
在其中一个实施例中,所述存档管理器还获取与所述读取指令对应的存储方式信息,调用与所述存储方式信息对应的存储访问接口,通过所述存储访问接口读取与所述存储方式信息对应的存储位置的二进制存档数据。
在其中一个实施例中,所述系统还包括加解密单元;所述存档管理器根据所述存储指令调用所述protobuf协议序列化接口,将游戏程序存储的结构化存档数据序列化为二进制存档数据后,调用所述加解密单元对所述二进制数据进行加密处理。
在其中一个实施例中,所述存档管理器调用与所述存储方式信息对应的所述存储访问接口,通过所述存储访问接口读取与所述存储方式信息对应的存储位置的二进制存档数据后,调用所述加解密单元对所述二进制存档数据进行解密处理。
在其中一个实施例中,所述系统还包括校验单元;所述存档管理器根据所述存储指令调用所述protobuf协议序列化接口,将游戏程序存储的结构化存档数据序列化为二进制存档数据后,调用所述校验单元生成所述二进制存档数据的校验码。
在其中一个实施例中,所述存档管理器调用与所述存储方式信息对应的所述存储访问接口,通过所述存储访问接口读取与所述存储方式信息对应的存储位置的二进制存档数据后,调用所述校验单元通过所述校验码对所述二进制存档数据进行校验。
在其中一个实施例中,所述存储访问接口包括本地存储访问接口和/或云端存储访问接口;所述本地存储访问接口包括Windows存储访问接口、Mac存储访问接口、Linux存储访问接口、Switch存储访问接口、PS4存储访问接口、XBOX存储访问接口中的至少一种;所述云端存储访问接口包括SteamWorks云存储访问接口、Switch云存储访问接口、私有云存储访问接口中的至少一种。
一种游戏存档存取机制开发方法,所述方法包括:
获取基于protobuf协议编写的protobuf协议定义文件,所述protobuf协议定义文件中定义了游戏数据结构;
调用代码生成工具,自动生成与所述protobuf协议定义文件对应的存档数据结构程序代码;
获取游戏程序代码中的存档数据访问代码,所述存档数据访问代码通过调用游戏存档管理系统与所述存档数据结构程序代码关联,所述游戏存档管理系统基于所述存档数据访问代码发出的存取指令,对所述存档数据结构程序代码对应的结构化存档数据进行存取处理。
一种游戏存档管理方法,所述方法包括:
接收存储指令;
根据protobuf协议定义文件定义的存档数据结构,将所述存储指令对应的待存储数据,存储为具有所述存档数据结构的结构化存档数据;
调用protobuf协议序列化接口,将所述结构化存档数据序列化为二进制存档数据;
将所述二进制存档数据进行存储。
在其中一个实施例中,接收存储指令之后,还包括:获取与所述存储指令对应的存储方式信息;将所述二进制存档数据进行存储,包括:调用与所述存储方式信息对应的存储访问接口,通过所述存储访问接口将所述二进制存档数据存储至与所述存储方式信息对应的存储位置。
在其中一个实施例中,所述方法还包括:
接收读取指令;
获取与所述读取指令对应的二进制存档数据;
调用protobuf协议序列化接口,将所述二进制存档数据反序列化为结构化存档数据,所述结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
在其中一个实施例中,获取与所述读取指令对应的二进制存档数据,包括:获取与所述读取指令对应的存储方式信息,并调用与所述存储方式信息对应的存储访问接口,通过所述存储访问接口读取与所述存储方式信息对应的存储位置的二进制存档数据。
在其中一个实施例中,将所述结构化存档数据序列化为二进制存档数据之后,将所述二进制存档数据进行存储之前,还包括:对所述二进制存档数据进行加密处理。
在其中一个实施例中,获取与所述读取指令对应的二进制存档数据之后,调用protobuf协议序列化接口,将所述二进制存档数据反序列化为结构化存档数据之前,还包括:对所述二进制存档数据进行解密处理。
在其中一个实施例中,将所述结构化存档数据序列化为二进制存档数据之后,将所述二进制存档数据进行存储之前,还包括:生成所述二进制存档数据的校验码;将所述二进制存档数据进行存储,包括:将所述二进制存档数据的校验码与所述二进制存档数据关联存储。
在其中一个实施例中,获取与所述读取指令对应的二进制存档数据之后,调用protobuf协议序列化接口,将所述二进制存档数据反序列化为结构化存档数据之前,还包括:获取与所述二进制存档数据关联的校验码,并通过所述校验码对所述二进制存档数据进行校验。
在其中一个实施例中,所述存档数据结构包括:存档索引、存档位、存档主结构和游戏数据结构;所述存档索引包含存档数据的索引信息,每个所述存档位对应一份存档数据,所述存档主结构包含存档数据对应的保存信息,所述游戏数据结构包含存档数据对应的游戏数据。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述游戏存档存取机制开发方法的步骤。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述游戏存档管理方法的步骤。
上述游戏存档管理系统、方法、存取机制开发方法及计算机可读存储介质,采用protobuf协议定义存档数据结构,不同类型的游戏项目可通过自定义的protobuf协议定义文件,自动生成对应的存档数据结构代码,以满足个性化的数据保存需求,使得游戏开发人员在开发过程中可以通过只修改protobuf协议定义文件来修改存档数据结构,而不需要对存档管理系统本身逻辑进行修改,从而缩短开发周期,降低开发成本。
附图说明
图1为一个实施例中游戏存档管理系统的结构框图;
图2为一个实施例中游戏存档管理系统的结构框图;
图3为一个实施例中游戏存档存取机制开发方法的流程示意图;
图4为一个实施例中游戏存档管理方法的流程示意图;
图5为一个实施例中游戏存档管理方法的流程示意图;
图6为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种游戏存档管理系统100,游戏系统200对游戏存档管理系统100进行功能调用。参照图1,该游戏存档管理系统100包括:存档管理器110以及protobuf协议序列化接口120;存档管理器110具有游戏程序调用接口,通过游戏程序调用接口接收游戏程序的存储指令,根据存储指令调用protobuf协议序列化接口120,将游戏程序存储的结构化存档数据序列化为二进制存档数据,结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
其中,protobuf是Protocol Buffers的缩写形式,是一种编程语言无关、平台无关、可扩展的结构化数据序列化机制。采用protobuf协议作为数据定义格式,使不同类型的游戏项目可以根据不同需求灵活定制,protobuf具有完善的工具链支持,支持多种编程语言代码自动生成,不同的游戏项目可通过自定义的protobuf协议定义文件310,使用代码生成工具320自动生成对应的存档数据结构330,以满足个性化的数据保存需求,使开发人员无需为不同的游戏项目编写不同的存档数据结构代码及存档管理代码,有效解决不同游戏的数据结构差异导致的开发效率问题。
上述实施例中,游戏存档管理系统是独立的功能模块,不会对游戏逻辑产生调用、依赖或关联,游戏系统可以通过存档管理器来对存档管理系统进行功能调用,但是存档管理系统不会调用游戏系统的任何模块或逻辑,这样的设计使得存档管理系统一次性实现后,可以对任何类型的单机游戏提供存档功能支持。现有游戏存档管理系统大多作为游戏系统中高度耦合的子系统,无法脱离游戏系统单独存在,每一款游戏项目都要专门开发存档管理系统,相对于现有游戏存档管理系统,上述实施例的游戏存档管理系统可以适用于任何类型的单机游戏,减少重复开发,降低项目成本。
在一个实施例中,存档管理器110还通过游戏程序调用接口接收游戏程序的读取指令,根据读取指令调用protobuf协议序列化接口120,将与读取指令对应的二进制存档数据反序列化为结构化存档数据,结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
存储游戏数据时,存档管理器调用protobuf协议序列化接口,将结构化存档数据序列化为二进制存档数据,便于存储。读取游戏数据时,存档管理器调用protobuf协议序列化接口,将二进制存档数据反序列化为结构化存档数据,便于游戏直接访问。
如图2所示,在一个实施例中,游戏存档管理系统100还包括存储访问接口;存档管理器110还获取与存储指令对应的存储方式信息,调用与存储方式信息对应的存储访问接口,通过存储访问接口将二进制存档数据存储至与存储方式信息对应的存储位置。在一个实施例中,存档管理器110还获取与读取指令对应的存储方式信息,调用与存储方式信息对应的存储访问接口,通过存储访问接口读取与存储方式信息对应的存储位置的二进制存档数据。
其中,存储访问接口包括本地存储访问接口131和/或云端存储访问接口132;本地存储访问接口131包括Windows存储访问单元1311、Mac存储访问单元1312、Linux存储访问单元1313、Switch存储访问单元1314、PS4存储访问单元1315、XBOX存储访问单元1316的访问接口中的至少一种;云端存储访问接口132包括SteamWorks云存储访问单元1321、Switch云存储访问单元1322、私有云存储访问单元1323的访问接口中的至少一种。
上述实施例中,本地存储访问接口可以为多种硬件平台提供统一的访问支持,通过接口化的设计,隐藏不同平台(Windows、Mac、Linux、Switch、PS4、XBOX等)对文件访问的差异性,使开发人员无需关注不同硬件平台的技术差异,用统一的接口对存档数据进行读写支持。云端存储访问接口可以为多种云平台提供统一的访问支持,通过云存储可以让存档数据在云端备份保存,当本地出现无法恢复故障时,可以通过云存储进行存档数据恢复。在存档数据结构统一序列化为二进制数据,且文件访问也统一为一致接口的基础上,可以方便的对存档数据进行统一的加密、校验及容错恢复处理。
如图2所示,在一个实施例中,游戏存档管理系统100还包括加解密单元140;存档管理器110根据存储指令调用protobuf协议序列化接口120,将游戏程序存储的结构化存档数据序列化为二进制存档数据后,调用加解密单元140对二进制数据进行加密处理。在一个实施例中,存档管理器110调用与存储方式信息对应的存储访问接口,通过存储访问接口读取与存储方式信息对应的存储位置的二进制存档数据后,调用加解密单元140对二进制存档数据进行解密处理。
上述实施例中,在存储游戏数据时,对二进制存档数据进行加密,在读取游戏数据时,对二进制存档数据进行解密,防止存档被破解或篡改,提高存档数据的安全性。
如图2所示,在一个实施例中,游戏存档管理系统100还包括校验单元150;存档管理器110根据存储指令调用protobuf协议序列化接口,将游戏程序存储的结构化存档数据序列化为二进制存档数据后,调用校验单元150生成二进制存档数据的校验码。在一个实施例中,存档管理器110调用与存储方式信息对应的存储访问接口,通过存储访问接口读取与存储方式信息对应的存储位置的二进制存档数据后,调用校验单元150通过校验码对二进制存档数据进行校验。
上述实施例中,在存储游戏数据时,生成二进制存档数据的校验码,在读取游戏数据时,对二进制存档数据的校验码进行校验,防止存档损坏,提高存档数据的可靠性。
如图3所示,在一个实施例中,提供了一种游戏存档存取机制开发方法。参照图3,该游戏存档存取机制开发方法具体包括如下步骤S302至步骤S306。
S302,获取基于protobuf协议编写的protobuf协议定义文件,protobuf协议定义文件中定义了游戏数据结构。
具体地,开发人员可以根据游戏项目的需要使用任意文本编辑工具编写protobuf协议定义文件,用以定义游戏数据结构。例如,游戏A的角色模块需要保存等级、经验、关卡进度,游戏B的角色模块需要保存等级、经验、金币、职业,游戏B的职业模块需要保存职业类型、职业等级,游戏C的角色模块需要保存等级、分数,游戏C的道具模块需要保存已有道具、道具数量,开发人员可以根据上述不同游戏项目的不同功能模块的保存需求,编写相应的protobuf协议定义文件。
S304,调用代码生成工具,自动生成与protobuf协议定义文件对应的存档数据结构程序代码。
protobuf具有完善的工具链支持,支持多种编程语言代码自动生成,protobuf协议定义文件可以通过代码生成工具自动生成对应的存档数据结构代码,使开发人员无需在编写游戏程序代码时定义存档数据结构。
S306,获取游戏程序代码中的存档数据访问代码,存档数据访问代码通过调用游戏存档管理系统与存档数据结构程序代码关联,游戏存档管理系统基于存档数据访问代码发出的存取指令,对存档数据结构程序代码对应的结构化存档数据进行存取处理。
其中,游戏存档管理系统可以是上述各个实施例的游戏存档管理系统。游戏存档管理系统是独立的功能模块,不会对游戏逻辑产生调用、依赖或关联,游戏系统可以对存档管理系统进行功能调用,但是存档管理系统不会调用游戏系统的任何模块或逻辑,这样的设计使得存档管理系统一次性实现后,可以对任何类型的单机游戏提供存档功能支持。
上述游戏存档存取机制开发方法,采用protobuf协议定义存档数据结构,不同类型的游戏项目可通过自定义的protobuf协议定义文件,自动生成对应的存档数据结构代码,以满足个性化的数据保存需求,使得游戏开发人员在开发过程中可以通过只修改protobuf协议定义文件来修改存档数据结构,而不需要对存档管理系统本身逻辑进行修改,从而缩短开发周期,降低开发成本。
如图4所示,在一个实施例中,提供了一种游戏存档管理方法。该方法可以应用于上述图1中的游戏存档管理系统100。参照图4,该游戏存档管理方法具体包括如下步骤S402至步骤S408。
S402,接收存储指令。
存储指令可以由游戏用户在游戏过程中根据需求发出,也可以由游戏程序预先设置为每隔一段时间发出,此处不做限定。
S404,根据protobuf协议定义文件定义的存档数据结构,将存储指令对应的待存储数据,存储为具有存档数据结构的结构化存档数据。
protobuf协议定义文件由开发人员根据游戏项目的数据保存需求进行编写,并通过代码生成工具自动生成对应的存档数据结构代码,从而确定存档数据结构,游戏运行时的游戏数据按照该存档数据结构保存于游戏内存中。
在一个实施例中,存档数据结构包括:存档索引、存档位、存档主结构和游戏数据结构。存档索引包含存档数据的索引信息,利用索引可以快速检索存档数据,而无需读取全部存档数据,提升存取效率。存档位用于维持存档数据,每个存档位对应一份存档数据。存档主结构包含存档数据对应的保存信息,如保存时间、路径等基础信息。游戏数据结构包含存档数据对应的游戏数据,如等级、经验等游戏进度数据。
S406,调用protobuf协议序列化接口,将结构化存档数据序列化为二进制存档数据。
protobuf具有很高的序列化性能,可以直接序列化输出二进制数据,输出数据容量小,便于存储。
S408,将二进制存档数据进行存储。
具体的,可以将二进制存档数据存储到本地或云端,或者同时存储到本地和云端,以便下次读取存档数据继续游戏。
上述游戏存档管理方法,采用protobuf协议定义存档数据结构,不同类型的游戏项目可通过自定义的protobuf协议定义文件,自动生成对应的存档数据结构代码,以满足个性化的数据保存需求,使得游戏开发人员在开发过程中可以通过只修改protobuf协议定义文件来修改存档数据结构,而不需要对存档管理系统本身逻辑进行修改,从而缩短开发周期,降低开发成本。
在一个实施例中,接收存储指令之后,还包括步骤:获取与存储指令对应的存储方式信息;将二进制存档数据进行存储,具体包括以下步骤:调用与存储方式信息对应的存储访问接口,通过存储访问接口将二进制存档数据存储至与存储方式信息对应的存储位置。
存储方式信息可以包括本地存储方式和云存储方式,存储访问接口可以包括本地存储访问接口和云端存储访问接口,本地存储访问接口可以包括Windows、Mac、Linux、Switch、PS4、XBOX或其它可能的平台存储访问接口;云端存储访问接口可以包括SteamWorks、Switch、私有云或其它可能的云存储访问接口。
上述实施例中,本地存储访问接口可以为多种硬件平台提供统一的访问支持,通过接口化的设计,隐藏不同平台(Windows、Mac、Linux、Switch、PS4、XBOX等)对文件访问的差异性,使开发人员无需关注不同硬件平台的技术差异,用统一的接口对存档数据进行读写支持。云端存储访问接口可以为多种云平台提供统一的访问支持,通过云存储可以让存档数据在云端备份保存,当本地出现无法恢复故障时,可以通过云存储进行存档数据恢复。
在一个实施例中,游戏存档管理方法还包括以下步骤:接收读取指令;获取与读取指令对应的二进制存档数据;调用protobuf协议序列化接口,将二进制存档数据反序列化为结构化存档数据,结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
其中,读取指令可以由游戏用户在游戏过程中根据需求发出,也可以由游戏程序预先设置为游戏启动时发出,此处不做限定。读取游戏数据时,调用protobuf协议序列化接口,将二进制存档数据反序列化为结构化存档数据,便于游戏直接访问。
在一个实施例中,获取与读取指令对应的二进制存档数据,具体包括以下步骤:获取与读取指令对应的存储方式信息,并调用与存储方式信息对应的存储访问接口,通过存储访问接口读取与存储方式信息对应的存储位置的二进制存档数据。
在一个实施例中,将结构化存档数据序列化为二进制存档数据之后,将二进制存档数据进行存储之前,还包括步骤:对二进制存档数据进行加密处理。
在一个实施例中,获取与读取指令对应的二进制存档数据之后,调用protobuf协议序列化接口,将二进制存档数据反序列化为结构化存档数据之前,还包括步骤:对二进制存档数据进行解密处理。
上述实施例中,在存储游戏数据时,对二进制存档数据进行加密,在读取游戏数据时,对二进制存档数据进行解密,可以防止存档被破解或篡改,提高存档数据的安全性。可以采用任何可能的方式对二进制存档数据进行加密和解密,如AES(高级加密标准)算法,此处不做限定。
在一个实施例中,将结构化存档数据序列化为二进制存档数据之后,将二进制存档数据进行存储之前,还包括步骤:生成二进制存档数据的校验码;将二进制存档数据进行存储,具体包括步骤:将二进制存档数据的校验码与二进制存档数据关联存储。
在一个实施例中,获取与读取指令对应的二进制存档数据之后,调用protobuf协议序列化接口,将二进制存档数据反序列化为结构化存档数据之前,还包括步骤:获取与二进制存档数据关联的校验码,并通过校验码对二进制存档数据进行校验。
上述实施例中,在存储游戏数据时,生成二进制存档数据的校验码,在读取游戏数据时,对二进制存档数据的校验码进行校验,可以防止存档损坏,提高存档数据的可靠性。可以采用任何可能的方式对二进制存档数据进行校验,如CRC(循环冗余校验)算法,此处不做限定。
在一个实施例中,存储二进制存档数据时,包括:将二进制存档数据写入“临时文件”缓存,写入成功后覆盖“主存档”数据,同时建立一份“写副本”;若写入失败,返回将二进制存档数据写入“临时文件”缓存步骤进行再次写入,避免临时不可写导致的写入失败;若存储空间不足,生成错误提示信息,提醒用户清理空间。
在一个实施例中,读取二进制存档数据时,包括:从“主存档”读取二进制存档数据,若读取失败,从“写副本”读取二进制存档数据,“写副本”为最后一次成功写入的数据,相当于最新备份;若“写副本”读取成功,通过“写副本”恢复“主存档”;若“写副本”读取失败,读取“读副本”,“读副本”为最后一次成功读取的数据,存档数据每次读取成功会创建一份“读副本”。
上述实施例中,在存储和读取游戏数据时加入了容错及恢复机制,可以有效避免存档数据的丢失,保证存档数据的有效性。
如图5所示,在一个实施例中,提供了一种游戏存档管理方法。参照图5,该游戏存档管理方法具体包括如下步骤S502至步骤S524。
S502,接收存储指令。
S504,获取与存储指令对应的存储方式信息。
S506,根据protobuf协议定义文件定义的存档数据结构,将存储指令对应的待存储数据,存储为具有存档数据结构的结构化存档数据。
S508,调用protobuf协议序列化接口,将结构化存档数据序列化为二进制存档数据。
S510,对二进制存档数据进行加密处理。
S512,生成二进制存档数据的校验码。
S514,调用与存储方式信息对应的存储访问接口,通过存储访问接口将二进制存档数据及其校验码关联存储至与存储方式信息对应的存储位置。
S516,接收读取指令。
S518,获取与读取指令对应的存储方式信息,并调用与存储方式信息对应的存储访问接口,通过存储访问接口读取与存储方式信息对应的存储位置的二进制存档数据及其校验码。
S520,通过校验码对二进制存档数据进行校验。
S522,对二进制存档数据进行解密处理。
S524,调用protobuf协议序列化接口,将二进制存档数据反序列化为结构化存档数据,结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
对于该实施例各步骤的具体限定可以参考上文实施例,此处不再赘述。该实施例中,将游戏存档的数据结构定义、多平台访问支持、加密、校验等特性,采用统一的架构进行封装,形成一套通用的游戏存档管理方案,开发人员无需了解内部实现细节,通过简单的接口就可以在游戏中集成功能完备的存档管理机制。
应该理解的是,虽然图3-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,本发明提供的游戏存档管理系统可以实现为一种计算机程序的形式,计算机程序可在如图6所示的计算机设备上运行。图6示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是运行图1中的游戏系统200的终端,终端具体可以是手机、台式电脑、平板电脑、笔记本电脑、XBOX游戏机、PS4游戏机等可以运行游戏的设备。如图6所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现游戏存档存取机制开发方法或游戏存档管理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行游戏存档存取机制开发方法或游戏存档管理方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述游戏存档存取机制开发方法的步骤。此处游戏存档存取机制开发方法的步骤可以是上述各个实施例的游戏存档存取机制开发方法中的步骤。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述游戏存档管理方法的步骤。此处游戏存档管理方法的步骤可以是上述各个实施例的游戏存档管理方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述游戏存档存取机制开发方法的步骤。此处游戏存档存取机制开发方法的步骤可以是上述各个实施例的游戏存档存取机制开发方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述游戏存档管理方法的步骤。此处游戏存档管理方法的步骤可以是上述各个实施例的游戏存档管理方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种游戏存档管理系统,独立于游戏系统,所述游戏存档管理系统包括:存档管理器以及protobuf协议序列化接口;所述游戏系统通过存档管理器对游戏存档管理系统进行功能调用,游戏存档管理系统不会调用游戏系统的任何模块或逻辑;
所述存档管理器具有游戏程序调用接口,通过所述游戏程序调用接口接收游戏程序的存储指令,根据所述存储指令调用所述protobuf协议序列化接口,将游戏程序存储的结构化存档数据序列化为二进制存档数据,所述结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
2.根据权利要求1所述的系统,其特征在于,所述存档管理器还通过所述游戏程序调用接口接收游戏程序的读取指令,根据所述读取指令调用所述protobuf协议序列化接口,将与所述读取指令对应的二进制存档数据反序列化为结构化存档数据,所述结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
3.根据权利要求2所述的系统,其特征在于,还包括存储访问接口;
所述存档管理器还获取与所述存储指令对应的存储方式信息,调用与所述存储方式信息对应的存储访问接口,通过所述存储访问接口将所述二进制存档数据存储至与所述存储方式信息对应的存储位置;和/或,
所述存档管理器还获取与所述读取指令对应的存储方式信息,调用与所述存储方式信息对应的存储访问接口,通过所述存储访问接口读取与所述存储方式信息对应的存储位置的二进制存档数据。
4.根据权利要求3所述的系统,其特征在于,还包括加解密单元;
所述存档管理器根据所述存储指令调用所述protobuf协议序列化接口,将游戏程序存储的结构化存档数据序列化为二进制存档数据后,调用所述加解密单元对所述二进制数据进行加密处理;和/或,
所述存档管理器调用与所述存储方式信息对应的所述存储访问接口,通过所述存储访问接口读取与所述存储方式信息对应的存储位置的二进制存档数据后,调用所述加解密单元对所述二进制存档数据进行解密处理。
5.根据权利要求3所述的系统,其特征在于,还包括校验单元;
所述存档管理器根据所述存储指令调用所述protobuf协议序列化接口,将游戏程序存储的结构化存档数据序列化为二进制存档数据后,调用所述校验单元生成所述二进制存档数据的校验码;和/或,
所述存档管理器调用与所述存储方式信息对应的所述存储访问接口,通过所述存储访问接口读取与所述存储方式信息对应的存储位置的二进制存档数据后,调用所述校验单元通过所述校验码对所述二进制存档数据进行校验。
6.一种游戏存档管理方法,所述方法应用于游戏存档管理系统,所述游戏存档管理系统独立于游戏系统,所述游戏系统对所述游戏存档管理系统进行功能调用,所述游戏存档管理系统不会调用所述游戏系统的任何模块或逻辑;所述方法包括:
接收存储指令;
根据protobuf协议定义文件定义的存档数据结构,将所述存储指令对应的待存储数据,存储为具有所述存档数据结构的结构化存档数据;
调用protobuf协议序列化接口,将所述结构化存档数据序列化为二进制存档数据;
将所述二进制存档数据进行存储。
7.根据权利要求6所述的方法,其特征在于,接收存储指令之后,还包括:获取与所述存储指令对应的存储方式信息;
将所述二进制存档数据进行存储,包括:调用与所述存储方式信息对应的存储访问接口,通过所述存储访问接口将所述二进制存档数据存储至与所述存储方式信息对应的存储位置。
8.根据权利要求6所述的方法,其特征在于,还包括:
接收读取指令;
获取与所述读取指令对应的二进制存档数据;
调用protobuf协议序列化接口,将所述二进制存档数据反序列化为结构化存档数据,所述结构化存档数据具有根据protobuf协议定义文件定义的存档数据结构。
9.根据权利要求8所述的方法,其特征在于,获取与所述读取指令对应的二进制存档数据,包括:
获取与所述读取指令对应的存储方式信息,并调用与所述存储方式信息对应的存储访问接口,通过所述存储访问接口读取与所述存储方式信息对应的存储位置的二进制存档数据。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求6至9中任一项所述的方法的步骤。
11.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求6至9中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910934037.4A CN110681153B (zh) | 2019-09-29 | 2019-09-29 | 游戏存档管理系统、方法、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910934037.4A CN110681153B (zh) | 2019-09-29 | 2019-09-29 | 游戏存档管理系统、方法、计算机设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110681153A CN110681153A (zh) | 2020-01-14 |
CN110681153B true CN110681153B (zh) | 2022-03-18 |
Family
ID=69110921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910934037.4A Active CN110681153B (zh) | 2019-09-29 | 2019-09-29 | 游戏存档管理系统、方法、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110681153B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101743043A (zh) * | 2008-06-17 | 2010-06-16 | 索尼计算机娱乐公司 | 游戏装置 |
CN103970517A (zh) * | 2013-01-30 | 2014-08-06 | 中兴通讯股份有限公司 | Iptv游戏的接入处理方法及装置 |
CN106850650A (zh) * | 2017-02-21 | 2017-06-13 | 网易(杭州)网络有限公司 | 用于游戏客户端访问数据的方法及客户端游戏系统 |
CN109289196A (zh) * | 2018-11-19 | 2019-02-01 | 杭州电魂网络科技股份有限公司 | 游戏存档处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10404566B2 (en) * | 2016-03-08 | 2019-09-03 | Netflix, Inc. | Online techniques for parameter mean and variance estimation in dynamic regression models |
-
2019
- 2019-09-29 CN CN201910934037.4A patent/CN110681153B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101743043A (zh) * | 2008-06-17 | 2010-06-16 | 索尼计算机娱乐公司 | 游戏装置 |
CN103970517A (zh) * | 2013-01-30 | 2014-08-06 | 中兴通讯股份有限公司 | Iptv游戏的接入处理方法及装置 |
CN106850650A (zh) * | 2017-02-21 | 2017-06-13 | 网易(杭州)网络有限公司 | 用于游戏客户端访问数据的方法及客户端游戏系统 |
CN109289196A (zh) * | 2018-11-19 | 2019-02-01 | 杭州电魂网络科技股份有限公司 | 游戏存档处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110681153A (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4901095B2 (ja) | 不揮発性ストレージにカスタム・ソフトウェア・イメージ・アップデートを適用するフェイルセーフな方法 | |
JP6568947B2 (ja) | 車載制御装置、プログラム更新システム、及び、プログラム更新ソフトウェア | |
CN102934114B (zh) | 用于文件系统的检查点 | |
KR101636870B1 (ko) | 최소 부트 이미지의 생성 방법 및 장치 | |
US9262283B2 (en) | Method for reading kernel log upon kernel panic in operating system | |
CN106843978B (zh) | 一种sdk接入方法及系统 | |
CN105164657A (zh) | 程序数据至非易失性存储器的选择性备份 | |
CN109598107B (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN103218227B (zh) | 一种安卓设备内置硬盘上兼容多种文件系统的方法及装置 | |
CN110597552B (zh) | 项目持续集成流水线的配置方法、装置、设备及存储介质 | |
CN103365766B (zh) | 一种文件完整性保护的方法和系统 | |
CN111258666A (zh) | 计算机文件的读取方法、装置、计算机系统及存储介质 | |
CN110704392A (zh) | 区块链网络的升级方法及装置、存储介质、电子设备 | |
CN116522368A (zh) | 一种物联网设备固件解密解析方法、电子设备、介质 | |
CN112667246A (zh) | 应用功能扩展的方法、装置及电子设备 | |
CN110826099A (zh) | 适用于嵌入式实时操作系统的安全存储方法及系统 | |
CN113867768A (zh) | 操作系统处理方法、装置、电子设备及存储介质 | |
CN113312205B (zh) | 数据校验方法、装置、存储介质和计算机设备 | |
CN111090701B (zh) | 业务请求处理方法、装置、可读存储介质和计算机设备 | |
CN110681153B (zh) | 游戏存档管理系统、方法、计算机设备及介质 | |
CN114792016A (zh) | 一种处理方法及电子设备 | |
CN115017543A (zh) | 闪存数据的读取方法、装置、计算机设备和存储介质 | |
JP5972455B2 (ja) | 情報を削除する方法 | |
CN114968312B (zh) | 用于变更智能卡cap文件的方法、装置及系统 | |
US20240152387A1 (en) | Method, apparatus, electronic device and storage medium for application launch |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |